Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Splitter-Positon auf 0 ? (https://www.delphipraxis.net/49246-splitter-positon-auf-0-a.html)

jfheins 7. Jul 2005 20:18


Splitter-Positon auf 0 ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe folgendes Problem:

Ich setze beim Starten (im OnCreate) den Splitter, also besser gesagt die Breite des linken Controls, auf einen Wert. Soweit, sogut. Wenn ich aber die Breite auf 0 setze, dann geschieht ein Wunder:
Entgegen allen Gesetzen der Logik, ist der Splitter plözlich links vom Control :shock:
Folge: Der Splitter ist unbrauchbar :?

Also so:
Code:
*____      ____
|    | || |    |
|    | || |    |
|    | || |    |
|____| || |____|
Und beim auf 0 setzen dann so:
Code:
****____   ____
 || |    | |    |
 || |    | |    |
 || |    | |    |
 || |____| |____|
Dann geht natürlich gar nichts mehr ...

Ein setzen von Splitter.left := Memo1.left + Memo1.width + 1; hat auch nichts gebracht, zumindest nicht im FormCreate, also in nem Buttonclick geht's, aber wer will schon lesen "Zum abschließenden Laden der Einstellungen bitte Knopf drücken" :mrgreen:

Anbei ein Beispielprojekt ;)

Luckie 7. Jul 2005 20:21

Re: Splitter-Positon auf 0 ?
 
Sxchönes Demo. Wäre jetzt bestimmt noch hilfreich, wenn du die Unit1.pas mitliefern würdest, so kann man damit gar nichts anfangen.

jfheins 7. Jul 2005 20:25

Re: Splitter-Positon auf 0 ?
 
Sorry :oops: neuer Anhang ist schon oben ;)

marabu 7. Jul 2005 20:52

Re: Splitter-Positon auf 0 ?
 
Hallo Julius,

die Borland-Entwickler bestimmen das Control, dessen Dimension der Splitter steuert, durch PtInRect(). Damit das funktioniert haben sie Splitter.MinSize mit einer Untergrenze von 1 festgeschrieben. Wenn du einen Splitter auf einer Form verwendest, dann sollten die beiden angrenzenden Controls diese MinSize als Constraint übernehmen, sonst unterläufst du die Rahmenbedingungen.

Grüße vom marabu

jfheins 7. Jul 2005 21:00

Re: Splitter-Positon auf 0 ?
 
Und da soll man drauf kommen :shock:

Auch wenn ichs toll fand, dass man das links ganz wegmachen konnte werde ich das jetzt einfach mit minsize=1 und in den constaints auch ... :???:

Nochmal thx :)

marabu 7. Jul 2005 21:03

Re: Splitter-Positon auf 0 ?
 
Wenn du es so toll findest, dann hilft auch das:

Delphi-Quellcode:
procedure TDemoForm.HideButtonClick(Sender: TObject);
begin
  Splitter.Parent := nil;
  LeftMemo.Parent := nil;
end;

procedure TDemoForm.ShowButtonClick(Sender: TObject);
begin
  LeftMemo.Parent := self;
  Splitter.Parent := self;
end;
marabu

PS: Die Reihenfolge ist übrigens wichtig...

jfheins 7. Jul 2005 21:14

Re: Splitter-Positon auf 0 ?
 
Nein, diese Lösung ist suboptimal - schließlichb soll beim satren des Programms der Splitter einfach nur wieder da sein, wo er beim Beenden war ;)

Man kann jetzt eben nichts mehr verstecken, und fertig :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz