Ausdruck eines Diagramms aus einem Userform



  • Hallo!
    Bisher habe ich folgenden Code-Teil:

    TPrinter *Prntr = Printer();
      TRect r = Rect(200,200,Prntr->PageWidth - 200,Prntr->PageHeight- 200);
      Prntr->BeginDoc();
      Prntr->Canvas->Brush->Color = clBlack;
      Prntr->Canvas->FrameRect(r);
      Prntr->EndDoc();
    

    Ich möchte ein TDBChart auf diesem Form ausdrucken, das Diagram heißt.
    Wo muss ich wie den Code ergänzen bitte???



  • Wo ist denn dein Code mit dem TDBChart und dem Formular Diagram? Bevor Du hier ne fertige Lösung bekommst, versuche es erstmal selber und stelle dann entsprechende Fragen.

    Todo fuer Dich (in der Hilfe nachlesen):

    Canvas, Draw, CopyRect und speziell weil du drucken möchtest Printer.



  • Hallo

    du kannst das so machen

    DBChart->PaintTo(Prntr->Handle, 0, 0);
    

    wobei die letzten zwei Parameter x und y des oberen rechten Punktes auf der Druckerfläche sind, bei dem der Ausdruck des Diagramms beginnen soll.

    bis bald
    akari



  • @sunday:Ich danke Dir für deine qualifizierte Antwort.

    Ich habe das soweit hinbekommen, allerdings ist das Diagram sehr klein.
    Ich werde weiter probieren.



  • in der TChart-Hilfe gibts zum Drucken ein ganzes Kapitel



  • also das habe ich bis jetzt:

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
      TPrinter *Prntr = Printer();
      //TRect r = Rect(200,200,Prntr->PageWidth - 200,Prntr->PageHeight- 200);
      Prntr->BeginDoc();
      Prntr->Canvas->Brush->Color = clBlack;
      //Prntr->Canvas->FrameRect(r);
      Diagram->PaintTo(Prntr->Handle, 2000, 2000);
      Prntr->EndDoc();
    
    }
    

    Allerdings ist der Ausdruck sehr klein.
    Wo muss ich hier einen Parameter für die Größe mitgeben???



  • Kapitel 5.6 in der TChart Hilfe, z.B. Absatz "Die Ausgabe des Diagramms"



  • richtig, habe mir dieses kapitel auch ausdruckt.
    da steht folgendes:

    Diagram.Height:=Round(1.0*Printer.PageHeight*Diagram.Width/Printer.PageWidth);
      Diagram.Print;
    

    Das gibt aber eine fehlermeldung



  • Hast Du das so abgeschrieben? Kann nicht funktionieren, die Zeile ist in Objekt Pascal. 🙄
    . (Punkt) durch -> und := durch = ersetzen...



  • das das eine andere sprache ist, stand da nicht oder ich habe es überlesen.

    es erscheinen trotzdem folgende fehlermeldungen:

    Erzeugen
    [C++ Fehler] Unit1.cpp(48): E2268 Aufruf der undefinierten Funktion 'Round'
    [C++ Fehler] Unit1.cpp(48): E2294 Auf linker Seite der Struktur ist . oder .* erforderlich
    [C++ Fehler] Unit1.cpp(48): E2294 Auf linker Seite der Struktur ist . oder .* erforderlich
    [C++ Fehler] Unit1.cpp(48): E2294 Auf linker Seite der Struktur ist . oder .* erforderlich
    [C++ Fehler] Unit1.cpp(49): E2235 Elementfunktion muß aufgerufen oder ihre Adresse übernommen werden



  • lass das Round doch einfach mal weg, oder nimm RoundTo (siehe BCB-Hilfe)...

    und Printer mußt du natürlich durch deine Definition ersetzen (Prntr)


Anmelden zum Antworten