Da TQRStandardPreview von TForm abgeleitet ist, wäre auch TForm(Sender).Left korrekt. Das erspart eventuell den einen Eintrag in der Uses-Anweisung.
Ich persönlich würde auch das Setzen der Position im selben Event vorziehen. Dann hat man beide Teile des Codes an einer Stelle.
Danke für den Tip.
Habe zwar noch mal grübeln müssen was du meinst aber das hat das Handling tatsächlich stark vereinfacht.
Aus
Delphi-Quellcode:
procedure TrptStdCalibration.FormCreate(Sender: TObject);
begin
u_Registry.RestoreFormPos(self);
qrStdCal.PreviewLeft := self.Left;
qrStdCal.PreviewTop := self.Top;
qrStdCal.PreviewWidth := self.Width;
qrStdCal.PreviewHeight := self.Height;
end;
procedure TrptStdCalibration.qrStdCalStandPrevEvent(Sender: TObject; eventType: TStandPrevEventType; contName: string;
var Handled: Boolean);
begin
if eventType = spClose then
begin
// Zugriff auf Self.Left, qrStdCal.Left und qrStdCal.PreviewLeft liefert falsche Werte => Zugriff über Sender
self.Left := TQRStandardPreview(Sender).Left;
self.Top := TQRStandardPreview(Sender).Top;
self.Width := TQRStandardPreview(Sender).Width;
self.Height := TQRStandardPreview(Sender).Height;
u_Registry.SaveFormPos(self);
end;
end;
wurde
Delphi-Quellcode:
case eventType of
spClose: u_Registry.SaveFormPos(TForm(Sender));
spOpen: u_Registry.RestoreFormPos(TForm(Sender));
end;