Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - fenstergroesse veraendern und gesamtbild erhalten


gerd8888 - Sa 02.04.11 20:12
Titel: fenstergroesse veraendern und gesamtbild erhalten
hallo,

ich habe ein fenster und habe alle meine komponenten usw. ich habe die groesse mit width und height in der form1 festgelegt. Jetzt habe ich im borderstyle sizeable eingestellt. Aber wenn ich nun das Fenster verkleinere, dann wird nicht wie gewünscht der gesamte bildinhalt verkleinert, sondern etwas ausgeschnitten.
Meine Frage ist jetzt, wie ich es schaffe, dass sich das gesamtbild (wenn ich das fenster veraendere) konstant bleibt. Also alles sichtbar ist.


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Sa 02.04.2011 um 21:38


gnomecoder - Sa 02.04.11 21:05

größe und position von allen elementen abhängig von der größe der form machen und im on resize ereignis neu berechnen.

wäre allerdings eher unüblich und stell ich mir sehr kompliziert vor^^.

Sollen zum beispiel die buttons auch alle kleiner werden wenn man das fenster auf beispielsweiße 100 * 100 pixel verkleinert?


jaenicke - Sa 02.04.11 21:06

Schau dir einmal Align und Anchors an. ;-)
Natürlich muss man die Oberfläche auch gut entwerfen.

Ansonsten gibt es auch noch ScaleBy oder so.


gerd8888 - Sa 02.04.11 21:47

Align Anchors habe ich mir angesehen. Habe jetzt mit beidem rumgespielt. Leider ohne Erfolg.


jaenicke - Sa 02.04.11 22:38

Naja, ohne genauere Informationen kann ich dir auch nicht genauer helfen. :nixweiss:

Wenn du die Oberfläche gut entwirfst, reichen diese Eigenschaften eigentlich so gut wie immer aus.

Du könntest z.B. das Formular anhängen oder zumindest einen Screenshot.


gerd8888 - Sa 02.04.11 22:56

jaenicke willst du dir den source mal ansehen?


gerd8888 - Sa 02.04.11 23:00

screenshot kein problem, habe sogar ein video: (bin dort auch zu sehen)
http://www.youtube.com/watch?v=jvs1TXRax5c


jaenicke - Sa 02.04.11 23:34

Das sieht doch so aus als sollte oben links das Spielfeld einfach nur die Größenänderung mitmachen, oder? Das heißt du setzt Anchors bei dem Spielfeld auf left, right, top und bottom, bei den Komponenten rechts davon nur auf right statt left und bei denen unten nur auf bottom statt top.

Ja, du kannst mir das Formular auch schicken, den kompletten Quelltext brauche ich ja nicht einmal, es reicht das Formular mit den Komponenten drauf ohne dass diese etwas tun müssen.


jaenicke - Mo 04.04.11 16:03

Hab kurz reingeschaut: Dort brauchst du eigentlich nur Anchors zu setzen.

Hast du denn verstanden wie diese funktionieren? :gruebel:
Sonst probiere die einfach einmal in einem leeren Projekt ein wenig aus.

Ich frage mich allerdings warum du nicht gleich eine große Paintbox benutzt. Die vielen kleinen machen das unnötig langsam und kompliziert. Hier ein Beispiel von mir zu dem Thema:
http://www.delphi-forum.de/viewtopic.php?p=557541
Das ist bis auf die Toolleiste eine große Paintbox.


gerd8888 - Mo 04.04.11 18:18

ich habe fuer den gesamten hintergrund ein Timage1 und dann habe ich auf das timage die 2 grossen paintbox. eine paintbox fuer das schachbrett und eine fuer die notation. die anderen kleinen paintbox stellen lediglich buttons dar. ich wollte das so, weil ich somit einen farbeffekt mit der maus erzielen kann. Ist das wirklich so schlecht?

Ich habe mir dein periodensystem angesehen. gefaellt mir sehr gut und auch die einstellungen (elemente groesser machen usw.) was mir auch gut gefaellt sind die farbeinstellungen. die habe ich auch in meinem programm, habe das etwas anders gemacht.

Was mich an meinem programm auch stoert, dass ich den grafikmodus auf 800x600 umschalten muss. Danach wird es wieder rueckgaengig gemacht.

Aber genau so, wie du es bei deinem periodensystem mit der fenstergroesse verschieben kannst, genauso will ich es haben.

Anchors? Nein, ich verstehe nicht wie das funktioniert.
Was muss ich machen?

Also besten Dank. Ich versuche es nochmal.

gerd


jaenicke - Di 05.04.11 08:32

user profile icongerd8888 hat folgendes geschrieben Zum zitierten Posting springen:
ich wollte das so, weil ich somit einen farbeffekt mit der maus erzielen kann. Ist das wirklich so schlecht?
Jedenfalls nicht wirklich sinnvoll, denn damit verlagerst du unnötigerweise Logik an Windows, obwohl du diese Logik auch selbst (effizienter / besser) implementieren könntest.

user profile icongerd8888 hat folgendes geschrieben Zum zitierten Posting springen:
Anchors? Nein, ich verstehe nicht wie das funktioniert.
Was muss ich machen?
Lege einfach auf ein neues Formular ein Panel und schau wie sich das Setzen der Anchors auswirkt. Im Grunde sagst du damit, ob die Seiten des Controls die Bewegung der entsprechenden Fensterseite mitmachen sollen bei einer Größenänderung.