Funktioniert. Allerdings immer noch nicht ganz nachvollziehbar, was genau passiert
Mein Code
Delphi-Quellcode:
procedure TrptStdCalibration.qrStdCalStandPrevEvent(Sender: TObject; eventType: TStandPrevEventType; contName: string;
var Handled: Boolean);
var
s :String;
begin
if eventType = spClose then
begin
Self.Left := Self.Left; // = 175
Self.Left := qrStdCal.Left; // = 16
Self.Left := qrStdCal.PreviewLeft; // = 25
Self.Left := TForm(Sender).Left; // = 1526
Self.Left := TQuickRep(Sender).Left; // = 1526
Self.Left := TQuickRep(Sender).PreviewLeft; // = 2555888800
s := Sender.ClassName; // = 'TQRStandardPreview'
// d.h. Korrekt ist
Self.Left := TQRStandardPreview(Sender).Left; // = 1526
u_Registry.SaveFormPos(Self);
end;
TrptStdCalibration = TForm
qrStdCal = TQuickReport
d.h. die Komponenten selber liefern falsche Werte. Greife ich aber über Sender zu passt es.
Nach etwas probieren habe ich herausbekommen, dass Sender vom Typ TQRStandardPreview ist und der wird in QRPrev definiert
Korrekt ist also
Left := TQRStandardPreview(Sender).Left;
Die Left-Zuweisungen haben nur dazu gedient, um nach Haltepunkt alle Werte anzuzeigen
Im Anhang ein Screenshot mit der Lage des Reports