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

Вниз

Hint для TreeView   Найти похожие ветки 

 
Новик   (2003-09-12 14:18) [0]

Ув. мастера. Помогите решить проблемку. Есть TreeView, надо
для каждого Item"a вывести свой Hint. Кажется все просто: прописываю Application.OnShowHint, в TreeView1OnMouseMove пишу следующее:
var
P:TPoint;
begin
Application.HideHint;
P.X:=X;
P.Y:=Y;
P:=TreeView1.ClientToScreen(P);
Application.ActivateHint(P);
end;
В WinXP код работает нормально. Но в 2000 или NT4 подсказка по ActivateHint не возникает. Почему и как заставить код работать?


 
Verg ©   (2003-09-12 14:30) [1]

procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var Tn : TTreeNode;
begin
Tn:=(Sender as TTreeView).GetNodeAt(X,Y); // Так получаешь "над каким" мышь
if Tn<>nil and
Tn<>OldTn then // OldTn : TTreeNode - поле формы
begin
OldTn:=Tn;
Application.CancelHint;
TreeView1.Hint:=Tn.Text; // ну например
end;

end;


 
Verg ©   (2003-09-12 14:39) [2]

Не, че-то не то, попробовать негде...
Вроде так:

procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var Tn : TTreeNode;
begin
Tn:=(Sender as TTreeView).GetNodeAt(X,Y); // Так получаешь "над каким" мышь
if (Tn<>OldTn) then // OldTn : TTreeNode - поле формы
begin
OldTn:=Tn;
if Tn<>nil then
begin
Application.CancelHint;
TreeView1.Hint:=Tn.Text; // ну например
end else TreeView1.Hint:="";
end;
end;


 
Новик   (2003-09-12 17:40) [3]

Не работает у меня этот код. Да и разве CancelHint не значит отменить вывод подсказки?


 
Verg ©   (2003-09-13 15:34) [4]

А у меня работает...

Грустно, правда?

При этом стопудово работает.

А если не трогать

> Application.OnShowHint

???


> Да и разве CancelHint не значит отменить вывод подсказки?


Значит.:))
ну не навсегда же!


 
Новик   (2003-09-15 11:20) [5]

Наверное я недоформулировал вопрос. Фишка не в том, чтобы
при наведении мыша на TreeView показать одиночную посказку, нужно чтобы при движении по компоненту над каждым узлом отображалась подсказка. Если кому-нибудь еще это понадобится привожу решение (почти сам догадался):
procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Rect:TRect;
Node:TTreeNode;
P:TPoint;
begin
Node:=TreeView1.GetNodeAt(X,Y);
if Node=OldNode then exit;
OldNode:=Node;
if OldNode=NIL then exit;
if HintWindow<>NIL then
HintWindow.ReleaseHandle;
HintWindow:=THintWindow.Create(self);
Rect:=HintWindow.CalcHintRect(200,"Ваш текст",NIL);
P:=TreeView1.ClientToScreen(Point(X,Y));
Rect.Top:=Rect.Top+P.Y;
Rect.Bottom:=Rect.Bottom+P.Y;
Rect.Left:=Rect.Left+P.X;
Rect.Right:=Rect.Right+P.X;
HintWindow.ActivateHint(Rect,"Ваш текст");
end;
Это работает везде.


 
ЮРИЙ_К ©   (2003-09-15 11:33) [6]

Здесь если использовать стандартный хинт, то нужно ешшо регулировать скорость показа самого хинта, а если передвигать зверя мышиного по дереву быстро, то и он вааще не появится 8-).
Сам только закончил ковырять эту проблему.
>> Новик Если очень нужно, пиши на мыло, вышлю код обработки



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

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

Наверх




Память: 0.48 MB
Время: 0.026 c
3-82072
SkullNet
2003-09-05 21:11
2003.09.25
Фильтрация и TableName.RecNo


7-82508
Jumbo
2003-07-13 14:26
2003.09.25
Windows RUS/ENG


3-82112
Relaxoid
2003-09-04 16:54
2003.09.25
Помогите с запросом, пожалуйста


3-82155
Васёк
2003-09-03 17:15
2003.09.25
Установка нескольких BDE на одной машине


14-82501
Rouse_
2003-08-31 04:46
2003.09.25
Перепись (Уже нормальная)