Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c