Autor Beitrag
nilsener1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52

Win 98, XP
D4 prof.
BeitragVerfasst: So 06.03.05 19:15 
Hallo,

ich möchte die Oberfläche von Form1 per Button vertikal hinstellen (z.B. am rechten Bildschirmrand) bzw. horizontal hinlegen (z.B. am unteren Bildschirmrand). Problem ist, dass sich mit Verändern der Oberfläche (stehend/liegend) auch die Positionen aller Objekte ändern muss (Edit1..., Label1..., etc.). Ich könnte eine Tabelle mit den xy-Koordinaten aller Objekt hinterlegen um die Positionen an die jeweilige Oberfläche anzupassen, das scheint mir aber sehr aufwändig und unflexibel bei Änderungen oder Ergänzungen.

Kennt jemand eine einfache Lösung dafür ?

Gruss nilsener


Moderiert von user profile iconGausi: Topic aus CLX / Delphi Language (Object-Pascal) verschoben am Mi 09.03.2005 um 10:01
PLuS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 98

Win XP, Suse Linux 9.0
D5 Standard, D2005 Personal; Perl; PureBasic
BeitragVerfasst: So 06.03.05 19:23 
Mir fällt dabei nur ein, dass du doch einfach eine zweite Form machen könntest, die zuerst unsichtbar ist.
Wenn du den Button klickst wird die eine sichtbar, die erste aber unsichtbar:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Visible:=true;
Form1.Visible:=false;
end;
Master_BB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Mi 09.03.05 10:50 
ganz einfach du schreibst dir eine routine namens
procedure ResizeInterface;

diese wird immer beim ergeignis FormResize deiner form aufgerufen bzw immer wennn du per button seine formposition mit größe änders und da schreibst du berechnungen rein.
diese berechnungen umfassen die berechnung der left, top, width, height werte für alle objekte auf deinem formular.
sprich wenn du eine sizeable form hast udn willst das unten eein button oder 2 immer in der mitte sind dann
würde man das hier als berechnung nehmen.

Button1.Left := (Width - Button1.Width) DIV 2;
wenn 2 buttons dann
Button1.Left := (Width - 2 * Button1.Width) DIV 2;
Button2.Left := Button1.Left + Button1.Width + 5;
wobei dir 5 jetzt einfach der abstand zwischen button1 zu button2 ist.

so kannst das mit allen elementen machen immer von der form ausgehen und berechnen lassen.
dazu nimmt man sich am besten nen zettel wenn und malt sich das zu berechnede objekt auff und kuk
wie man seine left und top position errechnen kannn. das geht auch alles für width und height dadurch
hast du eine 100% flexible positionierung deiner elemente auf der form.

greetu