
22/12/2005, 03:42
|
 | | | Fecha de Ingreso: octubre-2005
Mensajes: 21
Antigüedad: 19 años, 7 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 |