Formulargrösse entsprechend Bildschirmauflösung



  • Original erstellt von Eßer:
    Das einzige, das daran schlimm ist, ist, dass die Form ja gar nicht maximiert sien soll. 😉

    Wird sie doch damit garnicht. *kopfschüttel*



  • Und dafür verschwendest du deine Zeit, anstatt nochmal 2 Zeilen zu schreiben?



  • Ähm ja!
    Ich habe nämlich nicht nur ein Formular in meiner Anwendung, sondern mehrere.
    Und wenn ich jetzt bei jedem Formular das in den Konstruktor schreibe muss...
    Du weisst ja, der Mensch ist von Natur aus faul 😉



  • Das klappt immer noch nicht!
    Muss ich denn noch irgendwas anderes einstellen?

    Hier mal meine Einstellungen aus dem OI:
    Anchors: alle true
    AutoScroll: true
    AutoSize: false
    ...
    BorderStyle: bsSizeable
    ...
    ClientHeight: 654
    ClientWidth: 942
    ...
    FormStyle: fsNormal
    ...
    Height: 700
    ...
    PixelsPerInch: 96
    ...
    Position: poDesktopCenter
    ...
    Width: 950
    ...
    WindowState: wsNormal



  • Sieh dir mal TForm::ScaleBy() an.



  • Hi,
    ich hab so ne Vermutung, dass du nur Anker für das Form gesetzt hast?! Ich schätze mal, dass du die auch für die Kompnenten auf dem Form setzten musst!

    Alexander Sulfrian



  • Original erstellt von Jansen:
    Sieh dir mal TForm::ScaleBy() an.

    Der Tipp war schon mal nicht schlecht.

    Allerdings habe ich jetzt folgendes Problem:
    Die Formulargrösse wird nun entsprechend der Auflösung dargestellt,
    allerdings werden die Grössen der auf dem Formular dargestellten Komponenten (z.B. Button, PageControl, ListView etc) nicht angepasst.
    Ich habe doch die Eigenschaft TForm::Scaled auf true ?!
    Bei den Komponenten selbst kann ich ja nicht einstellen, dass diese skaliert werden sollen (weder Eigenschaft Scaled noch Methode ScaleBy)

    Hat sonst noch jemand eine Idee?



  • Mit dem Scaled wäre ich vorsichtig. Irgendwie funktioniert das nicht nicht richtig, denn bei mir werden trotz gleicher Auflösung (1024x768) und gleicher Schriftgröße auf verschiedenen Rechnern mit verschiedenen Grafikkarten teilweise unterschiedlich verschobene Forms dargestellt. Ganz schlimm wirds, wenn man Panels verwendet und darauf Buttons und Editfelder plaziert.


  • Mod

    Hallo

    ich habe aehnlich eErfahrungen mit ScaledBy gemacht. Ich verwende es nicht mehr
    Man kann das auch alles per Hand machen.

    MfG
    Klaus



  • Da bin ich doch ganz Ohr!

    Das klingt mir aber nach einer Menge Arbeit.
    Mein Projekt ist doch schon relativ umfangreich und wenn ich da jetzt jede Komponente einzeln anfassen muss um diese anzupassen, dann wäre dies eine wirkliche "Strafarbeit".

    Nur mit dem Ergebnis von ScaleBy() kann ich auch nicht leben!

    Ist das wirklich so ein riesen Act?

    Naja, sonst lass ich's erst mal aussen vor und stell's so lange in die "Nice-To-Have-Ecke"


  • Mod

    Hallo

    - berechne die Groessenaenderung
    - speicher dir im OnCreate die Werte aller Komponenten
    - alle Komponenten anpassen

    dh 2 Methoden und etliche Aufrufe (oder ComponentCount oder so)
    Ich kanns gerade nicht nachschauen

    Ist eigentlich nicht viel Arbeit

    MfG
    Klaus



  • Original erstellt von JeGr:
    Nur mit dem Ergebnis von ScaleBy() kann ich auch nicht leben!

    Hast du es schon mal mit ScaleBy() ohne Scaled versucht?



  • Original erstellt von Jansen:
    Hast du es schon mal mit ScaleBy() ohne Scaled versucht?

    Ja, aber leider mit dem selben Effekt.
    Ich habe einige Buttons, die direkt auf dem Formular liegen. Bei diesen wird die Beschriftung entsprechend angepasst. Aber ich habe auch einige Buttons, die auf einem TabSheet eine PageControls liegen. Bei diesen funktioniert die Anpassung nicht.

    Werde das Ganze dann wohl mal per Hand versuchen.


Anmelden zum Antworten