Выбор строки списка по первой букве

Программирование на Visual Basic for Applications
Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Выбор строки списка по первой букве

Сообщение Vitaly1 » 12.01.2004 (Пн) 14:18

На форме в VBA расположен объект список, необходимо по нажатию буквы, попадать на строку списка (или прокрутить список до строки) в которой текст начинается с указанной буквы.
Можно ли это сделать не программно? Если есть програмный код поделитесь пожалуйсто.

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 12.01.2004 (Пн) 14:54

если имелось ввиду combobox то тогда наверно MatchEntry=0 тебе поможет
Ничто так не ограничивает полёт мысли программиста, как компилятор

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 12.01.2004 (Пн) 16:55

Нет, ListBox, это свойство у него в нуле, но не помогает

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 12.01.2004 (Пн) 17:04

Ну тогда бы я обрабатывал сообщение Listbox_KeyPress и в нем бы анализировал, какая клавиша нажата а потом перебирал бы список в цикле и ставил бы listindex как мне надо.

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 12.01.2004 (Пн) 17:08

тогда предлагаю с помощью textbox'a сделать так:
добавь на форму textbox1, listbox
и напиши так:
Код: Выделить всё
Private Sub TextBox1_Change()
TextBox1.Text = Right(TextBox1.Text, 1)
For i = 0 To ListBox1.ListCount - 1
    If Left(ListBox1.List(i), 1) = TextBox1.Text Then
        ListBox1.ListIndex = i
        Exit Sub
    End If
Next
ListBox1.ListIndex = 0
End Sub

Private Sub UserForm_Initialize()
ListBox1.AddItem "aa"
ListBox1.AddItem "ba"
ListBox1.AddItem "bb"
ListBox1.AddItem "bc"
ListBox1.AddItem "ca"
ListBox1.AddItem "cb"
ListBox1.AddItem "cc"
End Sub
Ничто так не ограничивает полёт мысли программиста, как компилятор

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 12.01.2004 (Пн) 17:35

Спасибо, но я наверно через keydown буду

Хотя Корги прав, видишь что вводишь, только надо в keydown enter отлавливать textBox-а, и лишь затем в списке искать а то при длинной списке замаешься набирать данные.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 14.01.2004 (Ср) 13:54

Ну вот, как я сделал:

dim s as string

private sub listbox1_keypress(Byval keyascii...
if keyascii = 8 then
s=""
form1.caption ="Ввод значения:"
ElseIf keyascii = 13 then
'тут можно в цикле искать строку если хотим ее выбрать не по полному значению
on error resume next
listbox1.text =s
else
s=s+chr(keyascii)
form1.caption ="Ввод значения:" +s
end if
end sub


Вернуться в VBA

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

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

    TopList