ListView с флажками

Программирование на Visual Basic for Applications
Wolf-X
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 08.10.2004 (Пт) 21:23

ListView с флажками

Сообщение Wolf-X » 08.10.2004 (Пт) 21:30

Помогите, плиззз. У меня такая проблема. ListView(с чекбоксами) отображает результаты поиска по базе данных. После этого я щелкаю по флажкам и тем самым выбираю некоторые строки, на основе которых будет строится отчет . Как мне узнать какие флажки нажаты?
Буду очень признателен за помощь.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.10.2004 (Пт) 21:43

Те, у которых истинно ListView1.ListItems(Индекс).Checked
Изображение

Wolf-X
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 08.10.2004 (Пт) 21:23

Сообщение Wolf-X » 11.10.2004 (Пн) 6:18

Tyomich,

Спасибо огромное!! а то почему акцес не отображает в окне подсказки все его свойства и колекции.

Wolf-X
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 08.10.2004 (Пт) 21:23

Сообщение Wolf-X » 14.10.2004 (Чт) 6:56

А можно ли сделать так чтобы мышью можно было перетаскивать строки и тем самым менять их местами?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 14.10.2004 (Чт) 7:25

Да. Выставь OLEDragMode в 1 - ccOLEDragAutomatic, OLEDropMode в 1 - ccOLEDropManual, допиши в форму код:
Код: Выделить всё
Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
Dim Target As MSComctlLib.ListItem, TargetIndex As Long
    Set Target = ListView1.HitTest(x, y)
    If Target Is Nothing Then TargetIndex = ListView1.ListItems.Count + 1 Else TargetIndex = Target.Index
    ListView1.ListItems.Add TargetIndex, , Data.GetData(1)
    Effect = vbDropEffectMove
End Sub
Изображение

Wolf-X
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 08.10.2004 (Пт) 21:23

Сообщение Wolf-X » 18.10.2004 (Пн) 8:08

Tyomich

Я написал следующее

Код: Выделить всё
Private Sub lstFind_OLEDragDrop(Data As Object, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
Dim Target As MSComctlLib.ListItem, TargetIndex As Long
    Set Target = lstFind.HitTest(x, y)
    If Target Is Nothing Then TargetIndex = lstFind.ListItems.Count + 1 Else TargetIndex = Target.Index
    lstFind.ListItems.Add TargetIndex, , Data.GetData(1)

lstFind.ListItems(TargetIndex).SubItems(1) = Data.GetData(1)
Effect = 2
   
   
End Sub


он работает, но при перемещении, значения сабитемов не переносятся. Я уже шаманил всяко разно, но ничего не вышло. Кстати, ежели я пишу в описании процедуры Data As MSComctlLib.DataObject то при загрузке он говорит что "Procedure declaratioin does not mach description of event or procedure having same name" . И он почему то не знает системную константу vbDropEffectMove. Мож где ссылочку поставить надо?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 18.10.2004 (Пн) 11:10

vbDropEffectMove определена в енуме VBRUN.OLEDropEffectConstants - он у тебя не может быть не подключен. Наверное, опечатался в названии.

Субитемы действительно не переносятся ;-(
Придётся в отдельном массиве хранить соответствие итемов и субитемов, и при переносе воссоздавать их.
Изображение


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 113

    TopList