ListView

Тема в разделе "Delphi - Система", создана пользователем DriveSoftware, 4 мар 2004.

Статус темы:
Закрыта.
  1. DriveSoftware

    DriveSoftware Гость

    Есть у ListView-а свойство CheckBoxes, если поставить в True на каждом Item-е появляется CheckBox, проблема в том что не могу отловить событие когда изменяют его состояние, как?
     
  2. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    DriveSoftware
    Элементарно, Ватсон.
    Я как-то уже бился наж этой задачкой.
    Вот код.

    Событие OnMouseUp на ListView

    Код (Text):
    var
    ListItemAtCursor:TListItem;
    i:cardinal;
    begin
    ListItemAtCursor:=alarmslist.GetItemAt(X,Y);
    for i := ComponentCount - 1 downto 0 do
     if (Components[i] is TAlarm) and ((Components[i] as TAlarm).Tag=StrToInt(ListItemAtCursor.SubItems[2])) then
     begin
      (Components[i] as TAlarm).Enabled:=ListItemAtCursor.Checked;
     end;
    Ну есть ясна я думаю.
     
  3. DriveSoftware

    DriveSoftware Гость

    Серёга

    Спасибо. Но я зделал по другому =)

    Код (Text):
    CurrentBoxStatus : Boolean; //глобальная

    procedure TForm1.ListView1Changing (Sender: TObject; Item: TListItem;
    Change: TItemChange; var AllowChange: Boolean);
    begin
    CurrentBoxStatus := Item.Checked; // запоминаем значение Item.Checked до того как юзер на нее нажал
    AllowChange := True; // разрешаем ему нажать :)
    end;

    procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange);
    begin
     if Item.Checked <> CurrentBoxStatus then // юзер изменил значение Item.Checked
      begin
      CurrentBoxStatus := Item.Checked; // изменяем значение переменной на новое значение
      { ну а здесь уже делаем че хотим....}
      end;
     
  4. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    DriveSoftware
    Ну если работает :) То замечательно. Хотя могли бы сделать и событие onCheckBoxClick чтоль. Трудно им чтоль было?
     
  5. Guest

    Guest Гость

    Во блин, а в Visual Basic, например, у ListView есть событие ItemCheck! Чего действительно борландовцы кочевряжатся?
     
  6. Barmutik

    Barmutik Гость

    Вообще-то у Борланда это тоже есть... в эвенты OnChange and OnChnaging выведен замечательный параметр

    Код (Text):
    Change: TItemChange
    В котором и говорится когда происходит изменение состояние чекбокса...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей