Autor Beitrag
Handycommander
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: So 09.01.05 18:48 
Hallo,

ich habe in meinem Form ein Memo. Nun möchte ich, wenn der Benutzer das Programm maximiert, dass sich das Memo-Feld an passt. Genauso, wenn der Benutzer das Programm minimiert. Wie kann ich das machen?

Danke und MfG

Tobias
Radioactive
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 179

Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
BeitragVerfasst: So 09.01.05 18:53 
du meinst verkleinert statt minimiert.
Setz die Eigenschaft Align von Memo1 auf alClient.
Radioactive
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 179

Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
BeitragVerfasst: So 09.01.05 18:59 
wenn du unten (oder oben) noch z.B. Buttons reinmachen willst, die dann nicht im Memo-Feld liegen, dann solltest du einen eigenen Quelltext in der Form.Resize-Methode schreiben. Hier z.B. für 2 Buttons unten:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.FormCreate(...);
begin
  Memo1.Left := 0;
  Memo1.Top := 0;
end;

procedure TForm1.FormResize(...);
begin
  Memo1.Width := ClientWidth;
  Memo1.Height := ClientHeight - 50;    // 50 Pixel Platz für die Buttons
  Button1.Top := ClientHeight - 10;     // Die Button sollen sich immer
  Button2.Height := ClientHeight - 10;  // 10px vom unteren Rand befinden
end;


Zuletzt bearbeitet von Radioactive am So 09.01.05 19:14, insgesamt 1-mal bearbeitet
Handycommander Threadstarter
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: So 09.01.05 19:00 
Hallo,

und wenn ich jetzt 4 Memos habe, die auf dem Form wie folgt verteilt sind:

Links Oben eins, Rechts Oben eins
Links Unten eins, Rechts Unten eins

Wie kann ich das dann machen, dass sich die das ganze Form dann teilen? Also im gleichen Abstand auf dem Formular dann beim Vergrößern verteilen?

MfG

Tobias
Radioactive
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 179

Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
BeitragVerfasst: So 09.01.05 19:07 
Schau dir doch mal mein Beispiel an, dann müsstest du es schon schaffen!

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
procedure TForm1.FormCreate(...);
begin
  Memo1.Left := 0;
  Memo1.Top := 0;
  Memo1.Width := ClientWidth div 2;
  Memo1.Height := ClientHeight div 2;
  Memo2.Left := ClientWidth div 2;
  Memo2.Top := 0;
  Memo2.Width := ClientWidth div 2;
  Memo2.Height := ClientHeight div 2;
  Memo3.Left := 0;
  Memo3.Top := ClientHeight div 2;
  Memo3.Width := ClientWidth div 2;
  Memo3.Height := Height div 2;
  Memo4.Left := ClientWidth div 2;
  Memo4.Top := ClientHeight div 2;
  Memo4.Width := ClientWidth div 2;
  Memo4.Height := ClientHeight div 2;
end;

procedure TForm1.FormResize(...);
begin
  Memo1.Width := ClientWidth div 2;
  Memo1.Height := ClientHeight div 2;
  Memo2.Left := ClientWidth div 2;
  Memo2.Width := ClientWidth div 2;
  Memo2.Height := ClientHeight div 2;
  Memo3.Top := ClientHeight div 2;
  Memo3.Width := ClientWidth div 2;
  Memo3.Height := ClientHeight div 2;
  Memo4.Left := ClientWidth div 2;
  Memo4.Top := ClientHeight div 2;
  Memo4.Width := ClientWidth div 2;
  Memo4.Height := ClientHeight div 2;
end;
Radioactive
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 179

Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
BeitragVerfasst: So 09.01.05 19:11 
Sorry, habe es gerade verbessert: Nimm CientHeight statt Height (und ClienWidth statt Width), denn Height und Width gibt die Fenstergröße mit Rahmen an.
Handycommander Threadstarter
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: So 09.01.05 19:12 
Danke!

Werd mich gleich mal an das Beispiel machen! :D

Ist gar nicht so schwer, wie ich es mir vorgestellt haben :roll:

MfG

Tobias
Handycommander Threadstarter
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: So 09.01.05 19:57 
Irgendwie geht das bei mir nicht!
Wenn ich bei mir bei Create wie das Memo am anfang aussehen soll reinschreibe und dann bei Resize oder bei CanResize, dann ist des bei Create irgendwie ausser achtung, also es gilt immer nur das von Resize oder CanResize.

Was ist das für ein Problem?

Danke und MfG

Tobias
StefanH
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1144

Win XP
D5 Standard, D7 Pers, D2005 Pers
BeitragVerfasst: So 09.01.05 20:29 
setzte einfach die Anchors von deinen Memos auf [akBottom, akLeft, akRight, akTop].

_________________
"Als es noch keine Computer gab, war das Programmieren noch relativ einfach."(Edsger W. Dijkstra)
"Ich bin nicht von Sinnen, sondern ich rede wahre und vernünftige Worte." (Paulus)
Handycommander Threadstarter
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: So 09.01.05 20:42 
Es klappt immer noch nicht! Ich habe das so gemacht. Sind zwar jetzt keine Memos aber trotzdem :roll:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.FormResize(Sender: TObject);
begin
  ShellTreeView1.Height := ClientHeight div 2 - 3;
  ShellTreeView1.Width := 201;
  ShellTreeView2.Height := ClientHeight div 2 - 3;
  ShellTreeView2.Width := 201;
  ShellListView1.Height := ClientHeight div 2 - 3;
  ShellListView1.Width := ClientWidth - 201 - 1;
  ShellListView2.Height := 100;
  ShellListView2.Width := ClientWidth - 201 - 1;
end;


Und die Anchors habe ich auch noch richtig gesetzt. Also, wenn ich das FormResize mache, dann macht der das, wie wenn da FormCreate stehen würde.

MfG

Tobias
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: So 09.01.05 21:26 
ich würd das anders machen: später ist vielleicht auch mal eine eigene Größenanpassung notwendig:
also:

  • 2 panels auf die form pappen (bevelouter auf none stellen), zweckmäßigerweise auch die namen in panellinks und panelrechts ändern.
  • panellinks auf align=alleft stellen
  • eine splitterkomponente rechts daneben setzen, die Breite des splitters auf eine vernünftige Breite, z.B. 8 setzen
  • das andere panel jetzt auf align=alclient stellen
  • Wenn du jetzt das linke panel in der Breite vergrößerst, paßt sich das rechte an
  • ein shelltreeview ins linke panel setzen (oder das bestehende ausschneiden und einfügen), align auf altop
  • eine Splitterkomponente drunter setzen, align auf altop stellen und höhe anpassen
  • eine Shelllistviewkompo drunter setzen und align auf alclient setzen
  • rechts genausovorgehen. Oder wie bei Nero das treeview+Splitter auch auf alleft stellen.


Programm starten, du kannst jetzt die Kontrolls durch die Splitter schön manuell in der Größe ändern und hast keine Probleme. Der User kann auch die Größe der Komponenten ändern, wenn er das wünscht, sollte besser sein als eine vorgeschriebene Größe.

Wenn du doch noch eine mittige anordnung haben willst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormResize(Sender: TObject);
begin
  panellinks.width:=(ClientWidth div 2) -2
end;

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Handycommander Threadstarter
ontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1054

Windows XP Pro, Vista
Visual Studio 2008
BeitragVerfasst: Mo 10.01.05 14:53 
Hallo Keldorn!

Bei mir klappt das irgendwie nicht so ganz! Ich kann den Splitter nur Vertikal machen, brauche den aber auch horizontal!

Das sollte ungefähr so aussehen:

ShellTreeView | ShellListView
--------------------------------
ShellTreeView | ShellListView

Jede Seite sollte veränderbar sein, wenn das möglich ist. :roll:
Also: Horizontal und Vertikal veränderbar.

Danke und MfG

Tobias
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Mo 10.01.05 19:53 
der splitter paßt sich an, wenn du das align setzt. bei top ist er vertikal, bei left ist er horizontal.

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)