Ich baue mir eine QR-Code-Grafik in einer PaintBox MyPaintBox zusammen.
Diese Paintbox liegt auf einem TabSheet, welches der Benutzer nicht sieht.
Das klappt alles, bis auf das Speichern.
Code:
// MyPaintBox speichern ...
if not QRCodeSave( 'c:\temp\test.bmp', MyPaintBox ) then
// ..
function QRCodeSave( aFileName : string; aPaintBox : TPaintBox ) : boolean;
var xBitmap : Graphics.TBitmap;
xWidth, xHeight : Integer;
Begin
result := false;
if fileDirOk( aFileName ) then begin
try
xWidth := aPaintBox.Width;
xHeight := aPaintBox.Height;
xBitmap := Graphics.TBitmap.Create;
xBitmap.Height := xHeight;
xBitmap.Width := xWidth;
xBitmap.Canvas.CopyRect( Rect( 0, 0, xWidth, xHeight ),
aPaintBox.Canvas,
Rect( 0, 0, xWidth, xHeight ) );
try
xBitmap.SaveToFile( aFileName );
result := true;
except
on e:
exception do begin
FehlerOk( 'QR-Code Fehler : ' + e.Message );
end;
end;
finally
xBitmap.Free;
end;
end else begin
// Ups
end;
end;
In der gespeicherten Datei befindet sich dann ein Ausschnitt aus dem gerade sichtbaren Tabsheet der der Position und dem Bereich der PaintBox entspricht.
Wenn ich die PaintBox im sichtbaren Bereich unterbringe, was aber nicht so sein soll, wird der richtige Inhalt gespeichert.
Die Frage ist nun, wie bekommt man den Inhalt einer nicht sichtbaren PaintBox in eine Datei.
Thanks in advance
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.