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 Zeichenbreite verändern (https://www.delphipraxis.net/62772-zeichenbreite-veraendern.html)

cs.rumpelstilzchen 9. Feb 2006 12:08


Zeichenbreite verändern
 
Hallo Leute!

Ich möchte die Zeichenbreite eines Windows-Fonts verändern, finde aber nirgendwo Informationen dazu.

Um Mißverständnissen vorzubeugen: Ich möchte nur die Breite verändern!

Hab das früher schon mal in GFA-BASIC (Kennt das außer mir noch jemand? :lol:) geproggt. Das ging so:

Code:
GETFONT SYSTEM_FONT
FONT "times",HEIGHT 24,WIDTH 10,WEIGHT 800,FAMILY FF_SWISS, QUALITY 2, PITCH FIXED_PITCH TO fnt_13&
FONT "times",HEIGHT 24,WIDTH 12,WEIGHT 800,FAMILY FF_SWISS, QUALITY 2, PITCH FIXED_PITCH TO fnt_12&
FONT "times",HEIGHT 24,WIDTH 23,WEIGHT 800,FAMILY FF_SWISS, QUALITY 2, PITCH FIXED_PITCH TO fnt_14&
Danach konnte man z.B. mittels
Code:
SETFONT fnt_13&
diesen Font benutzen. Mittels
Code:
FREEFONT fnt_13&
konnte man den Font löschen und den Speicher dann wieder freigeben. Die fnt_xx& sind dabei die Font-Handles für Windows.


Geht sowas auch unter Delphi?

THX
Jürgen

marabu 9. Feb 2006 12:31

Re: Zeichenbreite verändern
 
Hallo Jürgen,

was du da mit der Windows-Version des Amiga Basic Compilers gemacht hast, kannst du in Delphi so machen:

Delphi-Quellcode:
Font.Pitch := fpFixed;
Durch diese Einstellung wird Windows angewiesen eine feste Zeichenbreite anzunehmen. Ob und wie Windows darauf reagiert, darauf hast du keinen Einfluß. Manchmal wird nur die Breite geändert, manchmal wird der Font komplett gewechselt - auch gar keine Reaktion ist möglich.

Grüße vom marabu

cs.rumpelstilzchen 9. Feb 2006 13:52

Re: Zeichenbreite verändern
 
Hallo Marabu :hi: , danke für die Antwort!

Das ist mir wohl bekannt, aber mit
Delphi-Quellcode:
Font.Pitch := fpFixed;
stelle ich nur ein, ob der Abstand zwischen den Zeichen variabel (Proportionalschrift) oder fix sein soll. Die Zeichenbreite selbst kann ich damit nicht verändern!

Übrigens meinte ich das GFA-BASIC für Windows! Und die Befehle FONT, SETFONT und FREEFONT kapseln eigentlich nur irgendwelche Windows-API-Calls. Und die müßte ich doch auch mittels Delphi ereichen können, oder?

Weiß sonst jemand Rat?
Danke
Jürgen

cs.rumpelstilzchen 9. Feb 2006 14:10

Re: Zeichenbreite verändern
 
Hab grad mal die alten GFA-Unterlagen durchgesehen.
Dort wird CreateFont benutzt, und dazu gibt's n nettes Tutorial von Luckie!

Werd ich mir mal ansehen :roteyes: ,
bisweilen Danke!

Sollte noch jemandem was ganz simples zur Lösung einfallen, immer her damit! :coder:

cs.rumpelstilzchen 9. Feb 2006 16:27

Re: Zeichenbreite verändern
 
:coder2: Fertig!

So geht's:

Delphi-Quellcode:
  MyFont20 := Windows.CreateFont(24, 20, 0, 0, FW_BOLD, 0, 0, 0,
                               ANSI_CHARSET, OUT_RASTER_PRECIS,
                               CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY,
                               FIXED_PITCH + FF_MODERN, 'Courier New');
Danke Marabu für dein Engagement :thumb: .

Bis bald
Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:55 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