SEJAM BEM VINDOS!!!

Este blog é destinado a todos que interessam em aprender e compartilhar conhecimento sobre desenvolvimento de aplicativos, linguagens de programação, banco de dados, entre outros.

O que é OCX?

Abreviatura de OLE custom control. Módulo de software que se baseia nas tecnologias OLE e COM que, quando chamado por uma aplicação, produz um controle que acrescenta algum recurso interessante à aplicação. A tecnologia OCX é independente de plataforma, opera em sistemas operacionais de 16 e 32 bits e pode ser usada com várias aplicações. É a sucessora da tecnologia VBX (Visual Basic custom control), que aceitava apenas aplicações do Visual Basic, e constitui a base dos controles ActiveX. Os controles OCX podem ser criados em diversas linguagens, embora o Visual C++ seja a linguagem mais utilizada. Desenvolvida pela Microsoft, a tecnologia OCX é tratada na especificação OCX 96 (1996 OLE Controls specification). Pesquise também ActiveX controls (controles ActiveX); COM (definição 2); control (controle – definição 2); OLE; VBX; Visual Basic.

Fonte: http://o-que-significa.blogspot.com.br/2011/06/ocx.html#.UxivZPldXik

segunda-feira, 21 de setembro de 2009

Visual Basic - COMBOBOX com auto completar

Veremos abaixo passo a passo como criar um auto completar em um COMBOBOX padrão.
Crie um novo projeto e insira um form e um comobobox conforme a imagem abaixo:
No Option Explicit declare a seguinte variável

Option Explicit
Private Const CB_FINDSTRING As Long = &H14C
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

Crie as seguinte funções

Public Function Combo_AutoCompletar(xCombo As ComboBox, ByVal xKeyAscii As Long, Optional ByVal xUpperCase As Boolean = True) As Long
Dim lngFind As Long, intPos As Long, intLength As Long, tStr As String
With xCombo
If xKeyAscii = 8 Then
If .SelStart = 0 Then Exit Function

.SelStart = .SelStart - 1
.SelLength = Len(.Text)
.SelText = vbNullString
Else
intPos = .SelStart
tStr = .Text
.SelText = (Chr$(xKeyAscii))
' .SelText = IIf(xUpperCase, _
' UCase$(Chr$(xKeyAscii)), _
' LCase$(Chr$(xKeyAscii)))
End If
lngFind = SendMessage(.hwnd, CB_FINDSTRING, 0, ByVal .Text)
If lngFind = -1 Then
.Text = tStr
.SelStart = intPos
.SelLength = (Len(.Text) - intPos)
Combo_AutoCompletar = xKeyAscii
Else
intPos = .SelStart
intLength = Len(.List(lngFind)) - Len(.Text)
.SelText = .SelText & Right$(.List(lngFind), intLength)
.SelStart = intPos
.SelLength = intLength
End If
End With
End Function

No evento Keypress adicione o seguinte código

Private Sub cboCidades_KeyPress(KeyAscii As Integer)
KeyAscii = Combo_AutoCompletar(cboCidades, KeyAscii)
End Sub

Pronto, basta executar e testar.
Espero ter ajudado! Equipe I Sistemas.

Nenhum comentário:

Postar um comentário