AGB  ·  Datenschutz  ·  Impressum  







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

Große Schrifftarten ( Leidiges Thema )

Ein Thema von Baeuerle · begonnen am 15. Mär 2006 · letzter Beitrag vom 15. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#1

Große Schrifftarten ( Leidiges Thema )

  Alt 15. Mär 2006, 10:53
Hallo zusammen,

so wiedereinmal das leidige Thema.
Ich skaliere meine Formulare mit folgender Funktion
Delphi-Quellcode:
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;
Das Ergebnis könn Ihr euch bei den angehängten Screenshots ansehen. Einmal normal mit 96DPI und einmal mit 144DPI.

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
Miniaturansicht angehängter Grafiken
144dpi_142.jpg   96dpi_170.jpg  
  Mit Zitat antworten Zitat
marlem

Registriert seit: 10. Mär 2006
59 Beiträge
 
Delphi 6 Personal
 
#2

Re: Große Schrifftarten ( Leidiges Thema )

  Alt 15. Mär 2006, 11:05
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;
gruß und danke

Markus
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: Große Schrifftarten ( Leidiges Thema )

  Alt 15. Mär 2006, 11:13
Delphi-Quellcode:
 // ...

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.
So ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Große Schrifftarten ( Leidiges Thema )

  Alt 15. Mär 2006, 11:19
@Marlem

Tja das Ergebnis sieht leider sehr seltsam aus !!! Siehe Anhang
Miniaturansicht angehängter Grafiken
ergebnis_223.jpg  
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Große Schrifftarten ( Leidiges Thema )

  Alt 15. Mär 2006, 11:24
@turboPASCAL

Das Ergebnis sieht leider aus wie das oben genannte 144DPI.jpg !!!

Also auch keine Lösung!!!
  Mit Zitat antworten Zitat
marlem

Registriert seit: 10. Mär 2006
59 Beiträge
 
Delphi 6 Personal
 
#6

Re: Große Schrifftarten ( Leidiges Thema )

  Alt 15. Mär 2006, 11:26
@Baeuerle
hast du bei breite und höhe die aktuelle bildschirmauflösung angegeben?
formular ist auf scaled?
gruß und danke

Markus
  Mit Zitat antworten Zitat
marlem

Registriert seit: 10. Mär 2006
59 Beiträge
 
Delphi 6 Personal
 
#7

Re: Große Schrifftarten ( Leidiges Thema )

  Alt 15. Mär 2006, 11:30
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!
gruß und danke

Markus
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Große Schrifftarten ( Leidiges Thema )

  Alt 15. Mär 2006, 11:31
@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!
  Mit Zitat antworten Zitat
Baeuerle

Registriert seit: 17. Mär 2005
Ort: Ettenheim
283 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Große Schrifftarten ( Leidiges Thema )

  Alt 15. Mär 2006, 11:33
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.
  Mit Zitat antworten Zitat
marlem

Registriert seit: 10. Mär 2006
59 Beiträge
 
Delphi 6 Personal
 
#10

Re: Große Schrifftarten ( Leidiges Thema )

  Alt 15. Mär 2006, 11:36
jau, versuche mal!
auf jeden fall bin ich der meinung, dass wenn dein formular "dialog-größe" hat,
hast du beim anpassen no chance!!!
gruß und danke

Markus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:07 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