![]() |
Große Schrifftarten ( Leidiges Thema )
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo zusammen,
so wiedereinmal das leidige Thema. Ich skaliere meine Formulare mit folgender Funktion
Delphi-Quellcode:
Das Ergebnis könn Ihr euch bei den angehängten Screenshots ansehen. Einmal normal mit 96DPI und einmal mit 144DPI.
procedure ScaleForm(F: TForm; Offset: Integer);
var dc: HDC; begin dc:=GetDC(0); if not (GetDeviceCaps(dc,LOGPIXELSX)=96)then f.scaleby(96,GetDeviceCaps(dc,LOGPIXELSX)+Offset); ReleaseDC(0,dc); f.Refresh; end; Ich möchte das Darstellungsproblem jetzt ein für alle mal vom Tisch bekommen. Ich bitte um Lösungsvorschläge wie das Formular auf allen OS mit allen unterschiedlichen Einstellungen DPI und Auflösungen korrekt dargestellt wird. Das Problem sollte doch jeder Entwickler gelöst haben. Oder bin ich einfach zu dumm dafür??? Danke im voraus Baeuerle |
Re: Große Schrifftarten ( Leidiges Thema )
tach,
rufe mal das hier im oncreate vom formular auf:
Delphi-Quellcode:
procedure bildschirmaufloesung(breite,hoehe:integer;formular:tform);
var schrift: integer; begin schrift := formular.pixelsperinch-96; if screen.width>breite then begin if schrift>0 then {für große Schriften} formular.ScaleBy(round(((screen.width/breite)*100)-((screen.width/breite-1)*100)),100) else {für kleine Schriften} formular.ScaleBy(round(((screen.width/breite)*100)),100); end else begin if screen.width=breite then formular.ScaleBy(round(((screen.width/breite)*100)-schrift),100) else begin if schrift>0 then {für große Schriften} formular.ScaleBy(round((100-(breite/screen.width-1)*100)-(breite/screen.width-1)*100),100) else {für kleine Schriften} formular.ScaleBy(round((100-(breite/screen.width-1)*100)),100); end; end; end; |
Re: Große Schrifftarten ( Leidiges Thema )
Delphi-Quellcode:
So ? :gruebel:
// ...
var Form1: TForm1; implementation {$R *.dfm} // Bildschirmauflösung zur Erstellungszeit (des Formulares beim programieren) const ScrWidthResDev = 1024; ScrHeightResDev = 768; procedure TForm1.FormCreate(Sender: TObject); begin Scaled := true; if (Screen.Height <> ScrHeightResDev) or (Screen.Width<>ScrHeightResDev) then begin Height:= (ClientHeight * Screen.Width div ScrWidthResDev) + Height - ClientHeight; Width:= (ClientWidth * Screen.Width div ScrHeightResDev) + Width - ClientWidth; ScaleBy(Screen.Height, ScrHeightResDev); end; end; end. |
Re: Große Schrifftarten ( Leidiges Thema )
Liste der Anhänge anzeigen (Anzahl: 1)
@Marlem
Tja das Ergebnis sieht leider sehr seltsam aus !!! Siehe Anhang |
Re: Große Schrifftarten ( Leidiges Thema )
@turboPASCAL
Das Ergebnis sieht leider aus wie das oben genannte 144DPI.jpg !!! Also auch keine Lösung!!! |
Re: Große Schrifftarten ( Leidiges Thema )
@Baeuerle
hast du bei breite und höhe die aktuelle bildschirmauflösung angegeben? formular ist auf scaled? |
Re: Große Schrifftarten ( Leidiges Thema )
MOMENT!!!
dein formular füllt ja gar nicht den ganzen bildschirm aus! da hilft wahrscheinlich eh nur aus bsdialog setzen! meine lösung ist für formulare die den ganzen bildschirm ausfüllen! |
Re: Große Schrifftarten ( Leidiges Thema )
@Marlem
Ja habe die breite und die höhe des Entwicklungsrechners eingegeben 1152*864 mit 96DPI scaled=True Testrechner XP Emulation mit 1152*864 mit 144DPI Daran liegt der Fehler leider nicht! |
Re: Große Schrifftarten ( Leidiges Thema )
bsDialog
scaled=False Ja das geht. ABER: Ich kann doch nicht alle Fenster, die nicht den ganzen Bildschirm ausfüllen auf bsDialog setzen!!! Es muss doch möcglich sein eine korrekte Anpassung zu machen. |
Re: Große Schrifftarten ( Leidiges Thema )
jau, versuche mal!
auf jeden fall bin ich der meinung, dass wenn dein formular "dialog-größe" hat, hast du beim anpassen no chance!!! :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:42 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 by Thomas Breitkreuz