Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Вниз

Хинт на 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.011 c
3-48462
XMbIPb
2003-08-22 21:11
2003.09.15
Редактировать записи в таблице


14-48727
Любознательный
2003-08-26 16:02
2003.09.15
Перенос веток


6-48668
M@mbet
2003-07-13 20:03
2003.09.15
Копирование текста в TWebBrowser


3-48428
Nikkkkk
2003-08-26 12:43
2003.09.15
Как создать индекс в TQuery


3-48478
AlexTregubov
2003-08-22 15:33
2003.09.15
Запарился я с таблицами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский