Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

Positionierung via Align buggt rum...

  Alt 15. Apr 2007, 10:16
Hi,

Ich habe ein Eingabefeld (für einen Chat) mit ein paar Controls dabei.
insgesamt ein Edit (oder Memo), drei Buttongroups und eine TFatMemo (im prinzip auch eine Memo).

Die sollen einfach übereinander gestapelt werden (Align:=alBottom)
Nun habe ich das Problem, dass die Reihenfolge irgendwie verrückt spielt...

Bisher sieht die konstruktion so aus:
Ich habe mir eine Komponente von TPanel abgeleitet und dadrauf die ganzen Sachen positioniert.
Es gibt 2 Darstellungsmodi.
- Setzen der Höhe nach der Summe der einzelnen Höhen
- Setzen der einzelnen Höhen nach der Gesamthöhe

Also rufe ich immer im Paint folgendes auf:
Delphi-Quellcode:
begin
  if (FLastHeight<>Height) or (FLastWidth<>Width) then
  begin //Wenn sich was verändert hat dann mal höhen updaten...
    UpdateHeight;
    FLastHeight:=Height;
    FLastWidth:=Width;
  end;
  inherited;
end;
Delphi-Quellcode:
procedure TFatPreviewEditor.UpdateHeight;
var H: Integer;
begin
  Case FDefineHeight of
    dhbParticulars:
    begin
      H:=2;
      if Multiline then
        Inc(H,FMemo.Height)
      else
        Inc(H,FEdit.Height);
      if Preview then Inc(H,FPreviewMemo.Height+2);
      if FInputButtons.Visible then Inc(H,FInputButtons.Height+2);
      if FSmilieButtons.Visible then Inc(H,FSmilieButtons.Height+2);
      if FInputColors.Visible then Inc(H,FInputColors.Height+2);
      Height:=H;
    end;
    dhbOverall:
    begin
      H:=Height;
      if FInputButtons.Visible then Dec(H,FInputButtons.Height+2);
      if FSmilieButtons.Visible then Dec(H,FSmilieButtons.Height+2);
      if FInputColors.Visible then Dec(H,FInputColors.Height+2);
      if Preview then begin
        H:=H div 2;
        FPreviewMemo.Height:=H-2;
      end;
      if Multiline then
        FMemo.Height:=H-2
      else
        FEdit.Height:=H-2;
    end;
  end;
  FMemo.Top:=0; //Hier versuche ich die zu sortieren...
  FEdit.Top:=0;
  FInputButtons.Top:=0;
  FInputColors.Top:=0;
  FSmilieButtons.Top:=0;
  FPreviewMemo.Top:=0;
end;
Das funktioniert auch soweit alles...
Aber die Reihenfolge ist manchmal durcheinandergewürfelt.
Aber auch nicht zufällig, sondern bei einer bestimmten Größe immer gleich
Was mache ich falsch/was könnte ich anders machen?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat