| Procedure
ComboBox Inteligente |
| Declare
Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long,
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long |
| Public
Const CB_ERR = (-1) |
| Public
Const CB_FINDSTRING = &H14C |
|
|
|
| Sub
BuscaCbo(cbo As ComboBox, KeyAscii As Integer) |
|
Dim sBuffer As String |
|
Dim
lRetVal As Long |
|
sBuffer
= Left(cbo.Text, cbo.SelStart) & Chr(KeyAscii) |
|
lRetVal
= SendMessage((cbo.hwnd), CB_FINDSTRING, -1, ByVal sBuffer) |
|
If
lRetVal <> CB_ERR Then |
|
|
cbo.ListIndex
= lRetVal |
|
|
cbo.Text
= cbo.List(lRetVal) |
|
|
cbo.SelStart
= Len(sBuffer) |
|
|
cbo.SelLength
= Len(cbo.Text) |
|
|
KeyAscii
= 0 |
|
End
If |
|
| End
Sub |
|
 |
| Preencher
ComboBox |
| Sub
SU_PreencheComboGenerico(ArgColocaCodigo As Boolean, ArgSelect As String,
_ ArgCombo As ComboBox) |
|
Dim
VL_Combo As Recordset |
|
On
Error GoTo ErroPreencheComboGenerico |
|
ArgCombo.Clear |
|
Set VL_Combo = ConexaoADO.Execute(ArgSelect) |
|
If
Not VL_Combo.BOF And Not VL_Combo.EOF Then |
|
|
VL_Combo.MoveFirst |
|
|
While
Not VL_Combo.EOF |
|
|
|
If ArgColocaCodigo = True Then |
|
|
|
|
ArgCombo.AddItem
VL_Combo(0) & " - " & VL_Combo(1) |
|
|
|
Else |
|
|
|
|
ArgCombo.AddItem
VL_Combo(1) |
|
|
|
End If |
|
|
|
ArgCombo.ItemData(ArgCombo.NewIndex)
= VL_Combo(0) |
|
|
|
VL_Combo.MoveNext |
|
|
Wend |
|
End
If |
|
VL_Combo.Close |
|
Exit
Sub |
| ErroPreencheComboGenerico: |
|
SU_TrataErros |
| End
Sub |
 |
| Retorna
Tipo do Objeto |
| Function
FU_RetornaTipo(vlObj As Object) |
|
If
vlObj.Type = adBigInt Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf
vlObj.Type = adBinary Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf
vlObj.Type = adBSTR Then |
|
|
FU_RetornaTipo
= "STRING" |
|
ElseIf
vlObj.Type = adChar Then |
|
|
FU_RetornaTipo
= "STRING" |
|
ElseIf
vlObj.Type = adCurrency Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf
vlObj.Type = adDate Then |
|
|
FU_RetornaTipo
= "DATA" |
|
ElseIf
vlObj.Type = adDBDate Then |
|
|
FU_RetornaTipo
= "DATA" |
|
ElseIf
vlObj.Type = adDBTime Then |
|
|
FU_RetornaTipo
= "DATA" |
|
ElseIf
vlObj.Type = adDBTimeStamp Then |
|
|
FU_RetornaTipo
= "DATA" |
|
ElseIf
vlObj.Type = adDecimal Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf
vlObj.Type = adDouble Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf
vlObj.Type = adEmpty Then |
|
|
FU_RetornaTipo
= "STRING" |
|
ElseIf vlObj.Type = adInteger Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf
vlObj.Type = adLongVarBinary Then |
|
|
FU_RetornaTipo
= "STRING" |
|
ElseIf vlObj.Type = adLongVarChar Then |
|
|
FU_RetornaTipo
= "STRING" |
|
ElseIf vlObj.Type = adLongVarWChar Then |
|
|
FU_RetornaTipo
= "STRING" |
|
ElseIf
vlObj.Type = adNumeric Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf
vlObj.Type = adSingle Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf
vlObj.Type = adSmallInt Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf vlObj.Type = adTinyInt Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf vlObj.Type = adUnsignedBigInt Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf
vlObj.Type = adUnsignedInt Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf vlObj.Type = adUnsignedSmallInt Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf vlObj.Type = adUnsignedTinyInt Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf vlObj.Type = adVarBinary Then |
|
|
FU_RetornaTipo
= "NUMERO" |
|
ElseIf vlObj.Type = adVarChar Then |
|
|
FU_RetornaTipo
= "STRING" |
|
ElseIf vlObj.Type = adVariant Then |
|
|
FU_RetornaTipo
= "STRING" |
|
ElseIf vlObj.Type = adVarWChar Then |
|
|
FU_RetornaTipo
= "STRING" |
|
ElseIf
vlObj.Type = adWChar Then |
|
|
FU_RetornaTipo
= "STRING" |
|
Else
|
|
|
|
FU_RetornaTipo
= "STRING" |
|
End
If |
| End
Function |
 |