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

problema con textbox multiline

Estas en el tema de problema con textbox multiline en el foro de Visual Basic clásico en Foros del Web. como podria hacer para que en un textbox multiline al pulsar el intro no me pulsara el boton por defecto del formulario, sino que me ...
  #1 (permalink)  
Antiguo 20/12/2005, 03:22
 
Fecha de Ingreso: septiembre-2004
Mensajes: 171
Antigüedad: 19 años, 7 meses
Puntos: 0
problema con textbox multiline

como podria hacer para que en un textbox multiline al pulsar el intro no me pulsara el boton por defecto del formulario, sino que me metiera un salto de linea dentro del textbox pudiendo seguir escribiendo en el??
haber si alguien me puede ayudar que es urgente.
  #2 (permalink)  
Antiguo 20/12/2005, 11:37
Avatar de roniarg  
Fecha de Ingreso: octubre-2005
Mensajes: 21
Antigüedad: 18 años, 6 meses
Puntos: 0
no se porque te pasa el foco al presionar enter,debes tener una funcion haciendote eso.
  #3 (permalink)  
Antiguo 20/12/2005, 12:54
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
no se porque te pasa el foco al presionar enter,debes tener una funcion haciendote eso.
Yo me imagino que tiene la propiedad Default de su boton en True... y por eso cuando da Enter ejecuta el evento, sería cosa de que quite el boton de Default para corregir ese detalle
  #4 (permalink)  
Antiguo 20/12/2005, 15:07
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
revisa tus opciones de keydown problemente tenes algo programado por alli que te esta haciendo ese efecto..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #5 (permalink)  
Antiguo 21/12/2005, 02:16
 
Fecha de Ingreso: septiembre-2004
Mensajes: 171
Antigüedad: 19 años, 7 meses
Puntos: 0
Cita:
Iniciado por RootK
Yo me imagino que tiene la propiedad Default de su boton en True... y por eso cuando da Enter ejecuta el evento, sería cosa de que quite el boton de Default para corregir ese detalle
Exactamente es eso lo que pasa, pero solo quiero que el intro cambie de linea cuando este dentro del control textbox en concreto, cuando este fuera lo que quiero es que el intro corresponda al boton que tengo por defecto. Se puede hacer esto?
  #6 (permalink)  
Antiguo 21/12/2005, 02:46
 
Fecha de Ingreso: septiembre-2004
Mensajes: 171
Antigüedad: 19 años, 7 meses
Puntos: 0
ya esta me disteis una idea, lo que hice fue cuando el txt multiline coge el foco pongo la propiedad del boton default a false, y cuando pierde el foco la pongo a true y asi ya me funcionan las dos cosas como queria.

Gracias
  #7 (permalink)  
Antiguo 21/12/2005, 04:59
 
Fecha de Ingreso: septiembre-2004
Mensajes: 171
Antigüedad: 19 años, 7 meses
Puntos: 0
ahora el unico problema que tengo es que necesito saber cuantas lineas tiene el textbox en cuestion dcespues de escribirlo, para saber cuanto espacio tengo que dejar para el a la hora de imprimirlo.
hay alguna funcion que me haga esto?
a mi lo que se me ocurrio es que cada vez que teclreara el intro dentro del textbox aumentara una variable de tipo entero que me guardaria las lineas, pero como hago eso?
  #8 (permalink)  
Antiguo 21/12/2005, 10:52
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
para saber cuanto espacio tengo que dejar para el a la hora de imprimirlo.
hay alguna funcion que me haga esto?
Puedes implementar la funcion que te permita saber eso.. por ejemplo.. detectas el CHR 10 para saber si existe un enter en el texto e irlo incrementando.. te hago un ejemplo:

Cita:
Dim iLen As Integer
Dim sWord As String
Dim iCountLines As Integer

iLen = Len(Text1.Text)

For i = 1 To iLen - 1
sWord = Mid(Text1.Text, i, 1)
If (Asc(sWord) = 10) Then
iCountLines = iCountLines + 1
End If
Next i

MsgBox ("Hay " & iCountLines & " lineas")
ahora:
Cita:
a mi lo que se me ocurrio es que cada vez que teclreara el intro dentro del textbox aumentara una variable de tipo entero que me guardaria las lineas
En ese caso no sería tan bueno incrementar una variable, porque que pasa si el usuario borra el texto... o selecciona todo y lo borra... es mejor checar el caracter "enter" (10)

Espero que te sirva
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #9 (permalink)  
Antiguo 22/12/2005, 03:42
Avatar de roniarg  
Fecha de Ingreso: octubre-2005
Mensajes: 21
Antigüedad: 18 años, 6 meses
Puntos: 0
aver si te sirve esta funcion que hice con algo parecido a lo que pedis cualquier cosa preguntame.
'//esto ponelo en un modulo/////////////////////////////////
Public Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal

wParam As Long, ByVal lParam As Long) As Long
'///////////////////////////////////////////////////////////


'///////////////////////////////////////////////////////////
Public Sub Saber_Fila(Index As Integer, KeyAscii As Integer, Text2 As Object, Text3 As Object)
'/// si sube de fila ///
If Index <= fila Then
'/// que no baje de linea y le ponemos un tamaño max de letras ///
If KeyAscii = 13 Then KeyAscii = 0
Text2(Index).MaxLength = 40
Exit Sub
Else
'/// si baja de linea///
'/// si esta a punto de acabar la ficha le damos el foco al sig control ///
If (Text2(Index).Height + Text2(Index).Top) >= (SSTab1.Height - 800) Then
Text3(Index).SetFocus
End If
'/// esta es una funcion con api para controlar en que linea del txt estamos ///
Dim nLineas As Long
'/// con SendMessageLong llamamos al modulo ///
nLineas = SendMessageLong(Text2(Index).hWnd, &HBA, 0&, 0&)
'/// si es la fila actual es igual que la anterior le cortamos el txt ///
If i = nLineas Then
Text2(Index).Height = Text2(Index).Height - 200
End If
i = nLineas - 1
'/// si presiona enter agrandamos el txt ///
If KeyAscii = 13 Then
Text2(Index).Height = Text2(Index).Height + 200
End If
End If
End Sub
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 04:55.