Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Fastreport und UHD Crafik cards

  Alt 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;
  Mit Zitat antworten Zitat