Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.055 c
1-1094827882
redlord
2004-09-10 18:51
2004.09.26
пауза


3-1093525674
REA
2004-08-26 17:07
2004.09.26
Каскадное удаление дерева


1-1094708202
Layner
2004-09-09 09:36
2004.09.26
Как узнать, что PopupMenu закрылся?


1-1094884314
demidofff
2004-09-11 10:31
2004.09.26
Самый быстрый алгоритм поиска в TStringList


14-1094152253
_silver
2004-09-02 23:10
2004.09.26
Скоро ехать на военную кафедру.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский