|
Заполнение списка функцией обратного вызова
|
|||
---|---|---|---|
#18+
Есть форма, на ней есть поле со списком "Тип названия" (2 поля, первое – 0 см ширины) и текстовое "Название". По нажатию кнопки "Добавить в список" (стрелка вниз) в строку списка должны добавиться все 3 значения. Соответственно на "Удалить из списка" (стрелка вверх) – удалиться. С помощью дополнительной таблицы и рекордсетов я такое делал, но мне надо через массив, т.к. в данном случае таблицу использовать нельзя. Читал пример у Гетца в "Разработке настольных приложений", но что-то никак не соображу, как там это работает. Может кто-н. выслать файл с базой, которую Гетц предлагает ("Разработка настольных приложений, глава 6, CH06.mdb)? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2008, 18:27 |
|
Заполнение списка функцией обратного вызова
|
|||
---|---|---|---|
#18+
КД, насколько я понимаю, в справке по свойству RowSourceType есть ссылка на пример такой функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2008, 18:48 |
|
Заполнение списка функцией обратного вызова
|
|||
---|---|---|---|
#18+
БенедиктКД, насколько я понимаю, в справке по свойству RowSourceType есть ссылка на пример такой функции. row source type = UserDefined Function или что-то типа того ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2008, 18:49 |
|
Заполнение списка функцией обратного вызова
|
|||
---|---|---|---|
#18+
Я выслал вам БД от Гетса. Правда Гетс у меня другой, и глава 7-я. :-) Но почему вы не хотите применить список значений? Строку с разделителями легко можно составить и редактировать. В А2002 и новые методы добавления/удаления/перемещения появились у элемента Listbox/Combobox. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2008, 19:12 |
|
Заполнение списка функцией обратного вызова
|
|||
---|---|---|---|
#18+
Бенедикт, proposed amendment, спасибо! гляну в справку. Анатолий, список значений, имхо, здесь неудобен, т.к. в списке 3 столбца и они динамически формируются, добавляются и удаляются. А какие новые методы работы с ListBox'ом в Access 2002 позволяют его так запросто заполнять из массива? (А пример из Гетца я что-то не получил..., может, на форуме выложите?). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2008, 06:24 |
|
Заполнение списка функцией обратного вызова
|
|||
---|---|---|---|
#18+
КДв списке 3 столбца и они динамически формируются, добавляются и удаляются Как раз таки в вашем случае удобно пользоваться советом Анатолия и сделать для списка RowSourceType как список значений. Предположим у вас есть двухмерный массив arr в котором формируются новые значения списка. Тогда на кнопку "Добавить" сажаете код Код: plaintext
m - номер индекса (от нуля) в списке Me.List1 - ваш список arr - передаваемый массив AddListItemInArray - процедура Код: plaintext 1. 2. 3.
Соответсвенно на кнопку "Удалить": В процедуре на кнопку Код: plaintext
Код: plaintext 1. 2. 3.
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2008, 09:36 |
|
Заполнение списка функцией обратного вызова
|
|||
---|---|---|---|
#18+
Добавлю. Если при добавлении элемента списка надо посадить его на место выделенной строки в списке, то обращение к AddListItemInArray будет Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2008, 09:41 |
|
Заполнение списка функцией обратного вызова
|
|||
---|---|---|---|
#18+
Спасибо! А я уже разобрался с этой функцией, заполняющей список. Что-то до меня не дошло, что Гетц так подробно описывает раздел справки (кстати, мне в справке почему-то даже больше понравилось), думал, он свою какую-то придумку рассказывает (на которые горазд). Но попробуем разобраться с этой функцией до конца. Еще один вопрос: как удалить из полученного списка (заполненного пользовательской функцией) строку? Пробую: Dim varIndex As Variant Dim ctl As Control Dim frm As Form Dim intType As Variant Dim intName As Variant On Error GoTo ErrorHandler Set frm = Forms!frmAddMatter Set ctl = frm!lstTypeAndNameMatter For Each varIndex In ctl.ItemsSelected intType = ctl.Column(0) 'на этой строке лезет в процедуру заполнения списка и возвращает оттуда почему-то день недели в двухсимвольном формате ("Вс", "Пн" и т.д.)! intName = ctl.Column(2) Next 'перед входом в цикл обнулим счетчик intCountValue = 0 'Теперь пройдем по массиву, выясняя на каждом шаге, соответствует значение его строки 'выбранному в списке, и, если да, удалим его For intMemberArray = 1 To UBound(arrVarMatterNames, 1) If arrVarMatterNames(intCountValue, 0) = intType And _ arrVarMatterNames(intCountValue, 2) = intName Then arrVarMatterNames(intCountValue, 0) = Null arrVarMatterNames(intCountValue, 1) = Null arrVarMatterNames(intCountValue, 2) = Null Else End If intCountValue = intCountValue + 1 Next intMemberArray Me.lstTypeAndNameMatter.Requery ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2008, 18:07 |
|
Заполнение списка функцией обратного вызова
|
|||
---|---|---|---|
#18+
КДкак удалить из полученного списка (заполненного пользовательской функцией) строку? а просто перезаполнить - без этой "строки"? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2008, 18:38 |
|
Заполнение списка функцией обратного вызова
|
|||
---|---|---|---|
#18+
Это хорошая идея, спасибо! Но откуда он дни недели берет? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2008, 06:37 |
|
Заполнение списка функцией обратного вызова
|
|||
---|---|---|---|
#18+
Анатолий и mds_world, спасибо большое! Не оценил сразу, а вообще-то проще, чем функция и не глюкаво! А зачем тогда эта пользовательская функция? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2008, 18:52 |
|
Заполнение списка функцией обратного вызова
|
|||
---|---|---|---|
#18+
КДА зачем тогда эта пользовательская функция? например: ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2008, 19:01 |
|
|
start [/forum/topic.php?fid=45&gotonew=1&tid=1644762]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
30ms |
get topic data: |
12ms |
get first new msg: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 159ms |
0 / 0 |