AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree - Fontgrösse hochdrehen

Ein Thema von ralfiii · begonnen am 16. Jan 2013 · letzter Beitrag vom 11. Mär 2013
Antwort Antwort
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#1

VirtualStringTree - Fontgrösse hochdrehen

  Alt 16. Jan 2013, 00:05
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
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: VirtualStringTree - Fontgrösse hochdrehen

  Alt 16. Jan 2013, 07:10
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
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#3

AW: VirtualStringTree - Fontgrösse hochdrehen

  Alt 16. Jan 2013, 08:59
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.
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: VirtualStringTree - Fontgrösse hochdrehen

  Alt 16. Jan 2013, 09:52
Hallo,

dann setze in den TreeOptions.MiscOptions entweder toNodeHeighResize oder toVariableNodeHeight oder beide zusammen.
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#5

AW: VirtualStringTree - Fontgrösse hochdrehen

  Alt 20. Feb 2013, 10:22
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
Angehängte Dateien
Dateityp: zip VSTFontHeight.zip (2,2 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: VirtualStringTree - Fontgrösse hochdrehen

  Alt 20. Feb 2013, 14:11
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.
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#7

AW: VirtualStringTree - Fontgrösse hochdrehen

  Alt 25. Feb 2013, 10:10
Hier gepostet:
http://support.soft-gems.net/forums/...hp?p=5447#5447
Mal sehen...
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#8

AW: VirtualStringTree - Fontgrösse hochdrehen

  Alt 11. Mär 2013, 13:31
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;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 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