Hi zusammen
@ Elvis: Dein Hinweis hat mir sehr geholfen! Danke! Nun sieht die Sache wie folgt aus:
Delphi-Quellcode:
procedure TWinForm.MenItemFourCells_Click(sender: System.Object; e: System.EventArgs);
var Pnl : System.Windows.Forms.Panel; RTFEdit: System.Windows.Forms.RichTextBox;SPL:System.Windows.Forms.Splitter;
i: integer;
begin
Pnl := PanelCreate(Pnl);
Pnl.BringToFront;
CreateHSplitter(SPL);
SPL.BringToFront;
Damit wird bei jedem Proceduraufruf ein Panel erzeugt, an dessen unterem Rand aussen ein horizontaler Splitter klebt.Eine Besonderheit gibt's dabei allerdings: das oder die Panel(s) lassen sich zur Laufzeit nur so lange vergrössern, bis der unterste Rand den bei Dockpadding festgelegten Wert erreicht haben. Erstelle ich zur Laufzeit mehr Panels, als im Clientbereich angezeigt werden können, werden die Scrollbars aktiviert, und ich kann ohne Probleme scrollen - nur die Splitter funktionieren nicht mehr; das heisst, ich kann die Hoehe der Panels nicht mal mehr verkleinern.
Das aber eigentlich mehr so am Rande.
Vielmehr erstaunt mich nun folgendes:
Delphi-Quellcode:
case i of
1: begin
...........
RTFEdit.Anchor := AnchorStyles.Top or AnchorStyles.Left or AnchorStyles.Bottom;;
Pnl.Controls.Add(RTFEdit);
RTFEdit.BringToFront; //
CreateVSplitter(SPL);
Pnl.Controls.Add(SPL);
SPL.BringToFront; // //
end;
in solchen Anweisungsblöcken erstelle ich pro Panel bis zu 4 RichEdits. Da ich jetzt auch gerne die Länge der einzelnen Edits zur Laufzeit ändern können möchte, füge ich auch hier Splitter dazu. Und zwar sollte der Spitter jeweils am zuletzt erstellten Edit kleben. Das tun die 'lieben Splitterchen' aber beileibe nicht. Stattdessen kleben sie Left am Panel, schön aufgereiht wie eine Perlenschnur. Und zwar hinter oder vor den Edits, je nachdem, ob ich einen oder beide der oben gezeigten 'BringtoFront'-Aufrufe ausklammere oder nicht
Da lob ich mir doch das gute alte Clientsystem von Borland!
Weiss jemand eine Antwort auf dieses merkwürdig Verhalten?
Zitat:
Ein Control wird immer"obendrauf" eingefügt. Dadurch landet es auch ganz oben wenn alle Controls DockStyle.Top haben.
Ich habe versuchsweise auch alle BringtoFront-Aufrufe durch SendoBack ersetzt - mit dem selben Effekt: alle Splitter kleben ganz links am Container, nur das sie jetzt unter den Edits angeordnet sind.
Für eure Antworten schon mal vielen Dank!
Gruss
Delbor