Announcement

Collapse
No announcement yet.

Formular zur Laufzeit scalieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formular zur Laufzeit scalieren

    Hallo,

    Ich würde gern ein Formular zur Laufzeit scalieren.

    Laut Delphi(2005)-Hilfe muss man dazu:

    1. pixelsperinch auf einen anderen als den Standardwert (bei mir 96) eingeben

    2. scaled auf true setzen

    Wenn das zur Laufzeit mache, passiert nichts.

    Ich stelle nur fest das das Setzen von scaled bei der Änderung von pixelsperich
    automatisch erfolgt.

    - ist pixelsperinch = screen.pixelsperinch wird scaled auf false,
    - sonst auf true gesetzt.

    Kann mir da vielleicht jemand weiterhelfen

    mfg Heinz-Dieter Schlosser

  • #2
    Hallo Heinz-Dieter,

    möchtest Du Dein Formular skalieren oder die Schriftgrösse?
    Um das Formular in Abhängigkeit von der Bildschirmauflösung zu skalieren verwende ich folgenden Code:

    //--------------------------------------------------------------
    // Prozedur: Auflösung bestimmen (Skalierung Fenster)
    //--------------------------------------------------------------
    procedure Aufloesung(Formular:TForm;Fensterbreite,Fensterhoe he:Integer); //Auflösung Bildschirm mit Formular abstimmen
    var
    X,Y: Integer;
    begin
    try
    X:=Screen.Width;
    Y:=Screen.Height;
    if (Y <> Fensterhoehe) or (X <> Fensterbreite) then
    begin
    Formular.Height:=(Formular.ClientHeight * y div Fensterhoehe) +
    Formular.Height - Formular.ClientHeight;
    Formular.Width :=(Formular.ClientWidth * x div Fensterbreite) +
    Formular.Width - Formular.ClientWidth;
    Formular.ScaleBy(X, Fensterbreite);
    end;
    except
    MessageBox(0,'Fehler in Hilfsroutine: ' + #13#10 + 'Auflösung','Problem',16);
    end;
    end;

    --------------------------------------------

    Bei der Schriftgrösse verwende ich folgenden Eintrag bei FormCreate:

    //Abfrage installierte Fontgröße
    if not SmallFonts then
    begin
    Self.ScaleBy(96, Screen.PixelsPerInch);
    Refresh;
    end;

    Dies kannst Du ja dann auf Deine Belange anpassen.

    Servus Thomas Fein

    Comment

    Working...
    X