TPrinter: Texte und Rechtecke auf einer Seite



  • Hallo,

    wenn ich zuerst im Sourcecode den Textcodezeilen

    Prntr->Canvas->TextOut(300,400,"Test");
    

    und danach den Rechteckcode

    Prntr->Canvas->FrameRect(r);
    

    schreibe, bekomme ich ein geschwärzten Ausdruck in größe der Textfläche. Umgekehrt ist alles in Ordnung.
    wo liegt hier der Fehler ?

    Gruß Siegfried



  • Hallo

    kann ich nicht nachvollziehen. wenn ich diesen Code

    TRect r(300, 400, 350, 415);
      Canvas->TextOut(300,400,"Test");
      Canvas->FrameRect(r);
    

    nehme, kommt in beiden Fällen dasselbe raus, nämlich das was rauskommen soll.
    Setzt du dazwischen noch irgendwelche Farbwerte des Canvas?

    bis bald
    akari



  • wo liegt hier der Fehler ?

    Wie soll jemand hier etwas dazu sagen, wenn du nicht mal mitteilst, wie gross r ist?



  • Hallo,

    wenn ich in dieser Reihenfolge den Code schreibe, ist der komplette Ausdruck in Ordnung.

    TStringList *nRect = new TStringList;
    TPrinter *Prntr = Printer();
    TRect r;
    Prntr->Orientation = poLandscape;      // quer
    Prntr->BeginDoc();
    Prntr->Canvas->Font->Size = 15;
    Prntr->Canvas->TextOut(500,1500,"Project:");
    Prntr->Canvas->Brush->Color = clBlack;
    r = Rect(200,200,1000,1000);
    Prntr->Canvas->FrameRect(r);
    Prntr->EndDoc();
    Prntr->Orientation = poPortrait;     // hochkant
    

    wenn ich jedoch in dieser Reihenfolge schreibe, wird anstand eines lesbaren Textes ein in der größe des Textes schwarzes Feld gedruckt.

    TStringList *nRect = new TStringList;
    TPrinter *Prntr = Printer();
    TRect r;
    Prntr->Orientation = poLandscape;      // quer
    Prntr->BeginDoc();
    Prntr->Canvas->Brush->Color = clBlack;
    r = Rect(200,200,1000,1000);
    Prntr->Canvas->FrameRect(r);
    Prntr->Canvas->Font->Size = 15;
    Prntr->Canvas->TextOut(500,1500,"Project:");
    Prntr->EndDoc();
    Prntr->Orientation = poPortrait;     // hochkant
    

    Hier stehe ich auf dem Schlauch und komme nicht weiter.
    Da ich die erste Reihenfolge einsetzen möchte, um weitere Texte in verbindung mit den Koordinaten der Rechtecke zu verarbeiten, ist diese einfacher zu handhaben.

    Gruß Siegfried 😞



  • TRect r; 
    Printer()->Orientation = poLandscape;      // quer
    Printer()->BeginDoc();
    Printer()->Canvas->Font->Size = 15;
    TBrushRecall *brush= new TBrushRecall(Printer()->Canvas->Brush);
    brush->Store();
    Printer()->Canvas->Brush->Color = clBlack;
    r = Rect(200,200,1000,1000);
    Printer()->Canvas->FrameRect(r);
    delete brush;
    Printer()->Canvas->TextOut(500,1500,"Project:");
    Printer()->EndDoc(); 
    Printer()->Orientation = poPortrait;     // hochkant
    


  • Hallo,

    Danke für die schnelle Antwort.

    Gruß Siegfried 👍


Anmelden zum Antworten