TListView
От: Аноним  
Дата: 09.04.04 11:06
Оценка:
Если поставить свойство Checkboxes = true, то возле каждого эл-та появится свой CheckBox. Вопрос — как обработать событие изменения состояния этого самого CheckBox'a?

Спасибо.
Re: TListView
От: nim  
Дата: 09.04.04 11:25
Оценка:
Здравствуйте, Аноним, Вы писали:

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


А>Спасибо.

OnChange или OnChanging
Re[2]: TListView
От: Аноним  
Дата: 09.04.04 11:32
Оценка: -1
Здравствуйте, nim, Вы писали:

nim>Здравствуйте, Аноним, Вы писали:


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


А>>Спасибо.

nim>OnChange или OnChanging

Не-а. Так будет обрабатываться при каждом Change даже если мы не изменили CheckBox
Re: TListView
От: Satrapp Россия  
Дата: 09.04.04 12:35
Оценка:
Здравствуйте, <Аноним>, Вы писали:

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


А>Спасибо.


В обработчике OnMouseDown(Up):
  if htOnStateIcon in ListView1.GetHitTestInfoAt(X, Y) then
    ShowMessage('Good!');
... << RSDN@Home 1.1.0 stable >>
Re: TListView
От: hhckk Россия hck.nm.ru
Дата: 09.04.04 17:35
Оценка:
Здравствуй, Аноним, ты писал:

А>Если поставить свойство 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;


пока
-=hck=-
Re[2]: TListView
От: Ozone Россия  
Дата: 12.04.04 09:43
Оценка:
Здравствуйте, 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;
Re[3]: TListView
От: Satrapp Россия  
Дата: 12.04.04 10:02
Оценка:
Здравствуйте, Ozone, Вы писали:

O>Не, вот так гораздо круче


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


А если в Data лежит то, что нам менять совсем не хотелось бы?
... << RSDN@Home 1.1.0 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.