Если поставить свойство Checkboxes = true, то возле каждого эл-та появится свой CheckBox. Вопрос — как обработать событие изменения состояния этого самого CheckBox'a?
Здравствуйте, Аноним, Вы писали:
А>Если поставить свойство Checkboxes = true, то возле каждого эл-та появится свой CheckBox. Вопрос — как обработать событие изменения состояния этого самого CheckBox'a?
А>Спасибо.
OnChange или OnChanging
Здравствуйте, nim, Вы писали:
nim>Здравствуйте, Аноним, Вы писали:
А>>Если поставить свойство Checkboxes = true, то возле каждого эл-та появится свой CheckBox. Вопрос — как обработать событие изменения состояния этого самого CheckBox'a?
А>>Спасибо. nim>OnChange или OnChanging
Не-а. Так будет обрабатываться при каждом Change даже если мы не изменили CheckBox
Здравствуйте, <Аноним>, Вы писали:
А>Если поставить свойство Checkboxes = true, то возле каждого эл-та появится свой CheckBox. Вопрос — как обработать событие изменения состояния этого самого CheckBox'a?
А>Спасибо.
В обработчике OnMouseDown(Up):
if htOnStateIcon in ListView1.GetHitTestInfoAt(X, Y) then
ShowMessage('Good!');
Здравствуй, Аноним, ты писал:
А>Если поставить свойство Checkboxes = true, то возле каждого эл-та появится свой CheckBox. Вопрос — как обработать событие изменения состояния этого самого CheckBox'a?
Глянь на этот код:
procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin//Вывод индекса и заголовка элемента
label1.Caption:=IntToStr(Item.Index)+' '+Item.Caption+':';
//Бывают три вида изменения состояния элементаcase Change of
ctText: label1.Caption:=label2.Caption+' Text'; //Его текст
ctImage: label1.Caption:=label2.Caption+' Image'; //Картинка
ctState: label1.Caption:=label2.Caption+' Status'; //Статус (В т.ч. и CheckBox)end;
//Ну и, собственно, оно:if Item.Checked then
label1.Caption:=label2.Caption+' Checked'else
label1.Caption:=label2.Caption+' UNChecked';
end;
Здравствуйте, Satrapp, Вы писали:
S>Здравствуйте, <Аноним>, Вы писали:
А>>Если поставить свойство Checkboxes = true, то возле каждого эл-та появится свой CheckBox. Вопрос — как обработать событие изменения состояния этого самого CheckBox'a?
А>>Спасибо.
S>В обработчике OnMouseDown(Up): S>
S> if htOnStateIcon in ListView1.GetHitTestInfoAt(X, Y) then
S> ShowMessage('Good!');
S>
Не, вот так гораздо круче
procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange);
begin
if Item.Checked<>Boolean(Item.Data) then begin
ShowMessage(Item.Caption+ ' Changed!');
Item.Data := pointer(Boolean(Item.Data)=False);
end;
end;