Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: zxs23 en Diciembre 06, 2012, 10:31:05 pm
-
Hola a todos, tengo algunos items del datacombo que sobrepasan el ancho del control y quisiera ponerle un ToolTipText a todos los items como podria hacerlo, bueno y tambien como hacerlo en un combo normal.
-
por lo que se, para hacer eso tenes que ya entrar a subclasificar el control combo lo cual es un lio si no sabes como es. aca te dejo un proyecto para bajar con clases en C++que usan las apis para hacer eso.
ComboBox with Item Tooltips (http://www.codeguru.com/cpp/controls/combobox/tooltips/article.php/c4949/ComboBox-with-Item-Tooltips.htm)
capas te convendria alguna otra solucion o usar el ucCombobox de Leandro, pero creo que tampoco tiene tooltips por item, aunque seria capas menos trabajo agregarlo ya que esta creado de 0 con apis.
saludos.
-
Hola bueno creo que va ser un poco dificil hacerlo con mi nivel actual creo que por ese lado no puedo hacer nada y no creo que valga la pena tanto esfuerzo.
Estoy intentando agrandar el with del control cuando le pongo el foco y volverlo a la normalidad cuando clickeo o pierdo el foco pero no me queda nada bueno, haber si me hechan una mano con esto porque ya tire la toalla despues de jugar con los eventos(Si es que se puede caso contrario pues ni modo).
SALUDOS
-
Hola con un combo normal es mas fácil ajustar el ancho pero bueno no es el caso, te tiro esta función, que creo que te puede safar, es para agrandar el ancho de la lista, pero tenes que llamarla en los enventos MouseUp y KeyUp
Option Explicit
Private Declare Function MoveWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Function SetDataComboListWidth(ByVal NewWidth As Long)
Dim hwnd As Long
Dim Rec As RECT
hwnd = FindWindow("DataComboListWndClass", vbNullString)
If hwnd <> 0 Then
GetWindowRect hwnd, Rec
If NewWidth < Rec.Right - Rec.Left Then NewWidth = Rec.Right - Rec.Left
MoveWindow hwnd, Rec.Left, Rec.Top, NewWidth, Rec.Bottom - Rec.Top, 1
End If
End Function
Private Sub DataCombo1_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF4 Then
SetDataComboListWidth 500
End If
End Sub
Private Sub DataCombo1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
SetDataComboListWidth 500
End Sub