du könntest auch die height der panels auf 0 setzen und das visible auf true belassen. Den originalen wert kannst du dir irgendwo (z.b. tagfloat) merken um später die height wiederherzustellen. Die panels behalten dann ihre relative position bei.
Mit folgendem Code ergibt sich auch keine Besserung.
Delphi-Quellcode:
procedure TmDROMainForm.UpdateLayout_VHeight(aPortrait:Boolean);
begin
try
pnlClient.BeginUpdate;
If aPortrait then
begin
pnlAxis01.Height:=60;
pnlAxis11.Height:=60;
pnlAxis21.Height:=60;
mAxisItem[0].W.Parent:= pnlAxis01;
mAxisItem[0].Divider.Parent:= pnlAxis01;
mAxisItem[0].Buzzer.Parent:= pnlAxis01;
mAxisItem[1].W.Parent:= pnlAxis11;
mAxisItem[1].Divider.Parent:= pnlAxis11;
mAxisItem[1].Buzzer.Parent:= pnlAxis11;
mAxisItem[2].W.Parent:= pnlAxis21;
mAxisItem[2].Divider.Parent:= pnlAxis21;
mAxisItem[2].Buzzer.Parent:= pnlAxis21;
end
else
begin
// Landscape
pnlAxis01.Height:=0;
pnlAxis11.Height:=0;
pnlAxis21.Height:=0;
mAxisItem[0].W.Parent:= pnlAxis0;
mAxisItem[0].Divider.Parent:= pnlAxis0;
mAxisItem[0].Buzzer.Parent:= pnlAxis0;
mAxisItem[1].W.Parent:= pnlAxis1;
mAxisItem[1].Divider.Parent:= pnlAxis1;
mAxisItem[1].Buzzer.Parent:= pnlAxis1;
mAxisItem[2].W.Parent:= pnlAxis2;
mAxisItem[2].Divider.Parent:= pnlAxis2;
mAxisItem[2].Buzzer.Parent:= pnlAxis2;
end;
finally
pnlClient.EndUpdate;
end;
// Layout und Style auffrischen
pnlClient.Repaint;
end;