Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Ausrichtung des Splitters unter Dot.Net

  Alt 12. Dez 2006, 13:39
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
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat