powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Заполнение списка функцией обратного вызова
13 сообщений из 13, страница 1 из 1
Заполнение списка функцией обратного вызова
    #35139962
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть форма, на ней есть поле со списком "Тип названия" (2 поля, первое – 0 см ширины) и текстовое "Название". По нажатию кнопки "Добавить в список" (стрелка вниз) в строку списка должны добавиться все 3 значения. Соответственно на "Удалить из списка" (стрелка вверх) – удалиться. С помощью дополнительной таблицы и рекордсетов я такое делал, но мне надо через массив, т.к. в данном случае таблицу использовать нельзя. Читал пример у Гетца в "Разработке настольных приложений", но что-то никак не соображу, как там это работает. Может кто-н. выслать файл с базой, которую Гетц предлагает ("Разработка настольных приложений, глава 6, CH06.mdb)?
...
Рейтинг: 0 / 0
Заполнение списка функцией обратного вызова
    #35140011
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КД,
насколько я понимаю, в справке по свойству RowSourceType есть ссылка на пример такой функции.
...
Рейтинг: 0 / 0
Заполнение списка функцией обратного вызова
    #35140015
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БенедиктКД,
насколько я понимаю, в справке по свойству RowSourceType есть ссылка на пример такой функции.

row source type = UserDefined Function

или что-то типа того
...
Рейтинг: 0 / 0
Заполнение списка функцией обратного вызова
    #35140063
Я выслал вам БД от Гетса. Правда Гетс у меня другой, и глава 7-я. :-)
Но почему вы не хотите применить список значений? Строку с разделителями легко можно составить и редактировать. В А2002 и новые методы добавления/удаления/перемещения появились у элемента Listbox/Combobox.
...
Рейтинг: 0 / 0
Заполнение списка функцией обратного вызова
    #35140492
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бенедикт, proposed amendment, спасибо! гляну в справку.
Анатолий, список значений, имхо, здесь неудобен, т.к. в списке 3 столбца и они динамически формируются, добавляются и удаляются. А какие новые методы работы с ListBox'ом в Access 2002 позволяют его так запросто заполнять из массива? (А пример из Гетца я что-то не получил..., может, на форуме выложите?).
...
Рейтинг: 0 / 0
Заполнение списка функцией обратного вызова
    #35140626
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КДв списке 3 столбца и они динамически формируются, добавляются и удаляются
Как раз таки в вашем случае удобно пользоваться советом Анатолия и сделать для списка RowSourceType как список значений.
Предположим у вас есть двухмерный массив arr в котором формируются новые значения списка. Тогда на кнопку "Добавить" сажаете код
Код: plaintext
AddListItemInArray n, m, Me.List1, arr
Здесь n - номер элемента массива (номер строки);
m - номер индекса (от нуля) в списке
Me.List1 - ваш список
arr - передаваемый массив
AddListItemInArray - процедура
Код: plaintext
1.
2.
3.
Sub AddListItemInArray(p As Integer, i As Integer, cnt As Control, ByVal arr)
    cnt.AddItem arr(p,  0 ) & ";" & arr(p,  1 ) & ";" & arr(p,  2 ), i
    cnt.Requery
End Sub

Соответсвенно на кнопку "Удалить":
В процедуре на кнопку
Код: plaintext
RemoveListItemInList m, Me.List1
Процедура RemoveListItemInList:
Код: plaintext
1.
2.
3.
Sub RemoveListItemInList(i As Integer, cnt As Control)
    cnt.RemoveItem i
    cnt.Requery
End Sub
Если надо удалить выделенную строку из списка, то обращение к RemoveListItemInList будет
Код: plaintext
RemoveListItemInList Me.List1.ListIndex, Me.List1
...
Рейтинг: 0 / 0
Заполнение списка функцией обратного вызова
    #35140639
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю. Если при добавлении элемента списка надо посадить его на место выделенной строки в списке, то обращение к AddListItemInArray будет
Код: plaintext
AddListItemInArray n, Me.List1.ListIndex, Me.List1, arr
...
Рейтинг: 0 / 0
Заполнение списка функцией обратного вызова
    #35142364
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! А я уже разобрался с этой функцией, заполняющей список. Что-то до меня не дошло, что Гетц так подробно описывает раздел справки (кстати, мне в справке почему-то даже больше понравилось), думал, он свою какую-то придумку рассказывает (на которые горазд).
Но попробуем разобраться с этой функцией до конца. Еще один вопрос: как удалить из полученного списка (заполненного пользовательской функцией) строку?
Пробую:
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
...
Рейтинг: 0 / 0
Заполнение списка функцией обратного вызова
    #35142467
Фотография BULK INSERT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КДкак удалить из полученного списка (заполненного пользовательской функцией) строку?

а просто перезаполнить - без этой "строки"?
...
Рейтинг: 0 / 0
Заполнение списка функцией обратного вызова
    #35143025
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это хорошая идея, спасибо! Но откуда он дни недели берет?
...
Рейтинг: 0 / 0
Заполнение списка функцией обратного вызова
    #35145598
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий и mds_world, спасибо большое! Не оценил сразу, а вообще-то проще, чем функция и не глюкаво! А зачем тогда эта пользовательская функция?
...
Рейтинг: 0 / 0
Заполнение списка функцией обратного вызова
    #35145621
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КДА зачем тогда эта пользовательская функция?

например:
...
Рейтинг: 0 / 0
Заполнение списка функцией обратного вызова
    #35156903
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
proposed amendment, спасибо!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Заполнение списка функцией обратного вызова
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]