Главная страница
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.022 c
1-82284
Vinter
2003-09-15 07:14
2003.09.25
как добавить свою надпись в строку состояния Internet Explorer a


1-82228
DROZD
2003-09-11 09:03
2003.09.25
Морфология руского


3-82082
Tommy
2003-09-04 16:02
2003.09.25
ADO


4-82565
Сергеич
2003-07-25 08:38
2003.09.25
Данные из другой программы


14-82413
Карелин Артем
2003-09-08 16:08
2003.09.25
Удаленный доступ. Сервер.