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

Вниз

Хинт на TreeView после себя сильно мусорит.   Найти похожие ветки 

 
ЮРИЙ_К ©   (2003-09-01 14:57) [0]

При прохождении по дочерним веткам дерева появляется хинт, расшифровывающий некоторое значение, относящееся к этой ветке (задумка в программе). Так вот после его перемещения, затирается содержимое TreeView размером этого хинта. Как это можно предотвратить? Если кому не совсем понятно, могу на мыло кинуть картинку этой неприятности.


 
Song ©   (2003-09-01 15:16) [1]

Попробуй убрать стандартные хинты и сделать свои (THintWindow)


 
Galera ©   (2003-09-01 17:24) [2]

Как реализовал показ хинта к конкретной ветке?
Код в студию:
(не долж"он ничего он затирать, ой не долж"он)
а со своими хинтами больше париться, можно сделать проще


 
Song ©   (2003-09-01 20:34) [3]


> Как реализовал показ хинта к конкретной ветке?


По координатам мыши и методу TTreeView.GetNodeAt()


 
ЮРИЙ_К ©   (2003-09-01 21:24) [4]

Во как:
...
private
FTreeItemHintWnd: THintWindow;
FHintShow: Boolean;

constructor TPutListFrm.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FTreeItemHintWnd := THintWindow.Create(nil);
FTreeItemHintWnd.Color := clInfoBk;
end;

destructor TPutListFrm.Destroy;
begin
if Assigned(FTreeItemHintWnd) then
FreeAndNil(FTreeItemHintWnd);
// inherited Destroy; <- не закоментируешь - ОШИБКУ выдает
end;

procedure TPutListFrm.TreeView1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
rcHint, rcHintBounds: TRect;
trvNode: TTreeNode;
s : String;
begin
s := "";
if FHintShow then FTreeItemHintWnd.ReleaseHandle;
if htOnItem in TreeView1.GetHitTestInfoAt(X, Y) then
begin
trvnode := TreeView1.GetNodeAt(X, Y);
if Assigned(trvNode) and (trvNode.Data <> nil) then
begin
MehFindTbl.FindKey([Integer(trvNode.Data)]);
s := "Гос. № - " + MehFindTblGosNom.AsString + #13 +
"Гар. № - " + MehFindTblGarNom.AsString;
rcHintBounds := FTreeItemHintWnd.CalcHintRect(200, s, nil);
SetRect(rcHint, X + 16, Y, X + 16 + rcHintBounds.Right -
rcHintBounds.Left, Y + rcHintBounds.Bottom - rcHintBounds.Top);
Windows.ClientToScreen(TreeView1.Handle, rcHint.TopLeft);
Windows.ClientToScreen(TreeView1.Handle, rcHint.BottomRight);
FTreeItemHintWnd.ActivateHint(rcHint, s);
FHintShow := False;
end
else
if Assigned(FTreeItemHintWnd) then
FTreeItemHintWnd.ReleaseHandle;
end
else FTreeItemHintWnd.ReleaseHandle;
end;

procedure TPutListFrm.FormDestroy(Sender: TObject);
begin
if Assigned(FTreeItemHintWnd) then
FreeAndNil(FTreeItemHintWnd);
inherited Destroy;
end;


 
Galera ©   (2003-09-03 07:05) [5]

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

procedure Tfrm_Main.TreeViewMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var Node : TTreeNode;
AHitTest : THitTests;
begin

AHitTest := TreeView.GetHitTestInfoAt(X,Y);
Node:=TreeView.GetNodeAt(X, Y);

if not (htOnIcon in AHitTest)then
begin
TreeView.Tag:=0;
TreeView.Hint:="";
TreeView.ShowHint:=False;
Exit;
end;

if (TreeView.Tag<>Integer(Node.ItemId)) and (TreeView.Hint="") then
begin
TreeView.Tag:=Integer(Node.ItemId);
TreeView.Hint:="Приравнивай чему хочешь";
TreeView.ShowHint:=True;
Exit;
end;

if TreeView.Tag<>Integer(Node.ItemId) then
begin
TreeView.Tag:=0;
TreeView.Hint:="";
TreeView.ShowHint:=False;
Exit;
end;

end;


РЕШЕНИЕ, КАК ГОВОРИТСЯ В ЛОБ,
хинт появляется только тогда, когда мышь на иконкой ветки


 
Galera ©   (2003-09-03 16:47) [6]

constructor TPutListFrm.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FTreeItemHintWnd := THintWindow.Create( Self);
FTreeItemHintWnd.Color := clInfoBk;
end;

Попробуй



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

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

Наверх




Память: 0.48 MB
Время: 0.026 c
3-48412
rulezz
2003-08-26 02:21
2003.09.15
База fox pro 2.6


14-48747
Giemgo
2003-08-26 18:36
2003.09.15
Зачем мы нужны?


1-48579
mfender
2003-09-04 00:42
2003.09.15
как получить список всех компонентов расположенных на форме?


1-48548
cancel
2003-09-02 08:43
2003.09.15
IBX частичный Fetch


14-48723
Gregi
2003-08-27 23:07
2003.09.15
прошу помочь