SELEC. ITEM DO LISTBOX SEM ACIONAR EVENTO CLICK
Caros,
alguem sabe se é possÃvel selecionar o item de um ListBox sem acionar o evento click do mesmo?
Como faz muito tempo que não programo estou ficando enferrujado..
A rotina funciona da seguinte forma:
Quando o usuário clica na grade, eu aciono algumas rotinas. E umas dessas rotinas é preencher uma ListBox com Style checkbox.
Se o valor estiver cadastrado no banco de dados, a rotina deverá marcar o check do item.
Só que no evento click do listbox eu faço algumas validações. E usando a outra rotina para marcar o check ele aciona esse evento.
A rotina que preenche o list funciona da seguinte forma:
Faço um loop na tabela de parametros para preencher os valores da combo. No meio do loop eu faço um select na tabela de cadastro para saber se o item está selecionado.
Se estiver selecionado eu marco o item da seguinte forma:
Eu queria apenas marcar o item do list sem acionar o evento click.
Alguem sabe uma solução para esse problema?
Obigado
Hugo Santiago
alguem sabe se é possÃvel selecionar o item de um ListBox sem acionar o evento click do mesmo?
Como faz muito tempo que não programo estou ficando enferrujado..
A rotina funciona da seguinte forma:
Quando o usuário clica na grade, eu aciono algumas rotinas. E umas dessas rotinas é preencher uma ListBox com Style checkbox.
Se o valor estiver cadastrado no banco de dados, a rotina deverá marcar o check do item.
Só que no evento click do listbox eu faço algumas validações. E usando a outra rotina para marcar o check ele aciona esse evento.
A rotina que preenche o list funciona da seguinte forma:
Faço um loop na tabela de parametros para preencher os valores da combo. No meio do loop eu faço um select na tabela de cadastro para saber se o item está selecionado.
Se estiver selecionado eu marco o item da seguinte forma:
.Selected(.NewIndex) = IIf(rsTipo!cltipo = 1, True, False)
Eu queria apenas marcar o item do list sem acionar o evento click.
Alguem sabe uma solução para esse problema?
Obigado
Hugo Santiago
Option Explicit
Dim I As Integer
Dim S As String
Dim T As Long
Dim lRET As Long
Private Declare Function SendMessage Lib [Ô]user32[Ô] Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const CB_FINDSTRING = &H14C
Private Const LB_FINDSTRING = &H18F
Private Function LookupItem(ByRef Ctl As Object, sItem As String) As Long
If TypeOf Ctl Is ComboBox Then
LookupItem = SendMessage(Ctl.hwnd, CB_FINDSTRING, -1&, ByVal sItem)
Else
LookupItem = SendMessage(Ctl.hwnd, LB_FINDSTRING, -1&, ByVal sItem)
End If
End Function
Private Sub Form_Load()
S = Now
For I = 0 To Screen.FontCount - 1
List1.AddItem Screen.Fonts(I)
Combo1.AddItem Screen.Fonts(I)
Next
Label1.Caption = ElapsedTime(S, Now) & [Ô]hs para carregar a lista com [Ô] & List1.ListCount & [Ô] fontes instaladas no sistema operacional[Ô]
Label2.Caption = [Ô][Ô]
End Sub
Private Sub List1_Click()
Combo1.ListIndex = List1.ListIndex
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
T = Timer
lRET = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal Text1.Text)
If lRET >= 0 Then List1.ListIndex = lRET
lRET = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal Text1.Text)
If lRET >= 0 Then Combo1.ListIndex = lRET
Label2.Caption = Format(Timer - T, [Ô]0.####0[Ô]) & [Ô]ms para encontrar [Ô] & Text1.Text
End Sub
Private Function ElapsedTime(tStart As String, tStop As String) As String
Dim dtr As Long
Dim dtl As Long
Dim jml As Long
dtl = (Hour(tStart) * 3600) + (Minute(tStart) * 60) + (Second(tStart))
dtr = (Hour(tStop) * 3600) + (Minute(tStop) * 60) + (Second(tStop))
If tStop < tStart Then jml = 86400 Else jml = 0
jml = jml + (dtr - dtl)
ElapsedTime = Format(Str(Int((Int((jml / 3600)) Mod 24))), [Ô]00[Ô]) + [Ô]:[Ô] + Format(Str(Int((Int((jml / 60)) Mod 60))), [Ô]00[Ô]) + [Ô]:[Ô] + Format(Str(Int((jml Mod 60))), [Ô]00[Ô])
End Function
Amigo ve isso que vc quer
Dim I As Integer
Dim S As String
Dim T As Long
Dim lRET As Long
Private Declare Function SendMessage Lib [Ô]user32[Ô] Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const CB_FINDSTRING = &H14C
Private Const LB_FINDSTRING = &H18F
Private Function LookupItem(ByRef Ctl As Object, sItem As String) As Long
If TypeOf Ctl Is ComboBox Then
LookupItem = SendMessage(Ctl.hwnd, CB_FINDSTRING, -1&, ByVal sItem)
Else
LookupItem = SendMessage(Ctl.hwnd, LB_FINDSTRING, -1&, ByVal sItem)
End If
End Function
Private Sub Form_Load()
S = Now
For I = 0 To Screen.FontCount - 1
List1.AddItem Screen.Fonts(I)
Combo1.AddItem Screen.Fonts(I)
Next
Label1.Caption = ElapsedTime(S, Now) & [Ô]hs para carregar a lista com [Ô] & List1.ListCount & [Ô] fontes instaladas no sistema operacional[Ô]
Label2.Caption = [Ô][Ô]
End Sub
Private Sub List1_Click()
Combo1.ListIndex = List1.ListIndex
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
T = Timer
lRET = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal Text1.Text)
If lRET >= 0 Then List1.ListIndex = lRET
lRET = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal Text1.Text)
If lRET >= 0 Then Combo1.ListIndex = lRET
Label2.Caption = Format(Timer - T, [Ô]0.####0[Ô]) & [Ô]ms para encontrar [Ô] & Text1.Text
End Sub
Private Function ElapsedTime(tStart As String, tStop As String) As String
Dim dtr As Long
Dim dtl As Long
Dim jml As Long
dtl = (Hour(tStart) * 3600) + (Minute(tStart) * 60) + (Second(tStart))
dtr = (Hour(tStop) * 3600) + (Minute(tStop) * 60) + (Second(tStop))
If tStop < tStart Then jml = 86400 Else jml = 0
jml = jml + (dtr - dtl)
ElapsedTime = Format(Str(Int((Int((jml / 3600)) Mod 24))), [Ô]00[Ô]) + [Ô]:[Ô] + Format(Str(Int((Int((jml / 60)) Mod 60))), [Ô]00[Ô]) + [Ô]:[Ô] + Format(Str(Int((jml Mod 60))), [Ô]00[Ô])
End Function
Amigo ve isso que vc quer
Tópico encerrado , respostas não são mais permitidas