• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

ListView

  • Автор темы DriveSoftware
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

DriveSoftware

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

admin

DriveSoftware
Элементарно, Ватсон.
Я как-то уже бился наж этой задачкой.
Вот код.

Событие OnMouseUp на ListView

Код:
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;

Ну есть ясна я думаю.
 
D

DriveSoftware

Серёга

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

Код:
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;
 
A

admin

DriveSoftware
Ну если работает :) То замечательно. Хотя могли бы сделать и событие onCheckBoxClick чтоль. Трудно им чтоль было?
 
G

Guest

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

Barmutik

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

Код:
Change: TItemChange

В котором и говорится когда происходит изменение состояние чекбокса...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!