Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

escribir en textbox en cualquier linea por codigo

Estas en el tema de escribir en textbox en cualquier linea por codigo en el foro de Visual Basic clásico en Foros del Web. hola, a todos. disculpe si alguien sabe, como escribir o espesar a escribir un texto a partir de cualquier línea por medio de un richtextbox ...
  #1 (permalink)  
Antiguo 14/09/2009, 14:05
 
Fecha de Ingreso: junio-2008
Mensajes: 35
Antigüedad: 15 años, 10 meses
Puntos: 0
escribir en textbox en cualquier linea por codigo

hola, a todos. disculpe si alguien sabe, como escribir o espesar a escribir un texto a partir de cualquier línea por medio de un richtextbox o un textbox, por ejemplo: quiero empezar a escribir a partir de la línea 4 luego escribir otro texto a partir de la línea 7, es decir que me permita escoger la libertad de yo poder escribir (por código claro) a partir de cualquier línea, para ser mas especifico algo así como el gotoxy del C/C++ o poder colocar el texto q escriba en cualquier línea del richtextbox o el textbox. gracias
  #2 (permalink)  
Antiguo 14/09/2009, 15:54
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: escribir en textbox en cualquier linea por codigo

Aquí se muestra el modo de seleccionar la línea que quieras siempre que existan líneas suficientes.
http://www.forosdelweb.com/f69/richt...-linea-390705/

Hay varios ejemplos. Yo lo comento suponiendo que usas el que yo puse.
Si quieres escribir desde el principio de la línea buscada solo tienes que poner sellength a 0 despues de seleccionar la línea deseada o quitar la línea "TextBox.SelLength = Posicion - Inicio - 1" de la sub.

Si quieres escribir al final pues pones el SelStart=SelStart+Sellength (+1 o -1 si es necesario, no lo he probado).

Si quieres sobreescribir lo que haya en la línea pues la dejas seleccionada y escribes encima. Si escribes por código pues la troceas y reemplazas con tu texto usando left() y right().

Si quieres añadir líneas pues insertas saltos de línea o modificas si se puede la sub para que lo haga.

Que se dé bién
  #3 (permalink)  
Antiguo 14/09/2009, 20:07
 
Fecha de Ingreso: junio-2008
Mensajes: 35
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: escribir en textbox en cualquier linea por codigo

Hola si entendí lo q me distes pero el código se me hace un poco complejo en entender (disculpa la ignorancia) vamos a ver si lo pongo con un ejemplito mas especifico, es algo así lo que yo busco
gotoxy(x,y)
gotoxy(5,10):TextBox.Text = "hola como estas"

El 5 representa el eje de las X y el 10 el eje de las Y esto debería mostrarme cuando corro el programa la cajita de texto a 5 espacios abajo y a 10 pasos a la derecha el texto que escribo. algo así es lo que quiero, claro en el Visual es mas complejo pero es un ejemplo, la función gotoxy es de C/C++ y para colocar ubicar el texto mas bonito y todo ya que no hay botones y solo una consola, el algo así como darle estética al programa.

claro todo es por codigo tanto escribir el texto como insertar las lineas, solo quiero a ver si esto se puede hacer en visual. gracias
  #4 (permalink)  
Antiguo 14/09/2009, 20:10
 
Fecha de Ingreso: junio-2008
Mensajes: 35
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: escribir en textbox en cualquier linea por codigo

claro disculpe y si se puede, me ayudan a ver como lo hago
  #5 (permalink)  
Antiguo 15/09/2009, 03:30
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: escribir en textbox en cualquier linea por codigo

Ahora que has puesto el ejemplo del GoToXY empiezo a recordar haberlo usado hace tiempo.
La cosa es que en VB creo que no existe.
Posiblemente con sendmessage se pueda hacer mejor, pero como no se usarlo te he creado una sub lo mejor y más simple que he sabido.

Para usarla simplemente la llamas con una línea así:

EscribeXY Columna, Linea, TextoAInsertar, NombreDelTextBox
Donde:
Columna y Linea pueden ser números o variables numéricas con valor 1 o superior
TextoAInsertar puede ser un texto entre comillas o una variable de cadena.
NombreDelTextBox debe ser el nombre del control textbox donde quieres escribir. De ese modo puedes usar la sub para escribir en cualquier textbox del programa.

Ejm:

EscribeXY 5, 10, "Esto se escribe", Text1

Espero que te aclares.

Private Sub EscribeXY(ByVal XColumna As Double, ByVal YLinea As Double, ByVal TextoAInsertar As String, TextBox As TextBox)
Dim Lineas() As String
If XColumna < 1 Or YLinea < 1 Then Exit Sub
On Local Error Resume Next
' aqui usamos 0 como primer elemento
' asi que restamos 1 a los valores X e Y
XColumna = XColumna - 1
YLinea = YLinea - 1
'creamos un array de lineas
Lineas = Split(TextBox.Text, vbCrLf)
' si no hay suficientes lineas las creamos
If YLinea > UBound(Lineas) Then ReDim Preserve Lineas(YLinea)
' si no se puede ir a la posicion X deseada se añaden espacios
If Len(Lineas(YLinea)) < XColumna Then Lineas(YLinea) = Lineas(YLinea) & Space(XColumna - Len(Lineas(YLinea)))
' incrustamos el texto en la línea marcada
Lineas(YLinea) = Left$(Lineas(YLinea), XColumna) & TextoAInsertar & Right$(Lineas(YLinea), Len(Lineas(YLinea)) - XColumna)
' y pasamos de nuevo las líneas al textbox
TextBox.Text = Join(Lineas, vbCrLf)

' PODEMOS ACABAR AQUI

' O PODEMOS MOVER EL CURSOR PARA QUE SE VEA
' EL CAMBIO SI LA LÍNEA NO ESTABA A LA VISTA
Dim F As Double
Dim Posicion As Double
For F = 0 To YLinea - 1
Posicion = Posicion + Len(Lineas(F)) + 2
Next F
TextBox.SelStart = Posicion + XColumna + Len(TextoAInsertar)
'---------------

On Local Error GoTo 0
End Sub

Creo que funciona bien. De momento no he encontrado fallos.

Saludos

PD: La he editado para reducirla y poner comentarios

PD2: Para que todo funcione bién hay que configurar el TextBox para...

Ser multilínea:
Text1.Multiline=True

Mostrar al menos la barra de desplazamiento horizontal para que no se partan las líneas para ajustarse al tamaño del TextBox:
Text1.ScrollBars=1
o las dos barras de desplazamiento:
Text1.ScrollBars=3
de otro modo parecerá que hay más líneas de las que realmente hay en el texto.

Y para que si seleccionas algo, no se deje de ver la selección cuando el foco pase a otro control:
Text1.HideSelection=False

Última edición por pkj; 15/09/2009 a las 05:13
  #6 (permalink)  
Antiguo 15/09/2009, 15:18
 
Fecha de Ingreso: junio-2008
Mensajes: 35
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: escribir en textbox en cualquier linea por codigo

Eres un genio, e tratado de ver si era posible que alguien pudiera hacer ese código y lo has hecho muchas gracias te agradezco mucho todo, funciona tal cual yo quiero. si necesitas ayuda en ciertas cosas de programación y eso estoy a la orden, muchas gracias mi correo es [email protected]. De verdad gracias.
  #7 (permalink)  
Antiguo 16/09/2009, 17:57
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: escribir en textbox en cualquier linea por codigo

Me alegro de que te haya servido y te agradezco el halago y el ofrecimiento.
Si necesitas algo más de ese estilo (pequeño y secillito de hacer) aquí estamos.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:16.