@Uwe
Vielen Dank für dein Beispiel. Dein Beispiel funktioniert.
Habe meinen Code anschließend deinem Beispiel folgendermaßen angepasst. Immer noch das selbe Erbenis.
Delphi-Quellcode:
procedure TmDROMainForm.Button1Click(Sender: TObject);
begin
// UpdateLayout(true);
LandScape := not LandScape;
end;
procedure TmDROMainForm.SetLandScape(const Value: Boolean);
begin
if FLandScape <> Value then
begin
FLandScape := Value;
if FLandscape then
begin
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
else
begin
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;
for var pnl in [pnlAxis01, pnlAxis11, pnlAxis21] do
begin
if Value then
HidePanel(pnl)
else
begin
ShowPanel(pnl);
end;
end;
end
end;
Eventuell könnte das BeginUpdate/EndUpdate noch reinpfuschen.
Wenn das ohne immer noch nicht funktioniert, ist dann aber etwas komisch. Ich habe sowas auch schon umsetzen müssen und hatte keine Probleme dabei.
Habe ich mal entfernt. Keine Verbesserung.