Главная страница
    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.039 c
1-1081334577
}|{yk
2004-04-07 14:42
2004.04.25
Об интернационализации


7-1077712585
DuhcmanSoft
2004-02-25 15:36
2004.04.25
Как запустить прогу с возможностью работать в своём приложени?


14-1081104438
VID
2004-04-04 22:47
2004.04.25
Кеш винта не успевает сбросится на диски


14-1081144441
[BAD]Angel
2004-04-05 09:54
2004.04.25
Как узнать размер пакета?


6-1077828231
Pavel
2004-02-26 23:43
2004.04.25
IP





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский