Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

ListView (vsReport, CheckBoxes=True)   Найти похожие ветки 

 
Fktrc ©   (2004-09-07 13:14) [0]

Hello, All.
Мне требуется отловить "событие" OnChecked для ListView. События такого, конечно, нет, в этом и проблема. Пытался вешаться на OnChanging/OnChange - в итоге куча посторонних сработок. Отделить в них события, возникающие при изменении св-ва Item.Checked от событий, возникающих при перемещении курсора по ListView, я не смог.
Срабатывать "событие" должно как от изменения CheckBox"а на выделенном ListItem"е клавишей пробела, так и по щелчку на CheckBox, припаянному к неактивному в данный момент ListItem"у.
Вешать слежение за крыжиками на отдельный поток можно, но нежелательно, для приемлемого времени реакции поток должен сканировать список с большой частотой и плюс синхронизация с главным потоком. А список может содержать до нескольких сотен, если не тысяч, элементов.
Как можно изящно решить проблему?


 
TUser ©   (2004-09-07 13:57) [1]

OnClick + ItemAtPos


 
Семен Сорокин ©   (2004-09-07 14:25) [2]

Fktrc ©   (07.09.04 13:14)  
посмотрите реализацию ф-ий ListView_GetCheckState, ListView_SetCheckState из commctrl.pas может поможет в решении
проблемы.
TUser ©   (07.09.04 13:57) [1]
не всегда ведь Checked можно поменять нажатием пробела, здесь именно OnChange надо юзать.


 
Fktrc ©   (2004-09-08 04:58) [3]

Спасибо, посмотрю.


 
Ozone ©   (2004-09-08 05:28) [4]

Тоже в свое время столкнулся с этой проблемой


procedure TFServer.ListView1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  Item: TListItem;
begin
    if htOnStateIcon in ListView1.GetHitTestInfoAt(X, Y) then begin
      Item := clientList.GetItemAt(X,Y);
      if Item.Checked then {...}
      else {...}
    end
end;


 
Ozone ©   (2004-09-08 05:29) [5]

Item := clientList.GetItemAt(X,Y); => Item := ListView1.GetItemAt(X,Y);


 
Fktrc ©   (2004-09-08 13:13) [6]

Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2004.09.26;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.033 c
14-1094817750
nick-from
2004-09-10 16:02
2004.09.26
Outlook express


9-1085844507
Алексей
2004-05-29 19:28
2004.09.26
Набор команды.


1-1094804380
~Shaman~
2004-09-10 12:19
2004.09.26
дата в формате Unix


1-1094562362
Koala
2004-09-07 17:06
2004.09.26
Ошибка в отчете FastReport 2.53


4-1092397878
Сергей В. М.
2004-08-13 15:51
2004.09.26
Извенить текст StatusBar a в чужом приложении.