Autor |
Beitrag |
Handycommander
      
Beiträge: 1054
Windows XP Pro, Vista
Visual Studio 2008
|
Verfasst: 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
      
Beiträge: 179
Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
|
Verfasst: So 09.01.05 18:53
du meinst verkleinert statt minimiert.
Setz die Eigenschaft Align von Memo1 auf alClient.
|
|
Radioactive
      
Beiträge: 179
Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
|
Verfasst: 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:
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; Button1.Top := ClientHeight - 10; Button2.Height := ClientHeight - 10; end; |
Zuletzt bearbeitet von Radioactive am So 09.01.05 19:14, insgesamt 1-mal bearbeitet
|
|
Handycommander 
      
Beiträge: 1054
Windows XP Pro, Vista
Visual Studio 2008
|
Verfasst: 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
      
Beiträge: 179
Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
|
Verfasst: So 09.01.05 19:07
Schau dir doch mal mein Beispiel an, dann müsstest du es schon schaffen!
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
      
Beiträge: 179
Win 98, Win XP Home SP2
D3 Prof, D7 Pers, D2005 Pers
|
Verfasst: 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 
      
Beiträge: 1054
Windows XP Pro, Vista
Visual Studio 2008
|
Verfasst: So 09.01.05 19:12
Danke!
Werd mich gleich mal an das Beispiel machen!
Ist gar nicht so schwer, wie ich es mir vorgestellt haben
MfG
Tobias
|
|
Handycommander 
      
Beiträge: 1054
Windows XP Pro, Vista
Visual Studio 2008
|
Verfasst: 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
      
Beiträge: 1144
Win XP
D5 Standard, D7 Pers, D2005 Pers
|
Verfasst: 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 
      
Beiträge: 1054
Windows XP Pro, Vista
Visual Studio 2008
|
Verfasst: So 09.01.05 20:42
Es klappt immer noch nicht! Ich habe das so gemacht. Sind zwar jetzt keine Memos aber trotzdem
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
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: 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:
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 
      
Beiträge: 1054
Windows XP Pro, Vista
Visual Studio 2008
|
Verfasst: 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.
Also: Horizontal und Vertikal veränderbar.
Danke und MfG
Tobias
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: 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)
|
|