TCustomTreeView::ToolTips
-
Hallo,
möchte folgendes realisieren:
In einer TreeView sind alle Länder eingetragen. Fährt man mit der Maus
über die Einträge, wird als Hint die Vorwahl des Landes angezeigt. Laut
Hilfe müsste dieses Feature Tooltip heißen, aber wie verwendet man das?
Bisher zeigt das olle Teil einen Hint immer nur wenn man die TreeView
mal wieder verlassen hat und nicht, wenn man über einen neuen Eintrag
fährt.Wer weiß da Bescheid?
Danke
-
Hallo,
soweit ich weiß bezieht sich der Hint nur auf den ganzen TreeView nicht aber auf einen einzelnen Eintrag.
Man könnte aber folgendes versuchen:void __fastcall TreeView::MouseMove(Classes::TShiftState Shift, int X, int Y) { TTreeNode *node = GetNodeAt(X, Y); // Hier muß nun festgestellt werden welche Nummer dargestellt werden soll // z.B. if (node->Text == "Hamburg") Hint = "040"; // kann sein das man das Anzeigen des Fensters noch "starten" muß Application->ShowHint = true; // oder so }
probiert habe ich das nicht, aber kann man mal versuchen, dazu noch die Hilfe von TControl::Hint durchlesen.
mfg SoftHall
-
Das hatte ich auch schon versucht.
Das Problem:
ShowHint ist keine Methode zum Aufrufen (und neueinblenden) der Hilfe,
was hier aber nötig wäre. Stellt sich also die Frage:Kann ich das anzeigen der Hilfe "updaten", ohne das Steuerelement zu
verlassen?
-
Hallo,
Versuch doch mal folgendes.
Wenn ein Hint aufgerufen wird, wird das Ereignis OnHint der Application ausgelöst. Dann stellst du das Control und die Mausposition fest und schreibst den richtigen Text rein.Ciao
-
hallo und danke für die mitarbeit.
für alle interessierten hier des rätsels lösung:(als hilfetext wird zur demo der name des baumeintrags angezeigt)
//--------------------------------------------------------------------------- void __fastcall TfrmMain::FormCreate(TObject *Sender) { Application->ShowHint = true; Application->OnShowHint = DoShowHint; Application->HintPause = 10; } //--------------------------------------------------------------------------- void __fastcall TfrmMain::DoShowHint(System::AnsiString &HintStr, bool &CanShow, THintInfo &HintInfo) { if (HintInfo.HintControl->ClassNameIs("TTreeView")) { HintInfo.HintMaxWidth = 200; HintInfo.HintPos.x += 10; HintInfo.ReshowTimeout = 50; } } //--------------------------------------------------------------------------- void __fastcall TfrmMain::TreeViewMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if (Sender->ClassNameIs("TTreeView")) { TTreeNode *Node; Node = ((TTreeView*)Sender)->GetNodeAt(X, Y); if (Node == NULL) { ((TTreeView*)Sender)->ShowHint = false; } else { ((TTreeView*)Sender)->Hint = Node->Text; ((TTreeView*)Sender)->ShowHint = true; } } } //---------------------------------------------------------------------------
was es jetzt allerdings mit TTreeView::ToolTips auf sich hat...
gruß danny