Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

HotTrack в TreeView   Найти похожие ветки 

 
Alex870   (2004-08-27 14:55) [0]

Здравствуйте!
У меня такая проблема с TreeView: в его свойствах (в дизайнтайме) я поставил Hottrack = true и когда двигаешь по Nod"ам они подсвечиваются как гиперссылки, и я хочу, на событие подсвечивания делать определенное действие
на событие OnAdvancedCustomDrawItem я пишу

type
...
List : TTreeView;
...
procedure TForm1.ListAdvancedCustomDrawItem(Sender: TCustomTreeView;
 Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
 var PaintImages, DefaultDraw: Boolean);
begin
if (cdsHot in State) then ...действие
end;

так вот если вести мышь вверх по TreeView это работает, а если вниз, то (cdsHot in State) = False; Кто знает почему? Зарание спасибо!


 
GuAV ©   (2004-08-27 15:13) [1]

Проверь это:
if (cdsHot in State) then Caption:=Node.Text;

Учти, что он должен перерисовать и ту с которой снят выбор также. Отсюда и False.


 
Alex870   (2004-08-27 16:45) [2]

Да, я согласен, что Node.Text работает при перемещении и вверх и вниз, однако у меня задача, чтобы в StatusBar выводилась информация о выбранной Nod"e, а если мышь не на одной из Node, то StatusBar должен быть пуст, вот я и хочу поймать момент, когда Note подсвечена, а когда нет. А за внимание к вопросу большое спасибо!


 
GuAV ©   (2004-08-27 17:34) [3]

var SelNode: TTreeNode;

procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
 Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
 var PaintImages, DefaultDraw: Boolean);
begin
 if (cdsHot in State) then
   SelNode:=Node
 else if SelNode=Node then
   SelNode:=nil;
 if SelNode=nil then
   Caption:="Ничё не выбрано"
 else
   Caption:=Format("Выбрана №%d ""%s""",
     [SelNode.Index,SelNode.Text]);
end;


 
Alex870   (2004-08-28 10:22) [4]

Спасибо, отличный пример, однако у меня результат получился тот же. Т.е. ведешь указатель мыши вниз по Nod"ам - всё работает, а вот если снизу вверх, то в Caption "Ничё не выбрано".


 
GuAV ©   (2004-08-28 14:57) [5]

Alex870   (28.08.04 10:22) [4]
У меня работает. Точно Ctrl+C, Ctrl+V правильно? var SelNode: TTreeNode; - глобальная?


 
Alex870   (2004-08-29 20:17) [6]

Уточните пожалуйста, какой версией Delphi Вы пользуетесь. Дело в том, что я перешел с 5-й на 6-ю только из-за багов в этом компоненте, в 5-й бвли ограничения на TNode.text, по моему, 80 знаков. Может быть вы пользуетесь версией выше 6-й. Но если у вас этот код корректно работает в 6-й Delphi (при перемещении снизу вверх по нодам высвечиваются их параметры, а не надпись "Ничё не выбрано"), значит это я дурак, и буду искать свои ошибки. И ещё, большое спасибо за помощь!!!


 
GuAV ©   (2004-08-29 20:19) [7]


> Может быть вы пользуетесь версией выше 6-й.

у меня D7.


 
Alex870   (2004-08-30 17:34) [8]

Поставил Delphi7 и всё отлично заработало! Большое спаибо GuAV!Интересно, кто писал этот удивительный компанент, из-за которого я поменял 2 версии Delphi, а то бы так до сихпор и сидел на 5-й :)


 
GuAV ©   (2004-08-30 17:39) [9]


> из-за которого я поменял 2 версии Delphi, а то бы так до
> сихпор и сидел на 5-й :)

Интересно.
Вообще то имхо это не повод покупать новую версию. Попробую проверить в Д6.



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

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
3-1092745686
MadGhost
2004-08-17 16:28
2004.09.12
DBGrid multiselect как узнать список который выбрали?


4-1091009479
Deker
2004-07-28 14:11
2004.09.12
Работа с приложениями в памяти


14-1093259511
Jenek
2004-08-23 15:11
2004.09.12
Поместить программу в меню Windows


14-1092981849
Qwer
2004-08-20 10:04
2004.09.12
Delphi 7 + CR9 !!!


6-1088671486
sergg
2004-07-01 12:44
2004.09.12
Определение прав доступа к файлу БД