Главная страница
    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-48446
DelphiM
2003-08-25 10:27
2003.09.15
Grid


3-48450
Nestor
2003-08-26 14:44
2003.09.15
Проблема при выводе в Label


4-48837
mxsb
2003-07-16 12:07
2003.09.15
Как записать из запущенной проги в ее же exe-шник?


3-48397
Lina
2003-08-26 12:17
2003.09.15
Поиск по 2 полям


14-48772
Xoy
2003-08-25 11:53
2003.09.15
игры под WinXP





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский