Вниз
Скачать: CL | DM;

TListView   Найти похожие ветки 

 
Аноним   (2004-04-09 14:36) [0]

Если поставить свойство Checkboxes = true, то возле каждого эл-та появится свой CheckBox. Вопрос - как обработать событие изменения состояния этого самого CheckBox"a?

Спасибо.


 
panov ©   (2004-04-09 14:37) [1]

OnClickCheck


 
Аноним   (2004-04-09 14:41) [2]

Нет там такого обработчика...


 
panov ©   (2004-04-09 14:46) [3]

Точно, ошибся.
Для этой цели есть TCheckListBox.

Либо использовать проверку на изменение при OnClick, например,
проходя в цикле по ListView...


 
Аноним   (2004-04-09 14:48) [4]

TO panov ©[3]

При клике на сам элемент его CheckBox не меняется, для этого нужно кликнуть на него непосредственно...

Как мне быть?


 
SAA   (2004-04-09 15:04) [5]

procedure TForm1.ListViewChange(Sender: TObject; Item: TListItem;
 Change: TItemChange);
begin
if Item.Checked then ShowMessage(Item.Caption+"    Checked")
else ShowMessage(Item.Caption+"    not Checked");

end;


 
Аноним   (2004-04-09 15:11) [6]

TO SAA[5]

Но тогда ShowMessage будет появляться даже в том случае, если мы не изменили CheckBox, что не есть хорошо.


 
Гаврила   (2004-04-09 15:20) [7]

Значит так
нужно обрабатьвать 2 ситуации
1. выделение произошло мышкой
на OnMousDown вызываем GetHitTestInfoAt
если клик произошел именно на области с чек-боксом, в результируещем наборе  будет присутствовать флаг htOnStateIcon

2. Выделение произошло нажатием пробела
соответственно обрабатываем OnKeyDown


 
panov ©   (2004-04-09 15:26) [8]

procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
 Change: TItemChange);
var
 Res: Boolean;
begin
 if Item.Checked<>Boolean(Item.Data) then
 begin
    ShowMessage(Item.Caption+ " Changed!");
    Item.Data := pointer(Boolean(Item.Data)=False);
 end;
end;


 
panov ©   (2004-04-09 15:29) [9]

Да, еще вот это:

procedure TForm1.FormCreate(Sender: TObject);
var
 i: Integer;
begin
 for i := 0 to ListView1.Items.Count-1 do Pointer(ListView1.Items[i].Checked);

end;


 
panov ©   (2004-04-09 15:30) [10]

for i := 0 to ListView1.Items.Count-1 do ListView1.Items[i].Data := Pointer(ListView1.Items[i].Checked);


 
Аноним   (2004-04-09 15:30) [11]

TO panov ©[8]

Прибольшой сенкс.


 
SAA   (2004-04-09 15:35) [12]

TO panov ©[8]
Мозг однако :))



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.023 c
7-1077998713
ZeBriD
2004-02-28 23:05
2004.04.25
XP и спящий режим


3-1080305451
Users
2004-03-26 15:50
2004.04.25
Фильтрация по неск-м значениям поля


14-1081168443
senator
2004-04-05 16:34
2004.04.25
Как получить хендел окна текущего приложения?


11-1064815249
bfg1000ke
2003-09-29 10:00
2004.04.25
Реестр


14-1080584908
Piter
2004-03-29 22:28
2004.04.25
Подскажите программу для изготовления Setup ов




   Наверх