Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
Delphi 10.4 Sydney
|
AW: Fastreport und UHD Crafik cards
3. Dez 2020, 10:03
Delphi-Quellcode:
// einfach mal den Quelltext anders gestaltet, vielleicht hilft dir das schon etwas weiter
// das eigentliche Problem einzukreisen!
procedure TForm7.frxReportRiskBeforePrint(Sender: TfrxReportComponent);
var
LRect: TRect;
LMetaFile: TMetafile;
LChart: TChart;
begin
// erstmal gucken, ob der Sender überhaupt der richtige Typ ist
if Sender is TfrxPictureView then
begin
LChart := nil;
// unter der Voraussetzung, dass deine TfrxPictureView-Komponenten so heißen, machen wir
// hier nur den Vergleich von zwei Objekt(-Zeigern), was schneller geht als der alte Stringvergleich
if Sender = Picture2 then
begin
LChart := Chart1;
end
else if Sender = Picture3 then
begin
LChart := Chart3;
end;
// hier bietet es sich an, dass in Teilfunktionen zu zerlegen (nicht gezeigt)
if Assigned(LChart) then
begin
// hier war irgendwie Round für Width und Height mit drin? Braucht man in der VCL nicht und
// ich bin sicher, dass in FMX der Typ TRect auch mit Integern ist.
LRect := Rect(0, 0, Sender.Width, Sender.Height);
LMetaFile := LChart.TeeCreateMetafile(False, LRect);
try
TfrxPictureView(Sender).Picture.Assign(LMetaFile);
finally
// wer erzeugt, muss auch freigeben, siehe auch die Doku dazu:
// http://www.teechart.net/docs/teechart/vclfmx/lib/html/TCustomTeePanel.TeeCreateMetafile.html
LMetaFile.Free;
end;
end;
end;
end;
|
|
Zitat
|