Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Вниз

Выделение в TreeView   Найти похожие ветки 

 
Димыч ©   (2007-01-25 10:51) [0]

Не пойму как сделать следующее: Не обходимо при клике по элементу Treeview его иконка изменялась с первой на вторую (это я реализовал легко), а вот как сделать так чтобы при повторном клике по томуже элементы его иконка вернулась вы исходное состояние я незнаю.

Вот так произвожу изменение с 1 иконки на 2ую:
procedure TForm10.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if node.StateIndex =3 then node.StateIndex:=2 else node.StateIndex :=3;
end;

при повторном клике того же элемента данное событие естественно не срабатывает, так как узнать что был произведен клик по уже выделеному элементу?


 
Elen ©   (2007-01-25 10:55) [1]


> Димыч

попробуй так :

procedure TForm10.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if node.StateIndex =3 then begin node.StateIndex:=2; Exit end;
if node.StateIndex =2 then node.StateIndex :=3;
end;


 
stone ©   (2007-01-25 10:55) [2]

Странный ты какой-то. Говоришь про клики (OnClick), а обрабатываешь OnChange


 
Димыч ©   (2007-01-25 11:00) [3]

Elen, так то же неполучается :(

Stone, обрабатываю я только Onchange (ты прав), да только он не срабатывает при повтормон выделении элемента (в связи с чем у меня не происходит изменение иконки). Интуитивно я догадываюсь что тут нужно задействовать еще одно событие типа Onclick (только как в Onclik"е узнать по какому элементу кликнули)


 
Elen ©   (2007-01-25 11:01) [4]


> только как в Onclik"е узнать по какому элементу кликнули

TreeView1.Selected.
Точно OnClick обрабатывай.


 
stone ©   (2007-01-25 11:03) [5]


>  да только он не срабатывает при повтормон выделении элемента

Потому что ничего не меняется

> только как в Onclik"е узнать по какому элементу кликнули

Selected
только не забудь проверять его на nil


 
TRUNK ©   (2007-01-25 11:08) [6]

Попробуй так:

procedure TForm10.TreeView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
if (TreeView1.Selected.StateIndex = 3) then
 TreeView1.Selected.StateIndex := 2
else
 if (TreeView1.Selected.StateIndex = 2) then
   TreeView1.Selected.StateIndex := 3;
end;


 
Димыч ©   (2007-01-25 11:17) [7]

Всем спасибо, все работает! :)

Elen ты как всегда пришла первая на помощь, отдельное спасибо


 
Elen ©   (2007-01-25 11:30) [8]


> Димыч

И как всегда не обратила внимание на то что ты обрабатываеш OnChange.
Stone лучше поблагодари.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.02.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.061 c
2-1169625903
dest81
2007-01-24 11:05
2007.02.11
sql и *.txt


15-1169201634
Жук
2007-01-19 13:13
2007.02.11
Надёжность поставщика


2-1169312672
NikNet
2007-01-20 20:04
2007.02.11
Как предварительно назначить именна DBGrid колонкам


2-1169238783
creator
2007-01-19 23:33
2007.02.11
Установка проги из сети


2-1169404773
Гость_
2007-01-21 21:39
2007.02.11
property & var





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