Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
netfrog
-
- Продвинутый пользователь
-
-
- Сообщения: 186
- Зарегистрирован: 27.06.2002 (Чт) 17:23
- Откуда: Russia
-
netfrog » 16.04.2003 (Ср) 12:37
Вроде должно работать и рабает, но если не соответствует регистр символов, то не хотит
можно как нить объехать ????
- Код: Выделить всё
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
Private Sub Form_Load()
Combo1.AddItem "ааа"
Combo1.AddItem "ббб"
Combo1.AddItem "ВВВВ"
End Sub
Private Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim st As Long
If KeyCode <> vbKeyReturn And KeyCode <> vbKeyBack And KeyCode <> vbKeySpace Then
st = Len(Combo1.Text)
If st < 3 Then
For X = 0 To Combo1.ListCount - 1
If Left(Combo1.List(X), st) = Combo1.Text Then
Combo1.ListIndex = X
Combo1.SelStart = st
Combo1.SelLength = Len(Combo1.Text) - st
Exit For
End If
Next X
End If
End If
End Sub
=================
Ничто так не ограничивает полет мысли программиста, как компилятор
-
RayShade
-
- Scarmarked
-
-
- Сообщения: 5511
- Зарегистрирован: 02.12.2002 (Пн) 17:11
- Откуда: Russia, Saint-Petersburg
-
RayShade » 16.04.2003 (Ср) 12:39
я бы объехал примерно так:
- Код: Выделить всё
If LCase(Left(Combo1.List(X), st)) = LCase(Combo1.Text) Then
или вообще так:
- Код: Выделить всё
If Left(Combo1.List(X), st) LIKE Combo1.Text Then
-
netfrog
-
- Продвинутый пользователь
-
-
- Сообщения: 186
- Зарегистрирован: 27.06.2002 (Чт) 17:23
- Откуда: Russia
-
netfrog » 16.04.2003 (Ср) 12:47
Like я тоже попробовал, не помогает, а первый вариант - самое то.
Спасибо
=================
Ничто так не ограничивает полет мысли программиста, как компилятор
-
alibek
-
- Большой Человек
-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 16.04.2003 (Ср) 14:19
Или в декларации напиши
- Код: Выделить всё
Option Compare Text
Но еще лучше искать при помощи API SendMessage hWnd, CB_FINDSTRING, ?, ?
Lasciate ogni speranza, voi ch'entrate.
-
netfrog
-
- Продвинутый пользователь
-
-
- Сообщения: 186
- Зарегистрирован: 27.06.2002 (Чт) 17:23
- Откуда: Russia
-
netfrog » 16.04.2003 (Ср) 15:27
чем лучше, ну и пример в студию
=================
Ничто так не ограничивает полет мысли программиста, как компилятор
-
alibek
-
- Большой Человек
-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 16.04.2003 (Ср) 15:51
Ну примерно так:
- Код: Выделить всё
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 As Long = &H14C&
...
Private Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim st As Long, I As Long
If KeyCode <> vbKeyReturn And KeyCode <> vbKeyBack And KeyCode <> vbKeySpace Then
st = Len(Combo1.Text)
If st < 3 Then
I = SendMessage(Combo1.hWnd, CB_FINDSTRING, ByVal 1&, ByVal (Combo1.Text & Chr$(0)))
If I => 0 Then
Combo1.ListIndex = I
Combo1.SelStart = st
Combo1.SelLength = Len(Combo1.Text) - st
End If
End If
End If
End Sub
Только это... не проверял я. Но должно работать.
Lasciate ogni speranza, voi ch'entrate.
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 58