TChart Drucken



  • witte schrieb:

    wolfshuendchen schrieb:

    [C++ Error] measure.cpp(183): E2316 'auto_prt' is not a member of 'std'

    Also richtig abschreiben sollteste schon.

    also wenn ich das abschreiben würde wäre ich ja wohl nicht ganz bei sinnen!
    hab mich da nur kurz gefragt, ob vielleicht prt statt ptr von wegen print..
    😉

    aber geht immernoch nicht :S
    es taucht derselbe fehler auf wie bei den einfacheren beispielen
    (erste post, versuch 1 und 3 😉 )
    ich mach mal printscreen!

    cpubeimdrucken.bmp (1.2 MB)



  • Wie sieht jetzt dein Code aus?



  • so wie deiner, nur eben mit dem memory und der kleinen verbesserung beim einten fehler !



  • Das Problem ist, dass dein Ausdruck zu klein ist?
    Geh mal mit dem Debugger durch und schau dir width und height an.



  • also.. anfangs war es so:

    width = 11; height =3; (Zufallswerte)

    dann hab ich nachgesehn vor der if abfrage

    width = 6749; height = 4233;

    dasselbe noch, wenn ich vor dem Printer()->BeginDoc(); stoppe
    (ph = 4760)

    und die if-Schleife wird auch durchlaufen 😉



  • Das sieht eigentlich gut aus. Ohne deinen Code jetzt direkt testen zu können weiß ich auch nicht weiter.
    Der von mir gezeigte Code funktioniert bei mir bis jetzt auf allen möglichen Druckern.



  • Ich kann mich nicht erinnern, in deinem Code wirklich was verändert zu haben..
    eventuell wird das Diagramm vom Chart mit falschen grössen übergeben?
    wäre das möglich?

    void __fastcall TForm1::BPrintGraphClick(TObject *Sender)
    {
    if( PrintDialog1->Execute())
    {
        Controls::TBevelCut oldbevel = Chart1->BevelOuter;
        Chart1->BevelOuter = Controls::bvNone;
        TColor oldcolor = Chart1->Color;
        Chart1->Color = clNone;
        std::auto_ptr<TMetafile> tmpmeta(Chart1->TeeCreateMetafile( true, Chart1->ClientRect));
        int width, height;
        try
        {
            Printer()->Orientation = Printers::poLandscape;
            int pw(Printer()->PageWidth), ph(Printer()->PageHeight);
            width = pw-20;
            double fact = width*1.0/tmpmeta->Width;
            height = tmpmeta->Height*fact;
            if( (height + 100) > ph)
            {
               height = ph - 110;
               width = width*fact;
            }
            Printer()->BeginDoc();
            Printer()->Canvas->StretchDraw(Rect(10,100,width+10, height+100), tmpmeta.get());
            Printer()->EndDoc();
        }
        __finally
        {
            Chart1->BevelOuter = oldbevel;
            Chart1->Color = oldcolor;
        }
    }
    }
    


  • Ich sehe hier keinen Fehler.
    Hier ist übrigens der Orginal-FAQ-Text
    http://www.steema.com/support/faq/NewVCL/FAQ_VCL_PRINTING.htm
    Was für eine TeeChart-Variante verwendest du denn?



  • TChart Standardversion 4.04
    (war im CBuilder Version 6 automatisch drin) ^^

    gibt es da wirklich so grosse unterschiede? ô.O



  • Die Standardversion war gegenüber der Pro-version schon recht eingeschränkt. Ob es sich jetzt auch darauf bezieht weiß ich nicht. Ich kann deinen Code dann auch nicht richtig testen, da derzeit nur noch die Versionen 5.0Pro und 8.04Pro auf meinem Rechner habe.


Anmelden zum Antworten