Announcement

Collapse
No announcement yet.

Programm an Bildschirmauflösung anpassen

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

  • Programm an Bildschirmauflösung anpassen

    <b>Hallo Herr Kosch und alle anderen Experten !</b><p>

    Gibt es wirklich keine elegante Möglichkeit ein Programm, welches mit einer Auflösung von 1024 x 768 entwickelt wurde (weil der Platz für viele Controls benötigt wird, ohne zuviele Tabsheets zu verwenden) auch in kleineren Auflösungen (z.B. 800 x 600) anzuzeigen, ohne das die benötigten Felder und Labels abgeschnitten werden. <p>
    <b>TForm.ScaleBy(Screen.Height, 768)</b> bringt da auch keine vernünftige Lösung (oder was mache ich vielleicht falsch ?).<p>
    <b>Brauche dringend eine schnelle Lösung</b>

    Klaus Jäde

  • #2
    Hallo,

    dieses Problem muss man mehrstufig lösen: <br>
    a) Font-Größe beim Verkleinern des Formulars mit verkleinern <br>
    b) Controls gruppieren (TPanel etc.), so dass "zusammenhängende" Controls die relative Position nicht verlassen<br>
    c) Large Fonts vs. Small Fonts berücksichtigen.
    Für die Aufgabe c) sollte die folgende Implementierung die Situation verbessern:
    <pre>
    { ************************************************** **************
    Typ : Hauptformular
    Autor : Andreas Kosch
    Compiler : Delphi 5 Enterprise
    Betriebssystem : Windows 98
    Begonnen am : 04.11.1999
    Beschreibung : Programm passt die Formulargröße automatisch so an,
    das bei Large Fonts die gleichen Abstände wie bei
    Small Fonts auftreten.
    Ohne den Aufruf von FixSize sind nur Scrollbalken zu
    sehen, da zwar die Controls im Formular automatisch
    ihre Größe ändern, der Formular-Container jedoch nicht.
    Die Formular-Eigenschaft Scaled ist TRUE.
    Test unter Windows NT 4 SP5: ok
    ************************************************** ************** }

    unit LargeFontsFrm;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls, Buttons, ExtCtrls, ComCtrls;

    type
    TFormMain = class(TForm)
    StatusBar1: TStatusBar;
    Panel1: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    RadioGroup1: TRadioGroup;
    Memo1: TMemo;
    BitBtn1: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    private
    { Private-Deklarationen }
    FDoFix : Boolean;
    FDesignRes : Integer;
    procedure FixSize;
    public
    { Public-Deklarationen }
    end;

    var
    FormMain: TFormMain;

    implementation

    {$R *.DFM}

    { TFormMain }

    procedure TFormMain.FormCreate(Sender: TObject);
    begin
    FDoFix := True;
    FDesignRes := 96;
    end;

    procedure TFormMain.FormShow(Sender: TObject);
    begin
    FixSize;
    end;

    {---------------------------------------------------------------}
    { Private Methoden }
    {---------------------------------------------------------------}

    procedure TFormMain.FixSize;
    begin
    if FDoFix then
    begin
    PixelsPerInch := Screen.PixelsPerInch;
    if (PixelsPerInch <> FDesignRes) then
    begin
    Width := LongInt(Width * PixelsPerInch) div FDesignRes;
    Height := LongInt(Height * PixelsPerInch) div FDesignRes;
    end;
    FDoFix := False;
    end;
    end;

    end.
    </pre&gt

    Comment

    Working...
    X