AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Problem beim Setzen der Anchors
Thema durchsuchen
Ansicht
Themen-Optionen

Problem beim Setzen der Anchors

Ein Thema von Amateurprofi · begonnen am 14. Sep 2012
Antwort Antwort
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#1

Problem beim Setzen der Anchors

  Alt 14. Sep 2012, 23:25
Form1 enthält
1) am oberen Rand 3 TEdit, v.l.n.r. ebTextA, ebTextB, ebResult
2) darunter 3 TMemo, v.l.n.r. meTextA, meTextB, meResult

Bei manuellen Änderungen der Breite der Form (also durch Ziehen des linken oder rechten Rahmes der Form) soll die Anpassung der Breiten der Edits/Memos so erfolgen:

Die rechts liegenden Controls sollen immer ihre Breite beibehalten, deshalb sind die Anchors = akTop, akRight und beim Memo zusätzlich akBottom gesetzt.

Wenn der rechte Rand der Form gezogen wird sollen die Breiten der mittleren Controls geändert werden. Wenn die Form verschmälert wird und das mittlere Control eine bestimmte Minimumbreite erreicht hat, soll anstatt das linke Control verschmälert werden.

Umgekehrt, wenn der linke Rand der Form gezogen wird, sollen die Breiten der linken Controls geändert werden. Wenn die Form verschmälert wird und das linke Control eine bestimmte Minimumbreite erreicht hat, soll anstatt das mittlere Control verschmälert werden.

Mein Ansatz ist, im FormCanResize die Anchors der linken und rechten Controls so zu setzen, dass beim anschließenden Resize die Breiten der Edits/Memos entsprechend meinen Anforderungen verändert werden.
Das funktioniert auch, soweit die Memos betroffen sind.
Bei den Edits funktioniert das nicht immer.
Zum Beispiel wenn die Minimumbreite erreicht ist, nimmt das betreffende Edit nach Setzen der Anchors die Breite an, die es beim FormCreate hatte und zwar noch innerhalb des FormCanResize, also wenn die Breite der Form noch nicht verändert wurde.

Als Workaround habe ich bei den Anchors der Edits zusätzlich akBottom gesetzt, was dann auch den gewünschten Erfolg hat, aber dazu führt, dass Breite und Höhe nicht gleichzeitig verändert werden dürfen. Gut, auch das habe ich in den Griff gekriegt, aber wirklich zufrieden bin ich so nicht.

Wie macht man das richtig?
Das bloße Setzen der Anchors darf doch eigentlich nicht dazu führen, dass die Ausmaße des Controls geändert werden, wenn das Resizing der Form noch gar nicht stattgefunden hat. Oder übersehe ich da etwas?

Übrigens:
Die linken und mittleren Edits müssen nicht zwangsläufig die gleiche Breite haben.
Durch Linksklick zwischen linkes und mittleres Edit und anschließendes Ziehen der Maus (mit gedrückter linker Maustaste) können die Breiten des Edits verändert werden.
Analog geht das auch bei den Memos.
Wird dabei zusätzlich die Strg-Taste gedrückt, werden die Breiten der Edits und der Memos geändert.
Mit Rechtsklick zwischen die Edits werden die Breiten der Memos an die der Edits angepaßt, anlog funktioniert das mit Rechtsklick zwischen die Memos.

Im Anhang ist Unit1.pas und Unit1.dfm zum ausprobieren.
Angehängte Dateien
Dateityp: zip Unit1.zip (2,5 KB, 8x aufgerufen)
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 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