AGB  ·  Datenschutz  ·  Impressum  







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

Textgröße (Windows 11, Barrierefreiheit)

Ein Thema von looseleaf · begonnen am 21. Aug 2023 · letzter Beitrag vom 23. Aug 2023
Antwort Antwort
looseleaf

Registriert seit: 25. Mai 2011
69 Beiträge
 
#1

Textgröße (Windows 11, Barrierefreiheit)

  Alt 21. Aug 2023, 16:19
Liebe Gemeinde!

In Windows 11 gibt es zusätzlich zum Zoom eine Einstellung der Textgröße, die von 100%-225% eingestellt werden kann. Wie kan ihc in Delphi auslesen, auf welchem Wert diese Einstellung steht?

Konkret: Wir habe in OnMeasureItem Event für TMenuItems, die das Manü anders zeichnet.

Liebe Grüße
Stefan
  Mit Zitat antworten Zitat
tomkupitz

Registriert seit: 26. Jan 2011
339 Beiträge
 
Delphi 12 Athens
 
#2

AW: Textgröße (Windows 11, Barrierefreiheit)

  Alt 22. Aug 2023, 09:17
Hallo,

habe das mal gefunden:

Code:
function GetUserFontPreference(var FaceName: string; var PixelHeight: Integer): Boolean;
var lf: LOGFONT;

begin
  ZeroMemory(@lf, SizeOf(lf));

  if SystemParametersInfo(SPI_GETICONTITLELOGFONT, sizeof(lf), @lf, 0) then
  begin
    FaceName:=PChar(Addr(lf.lfFaceName[0]));
    PixelHeight:=lf.lfHeight;

    result:=True;
  end
  else
    result:=False;
end;

//

procedure TForm1.FormCreate(Sender: TObject);
var FontHeight: Integer;
    FontFace: string;

begin
  if GetUserFontPreference(FontFace, FontHeight) then
  begin
    Font.Name:=FontFace;
    Font.Height:=FontHeight;
  end;
end;
Beste Grüße
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Textgröße (Windows 11, Barrierefreiheit)

  Alt 22. Aug 2023, 09:45
Falls Du Interesse hast von einem graphischen Objekt die gebrauchten Dimensionen auf dem Bildschirm zu erfahren, so mache ich das:
Delphi-Quellcode:
function GetFontSize(const AText: String; const AFont: TFont; out AWidth, AHeight: Integer): Boolean;
var
  LBMP: TBitmap;
begin
  Result := False;
  AWidth := 0;
  AHeight := 0;
  LBMP := TBitmap.Create;
  try
    LBMP.Canvas.Font.Assign(AFont);
    AWidth := LBMP.Canvas.TextWidth(AText);
    AHeight := LBMP.Canvas.TextHeight(AText);
    Result := ((AWidth <> 0) or (AHeight <> 0));
  finally
    LBMP.Free;
  end;
end;
Die Argumente kurz erklärt:
- AText = dein string von dem Du die Dimensionen benötigst
- AFont = deine verwendete Font
- AWidth = Rückgabe der Breite
- AHeight = Rückgabe der Höhe

LG, KodeZwerg.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
591 Beiträge
 
Delphi XE6 Enterprise
 
#4

AW: Textgröße (Windows 11, Barrierefreiheit)

  Alt 22. Aug 2023, 09:51
Hallo,
habe das mal gefunden:
Beste Grüße
Delphi ermittelt das selbst in TScreen und speichert es in der Property IconFont.
  Mit Zitat antworten Zitat
Aliquis

Registriert seit: 26. Jun 2011
Ort: Grafschaft Bentheim
23 Beiträge
 
Delphi 12 Athens
 
#5

AW: Textgröße (Windows 11, Barrierefreiheit)

  Alt 22. Aug 2023, 11:54
Falls du nicht die Fontgröße, sondern die eingestellte Skalierung (bei mir z.B. 175) wissen willst, hilft vielleicht so etwas:
Delphi-Quellcode:
function GetFontScaling(Handle: THandle): Integer;
begin
  var Monitor := Screen.MonitorFromWindow(Handle);
  { var Monitor := Screen.MonitorFromPoint(Pnt);
    var Monitor := Screen.MonitorFromRect(Rect);
  }

  Result := Round(Monitor.PixelsPerInch*100/96);
end;
Voraussetzung dafür ist, dass die Anwendung DPI aware ist (Projektoptionen, Anwendung, Manifest).

Gruß G.
Georg
  Mit Zitat antworten Zitat
looseleaf

Registriert seit: 25. Mai 2011
69 Beiträge
 
#6

AW: Textgröße (Windows 11, Barrierefreiheit)

  Alt 23. Aug 2023, 16:33
Danke für eure Antworten, ich schau mir mal IconFont an.
[...]
Es ist noch einfacher. Die FontSize, die an der fraglichen Stelle daherkommt, ist bereits so skaliert, wie sie sein sollte.

LKeider berechnet Delphi 11 in CreateMessageForm die Breiten von Popup-Messages anders, als in D10, sodass Texte, die sich bisher bei STandardeinstellungen gut ausgingen, plötzlich blöd umbrechen. Aber das ist ein anderes Thema
  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 18:39 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