powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / listBox
8 сообщений из 8, страница 1 из 1
listBox
    #39616454
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, как сделать чтоб элемент списка после его выбора из текущего добавлялся в другой (типа как в А-2007 настраивается панель быстрого доступа-лучше чтоб выбранная строчка перемещалась,а не копировалась)
...
Рейтинг: 0 / 0
listBox
    #39616469
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,

Если у вас источники списков таблицы, то тут слишком просто, всего два запроса, один на добавление записи в список2,а второй на удаление записи из списка1. И requery обоих списков в конце.

А вот если у вас набор значений, не связанных с таблицами (к примеру вручную добавляется) то по быстрому накидал сейчас процедуру на двойное нажатие элемента из списка (можно и на один клик в принципе). Перемещает значение из списка1 в список2.
Подходов куча, с моей стороны костыль такой:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub Список1_DblClick(Cancel As Integer)

listCollection = Me.Список1.RowSource 'определяем список значений в источнике
listitem = Me.Список1 'определяем значение в лисьбоксе на которое мы нажали дважды
a = Replace(listCollection, ";" & listitem, "") ' выкусываем его из текущего источника, вместе с лишней точкой с запятой
Me.Список1.RowSource = a ' подставляем новый текст в источник Список1 с учетом удаленного элемента

If IsNull(Me.Список2.RowSource) Then ' если список2 в который мы добавляем значение пустой
Me.Список2.RowSource = listitem ' то просто добавляем значение
Else 'если нет, и что-то уже в нем/списке2 есть,
Me.Список2.RowSource = Me.Список2.RowSource & ";" & listitem ' то приклеиваем к уже существующему
End If

End Sub
...
Рейтинг: 0 / 0
listBox
    #39616476
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже можно еще упростить:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Список1_DblClick(Cancel As Integer)

listCollection = Me.Список1.RowSource 'определяем список значений в источнике
listitem = Me.Список1 'определяем значение в лисьбоксе на которое мы нажали дважды
a = Replace(listCollection, ";" & listitem, "") ' выкусываем его из текущего источника, вместе с лишней точкой с запятой
Me.Список1.RowSource = a ' подставляем новый текст в источник Список1 с учетом удаленного элемента
Me.Список2.AddItem (listitem)  '  просто добавляем значение listitem во второй список

End Sub
...
Рейтинг: 0 / 0
listBox
    #39616479
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, если .RowSourceType = "Value List" можно ещё так
lst1, lst2 - это списки, Listindex - индекс lst1
Код: vbnet
1.
2.
3.
4.
5.
Dim LstIndex1&
LstIndex1 = lst1.ListIndex
lst2.AddItem lst1 & "; " & lst1.column(1) ' ит.д.-добавили в конец списка
' lst2.AddItem lst1 & "; " & lst1.column(1),1 ' в начало
lst1.RemoveItem LstIndex1 ' удалили из 1-го списка
...
Рейтинг: 0 / 0
listBox
    #39616480
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловДаже можно еще упростить:Даже это слишком сложно ;)
...
Рейтинг: 0 / 0
listBox
    #39616483
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот эталон:))

Не пользовался раньше этими свойствами ,поэтому код удалось оптимизировать с третьего раза:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Список1_DblClick(Cancel As Integer)

listCollection = Me.Список1.RowSource 'определяем список значений в источнике
listitem = Me.Список1 'определяем значение в листбоксе на которое мы нажали дважды
Me.Список1.RemoveItem (listitem) '  просто удаляем значение listitem в первом списке
Me.Список2.AddItem (listitem)  '  просто добавляем значение listitem во второй список

End Sub
...
Рейтинг: 0 / 0
listBox
    #39616487
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловВот эталон:))Зачем столько букв? Где декларация переменных? Для эталона рановато, надо поработать ещё.
...
Рейтинг: 0 / 0
listBox
    #39616488
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,

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


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