Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Form mit Bildschirm Auflösung anpassen (https://www.delphipraxis.net/115076-form-mit-bildschirm-aufloesung-anpassen.html)

Delphiturbo 5. Jun 2008 13:02


Form mit Bildschirm Auflösung anpassen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo

einige Kunden verwenden entweder auf gösse Bildschirm-Auflösung oder Sie haben
einen Großen Bildschirm (ab 19 zoll).

Meine Programm-Größe ist damit zu klein, darum wollen die Leute gerne das Programm
skalieren (vergrößern) !

Wer gibt mir einen Tipp, um in solchen Fällen, die Möglichkeit dem User geben
das Programm auf seinen Bildschirm anpassen zu können ?

Mit dem Code z.B. wird auf Form liegende Objekte skaliert auch Webbrowser:
Delphi-Quellcode:
var
  sWidth: Double;
  sHeight: Double;
begin
  sWidth := Screen.MonitorFromWindow(Handle).Width / Width;
  sHeight := Screen.MonitorFromWindow(Handle).Height / Height;
  if sWidth < sHeight then
  begin
    ScaleBy(Round(Screen.MonitorFromWindow(Handle).Width * 1.01), Width);
  end
  else
  begin
    ScaleBy(Round(Screen.MonitorFromWindow(Handle).Height * 1.01), Height);
  end;
  WindowState := wsMaximized;

// nun webbrowser Inhalt zoomen:
WebBrowser1.OleObject.Document.Body.Style.Zoom := 1.25{Zoomfaktor};

end;
Das Problem in Code, es gibt 2 Zoomfaktoren:
Einer skaliert Delphi-Objekte
Anderer skaliert (zoomt) Webbrowser Content
Manch mal wird die Zoomfaktoren nicht identisch

Darum suche ich eine andere Lösung

rollstuhlfahrer 5. Jun 2008 18:38

Re: Form mit Bildschirm Auflösung anpassen
 
HI,

dein erstes Problem löst du ganz einfach mit Anchors (OI). Dem Webbrowser kannst du wie alle anderen Komponenten mit .ScaleBy vergrößern/verkleinern. Deinen Code versteh ich nicht ganz. Du kannst aber im OI die Eigenschaft WindowState auf wsMaximized setzen und durch die Anchor-Vergrößerung wandern die Komponenten mit.


rollstuhlfahrer

EDIT: Das Bild dazu ist nicht gerade verständlich

Delphiturbo 5. Jun 2008 19:18

Re: Form mit Bildschirm Auflösung anpassen
 
Ich habe nun einen anderen Code genommen
Nun klappt
Delphi-Quellcode:
  ScaleBy(120, 100); /120%
  Form1.Width:=(form1.Width) + (form1.Width div 5);
  Form1.Height:=(form1.Height) + (form1.height div 5);
  WebBrowser1.OleObject.Document.Body.Style.Zoom := 1.2; // 120%
jetzt habe ich mindestens den selben Zoomfaktor :drunken:
Ich habe ein kleines Problem:
Bei ScaleBy(); wird nur Integer akzeptiert !

Ich muss meine Form gross wie Möglich skalieren
d.h. die neue Breite der Form : Form1.Width:=IntToStr(Screen.MonitorFromWindow(Han dle).Width)
und dann kann ich den Zoomfaktor berechnen :
Zommfaktor = (Screen.MonitorFromWindow(Handle).Width * 100) div Form1.Width

wie kann ich diese Form in Delphi eingeben, da er nur Integer akzeptiert?

DeddyH 5. Jun 2008 19:28

Re: Form mit Bildschirm Auflösung anpassen
 
Schau Dir mal round() und trunc() an.

Delphiturbo 5. Jun 2008 19:35

Re: Form mit Bildschirm Auflösung anpassen
 
Zitat:

Zitat von DeddyH
Schau Dir mal round() und trunc() an.

danke
das kann mir helfen um die Sache zu vereinfachen :
Delphi-Quellcode:
   Round(12.75) = 13
   Trunc(12.75) = 12
     Int(12.75) = 12
   Frac(12.75) = 0.75


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