![]() |
Hintgröße und Anzeigedauer beim TTreeview anpassen
Hallo,
ich möchte in meinem Treeview die Größe der Hints und deren Anzeigedauer anpassen. Das Ganze möglichst ohne eine eigene THintWindow-Klasse. Ich habe folgenden Code:
Code:
Folgende Fragen / Probleme:
unit Unit1;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.AppEvnts; type TForm1 = class(TForm) TreeView1: TTreeView; procedure TreeView1Hint(Sender: TObject; const Node: TTreeNode; var Hint: string); procedure FormCreate(Sender: TObject); private { Private declarations } DefTreeViewWndProc: TWndMethod; procedure TreeViewWndProc(var Message: TMessage); public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses CommCtrl; const cHintWindowSize = 700; procedure TForm1.FormCreate(Sender: TObject); begin DefTreeViewWndProc := TreeView1.WindowProc; TreeView1.WindowProc := TreeViewWndProc; Application.HintHidePause:=30000; Application.HintColor:=clRed; end; procedure TForm1.TreeView1Hint(Sender: TObject; const Node: TTreeNode; var Hint: string); var b: TBitmap; i: Integer; hintline, hintresult: String; begin b:=TBitmap.Create; try b.Canvas.Font.Assign(Screen.HintFont); hintline:=''; hintresult:=''; i:=1; while i<Length(Hint) do begin hintline:=hintline+Copy(Hint, 1, i); if b.Canvas.TextWidth(hintline)>cHintWindowSize then begin if hintresult<>'' then hintresult:=hintresult+#13#10; hintresult:=hintresult+Copy(Hint, 1, i-1); Delete(Hint, 1, i-1); i:=1; hintline:=''; end else Inc(i); end; finally b.Free; end; Hint:=hintresult; end; procedure TForm1.TreeViewWndProc(var Message: TMessage); begin if Message.Msg = WM_NOTIFY then begin with TWMNotify(Message).NMHdr^ do begin if code = TTN_NEEDTEXTW then begin if SendMessage(hwndFrom, TTM_GETMAXTIPWIDTH, 0, 0) = -1 then SendMessage(hwndFrom, TTM_SETMAXTIPWIDTH, 0, cHintWindowSize); end; end; end; DefTreeViewWndProc(Message); end; 1. In der IDE-GUI kann ich für einen Treenode keinen Text länger als 255 Zeichen eingeben. 2. Ich setze die MaxWidth des Toolwindow des Hints auf 700 trotzdem ist das nur ca 200 Pixel breit 3. Das Setzen der HintHidePause und des HintColors hat keinen Effekt Was möchte ich erreichen? 1. Toolwindow soll so breit sein wie der halbe Bildschirm 2. Solange der Benutzer die Maus nicht vom Knoten bewegt soll der Hint 30 Sekunden angezeigt werden. 3. Meinen Hint-Text will ich manuell umbrechen. Stefan |
AW: Hintgröße und Anzeigedauer beim TTreeview anpassen
Das hat sich alles erledigt. Ich würde den Betriag gerne löschen, weiß aber nicht wie das geht...
|
AW: Hintgröße und Anzeigedauer beim TTreeview anpassen
Hallo Stefan,
wie hast Du es geschafft? Wie lautet Deine Lösung? In unserem Forum lernen wir gegenseitig voneinander, indem wir einander helfen. Daher ist ein Löschen der Beiträge nicht vorgesehen, denn irgendjemand wird schon Dein Problem als seines identifizieren und Deine Lösung als eine wertvolle Hilfestellung empfinden. Gruß, Andreas |
AW: Hintgröße und Anzeigedauer beim TTreeview anpassen
Geschafft habe ich gar nichts. :-)
Ich war völlig auf dem falschen Dampfer. Die Kundenanfrage bezog sich auf ein cxGrid von DevExpress. Der Baum hat damit gar nichts zu tun gehabt. ich habe versucht, ein problem zu lösen, das es gar nicht gab... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz