Einzelnen Beitrag anzeigen

Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#1

Winforms Panel Problem bei Child Componenten

  Alt 12. Jul 2005, 17:36
Hallo,
ich hab eine Componente abgeleitet vom Panel worauf jetzt
2 RichTextBoxes und 1 Splitter sollen.
Rich Splitter Rich - als anordnung.
nun ist es jedoch so das das die letzte RichTextBox
bei Dock = DockStyle.Fill das gesamte panel einnimmt
obwohl das erste RichTextBox Element auf Dock := Dockstyle.left steht.
wie kommt das?

hier der generierende Code:
Delphi-Quellcode:
procedure TRichTextBoxAdvanced.InitComponent;
begin
  BorderStyle := System.Windows.Forms.BorderStyle.Fixed3D;

  FLeftRichTextBox := System.Windows.Forms.RichTextBox.Create;
  FMainRichTextBox := System.Windows.Forms.RichTextBox.Create;
  FSplitter := System.Windows.Forms.Splitter.Create;

  Controls.Add(FLeftRichTextBox);
  Controls.Add(FSplitter);
  Controls.Add(FMainRichTextBox);
                                     
  //Left RichTextBox
  with FLeftRichTextBox do
  begin
    Parent := Self;
    BackColor := Color.DarkGray;
    BorderStyle := System.Windows.Forms.BorderStyle.None;
    Dock := DockStyle.Left;
    ForeColor := Color.Black;
    ReadOnly := True;
    ScrollBars := System.Windows.Forms.RichTextBoxScrollBars.None;
    TabStop := False;
    Width := 20;
  end;

  //Right RichTextBox
  with FMainRichTextBox do
  begin
    Parent := Self;
    BorderStyle := System.Windows.Forms.BorderStyle.None;
    Dock := DockStyle.Fill;
    ScrollBars := System.Windows.Forms.RichTextBoxScrollBars.None;
    TabIndex := 0;
  end;

  //Splitter
  with FSplitter do
  begin
    Parent := Self;
    BorderStyle := System.Windows.Forms.BorderStyle.FixedSingle;
    Cursor := System.Windows.Forms.Cursors.VSplit;
    Dock := DockStyle.Left;
    Enabled := True;
    TabStop := False;
    Width := 20;
  end;
end;
die routine wird beim erstellen der Componente aufgerufen.
die FMainRichTextBox bedeckt das gesamte panel und darüber
liegen die LeftRichTextBOx und der Splitter, Splitter ganz links und daneben dann leftrich.

ich versteh nicht warum das nicht korrekt auf dem panel dockt.
durch Control.Add sind doch alle 3 Objekte childs des Panels.
Wenn das Meer unruhig ist und der Wind die Wellen treibt, erfreut es, vom Strand aus die Mühen eines Anderen zu beobachten.
  Mit Zitat antworten Zitat