Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi VirtualStringTree - Fontgrösse hochdrehen (https://www.delphipraxis.net/172655-virtualstringtree-fontgroesse-hochdrehen.html)

ralfiii 16. Jan 2013 00:05

VirtualStringTree - Fontgrösse hochdrehen
 
Hallo!
Ich hab hier eine kleine App in der Daten (=Text) in einem Grid (=ein VirtualTreeView) dargestellt werden.
Ich möchte nun dem Benutzer die Möglichkeit geben, den Font für das Grid einzustellen - primär weil auf machen High-Res-Bildschirmen der Font doch recht winzig wird.

Wenn ich nun einfach mit VST.Font.Assign(FontDialog1.Font); den neuen Font zuweise, dann wird der Text grösser in die unverändert kleinen Zellen gemalt - eher unschön :)

Ich hab also versucht dann VST.DefaultNodeHeight hochzudehen. Das macht erstmal auch nichts vernünftiges, wenn ich allerdings durch das Grid scrolle von unten nach oben scrolle, dann werden die Zellen bei denen ich gerade war schön gross und bleiben das auch.
Scrolle ich allerdings wieder nach unten werden wieder alle besuchten Zellen klein. Misteriös.

Wie ist da die richtige Vorgehensweise?

Danke,
Ralf

Lemmy 16. Jan 2013 07:10

AW: VirtualStringTree - Fontgrösse hochdrehen
 
Guten Morgen,

versuch mal folgendes:

Delphi-Quellcode:
VST.Font.Assign(FontDialog1.Font);
VST.Invalidate;
dann implementierst Du das OnMeasureItem:

Delphi-Quellcode:
    TargetCanvas.Font := Sender.Font;
    NodeHeight := vstProtokoll.ComputeNodeHeight(TargetCanvas, Node, 3);
das sollte eigentlich funktionieren...

GRüße

ralfiii 16. Jan 2013 08:59

AW: VirtualStringTree - Fontgrösse hochdrehen
 
Zitat:

Zitat von Lemmy (Beitrag 1199215)
das sollte eigentlich funktionieren...

Leider nein.
OnMeasureItem wird beim erstmaligen Aufbau das Grids aufgerufen, nicht aber wenn ich die Fontgrösse verändere und auch nicht bei Invalidate.

Gollum 16. Jan 2013 09:52

AW: VirtualStringTree - Fontgrösse hochdrehen
 
Hallo,

dann setze in den TreeOptions.MiscOptions entweder toNodeHeighResize oder toVariableNodeHeight oder beide zusammen.

ralfiii 20. Feb 2013 10:22

AW: VirtualStringTree - Fontgrösse hochdrehen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Gollum (Beitrag 1199229)
dann setze in den TreeOptions.MiscOptions entweder toNodeHeighResize oder toVariableNodeHeight oder beide zusammen.

Hilft alles leider nicht.
Im Anhang eine kleine Applikation.
Einfach starten, einen grösseren Font auswählen und ... es schlägt fehl :(

Gollum 20. Feb 2013 14:11

AW: VirtualStringTree - Fontgrösse hochdrehen
 
Hallo,

ich kann das Verhalten, aufgrund Deines Beispiels, nachvollziehen.
Was mich wundert ist, dass totz Invalidate das Ereignis OnMeasureItem nicht mehr aufgerufen wird. Ich vermute einmal das könnte ein Bug im VST sein.
Am besten Du postest Dein Problem auf der Project-Homepage.

ralfiii 25. Feb 2013 10:10

AW: VirtualStringTree - Fontgrösse hochdrehen
 
Hier gepostet:
http://support.soft-gems.net/forums/...hp?p=5447#5447
Mal sehen...

ralfiii 11. Mär 2013 13:31

AW: VirtualStringTree - Fontgrösse hochdrehen
 
Beim verträumten Durchlesen vom VirtualTreeView Quellcode über die Lösung gestolpert. Man muss die Nodes als "noch nicht Höhenvermessen" markieren:

Delphi-Quellcode:
procedure TForm1.butNewFontClick(Sender: TObject);
var Node : PVirtualNode;
begin
     if FontDialog1.Execute then
     begin
          VST.Font.Assign(FontDialog1.Font);

          Node:=VST.GetFirst;
          while Node<>nil do
          begin
               exclude(Node.States, vsHeightMeasured);
               Node:=VST.GetNext(Node)
          end;

          VST.Invalidate;
     end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz