Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-1077203776
Dr.Null
2004-02-19 18:16
2004.04.25
VCL овские свойтва AutoSize и Align на WinAPI


3-1080215520
Fishka
2004-03-25 14:52
2004.04.25
Constraint и Exists


3-1080629375
Daniel
2004-03-30 10:49
2004.04.25
создание DB класса


3-1080635505
Igoryok
2004-03-30 12:31
2004.04.25
MySQL база или как получить доступ


1-1081282711
Leon1234
2004-04-07 00:18
2004.04.25
Почему D6 не позволяет работать с указателями?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский