Как сделать,чтобы список разворачивался при получении фокуса

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Shura09
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 08.12.2003 (Пн) 14:23

Как сделать,чтобы список разворачивался при получении фокуса

Сообщение Shura09 » 08.12.2003 (Пн) 18:43

:D
Всем привет!
Подскажите пожалуйста как сделать,чтобы список разворачивался при получении фокуса?
В Access в VBA можно было записать ComboBox1.Dropdown и это работало, т.е. список разворачивался, а как тоже самое сделать в Visual Basic?

И еще один вопросик, как в том же поле сделать контекстный поиск, т.е. когда набираешь 1-ые буквы и автоматически отображаются записи?

Может есть какой-то особенный контрол?
Спасибо!!!

_NeoN_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 178
Зарегистрирован: 14.08.2003 (Чт) 9:48
Откуда: Новосибирск

Сообщение _NeoN_ » 08.12.2003 (Пн) 19:33

VB щас не стоит, но мге сказать как примерно это сделать если стандартного ничего нету.
значит делаешь combobox(enabled=false!!!!!)
и делаешь listbox...(visible=false)
ну и пишем
private sub combobox_gotfocus(..не помню че тута)
if listbox.visible==false then listbox.visible=true
end sub

private sub combobox_lostfocus(....)
if фокус_на_лист_боксе then exit sub else listbox.visible=false
endif

извини не проверял ))) может быть есть стандартные способы =))

_NeoN_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 178
Зарегистрирован: 14.08.2003 (Чт) 9:48
Откуда: Новосибирск

Сообщение _NeoN_ » 08.12.2003 (Пн) 19:35

насчет второго... там все просто =) смотришь что набрал... отсеиваешь записи начало которых не равно тому что набрал... вот и все... процедура выполняется за линейное время и пишется 2 секунды...

Shura09
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 08.12.2003 (Пн) 14:23

...

Сообщение Shura09 » 09.12.2003 (Вт) 10:34

Дааа... :roll:
Это черезчур.
А свойства какого-нибудь нет? Или может есть контрол с такими критериями?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.12.2003 (Вт) 12:10

1. Примерно так:
Код: Выделить всё
Private Sub Combo1_GotFocus()
SendKeys "%{DOWN}", True
End Sub


2. Тебе нужен фильтр или поиск? Если фильтр, что при изменении комбобокса (Combo1_Change) перезагружаешь его содержимое. Если поиск, то поищи по форуму по слову FindByValue, skiperski давал неплохой пример реализации автопоиска.
Lasciate ogni speranza, voi ch'entrate.

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 09.12.2003 (Вт) 12:13

И еще один вопросик, как в том же поле сделать контекстный поиск, т.е. когда набираешь 1-ые буквы и автоматически отображаются записи?

Обратите внимание на Microsoft Forms 2.0
Сразу замечу, что под НТ системами будут проблемы с кириллическими шрифтами. Латиница отображается нормально.
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

Shura09
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 08.12.2003 (Пн) 14:23

Сообщение Shura09 » 09.12.2003 (Вт) 12:46

Блин...
Microsoft Forms 2.0 - то что надо, только у пользователей какраз NT :(
SendKeys "%{DOWN}", True Тоже хорошо, только в строке не появляются варианты.

А эта проблема с кириллицей как-нить решается?

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 09.12.2003 (Вт) 13:35

В своё время очень долго рыл эту проблему. Ничего не удалось решить. Может не там рыл?
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

Shura09
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 08.12.2003 (Пн) 14:23

Сообщение Shura09 » 09.12.2003 (Вт) 13:39

Ясно. Всеравно большое спасибо. Буду пробовать решить проблему. Благо начало положено.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.12.2003 (Ср) 11:41

MEMBER, всё-таки действительно не там рыл :)
Никогда этим раньше не пользовался, но по названию констант сразу догадался :)
Код: Выделить всё
Option Explicit

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal uNsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const CB_SELECTSTRING As Long = &H14D
Private Const CB_SHOWDROPDOWN As Long = &H14F

Private Sub Combo1_Change()
  SendMessage Combo1.hWnd, CB_SELECTSTRING, 0, ByVal Combo1.Text
End Sub

Private Sub Combo1_GotFocus()
  SendMessage Combo1.hWnd, CB_SHOWDROPDOWN, 1, ByVal 0&
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 20

    TopList