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?