Главная страница
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.017 c
3-48418
val_5
2003-08-24 23:09
2003.09.15
Не вводятся русск буквы в БД


1-48636
Fuelfire
2003-09-02 18:31
2003.09.15
Шрифт приложения


1-48528
dataMaster
2003-09-02 12:06
2003.09.15
Как в ComboBox отключить какой-нибудь пукнт


14-48705
Vlad Oshin
2003-08-28 12:23
2003.09.15
Про адресацию сетей


1-48570
Evgeniy_K
2003-09-04 11:19
2003.09.15
Хук на F1