Announcement

Collapse
No announcement yet.

Memo-Feld auf Printer.Canvas ausgeben?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Memo-Feld auf Printer.Canvas ausgeben?

    Hallo beisammen,

    wie kann ich den Inhalt eines Memo-Felds auf Printer.Canvas ausgeben?

    Wenn ich TextOut verwende, werden die CR/LF (natürlich) als Zeichen ausgedruckt...

    Eine Idee wäre, die CR/LF manuell zu extrahieren und die sich so ergebenden einzelnen Zeilen mit TextOut auszugeben.

    Hört sich irgendwie abenteuerlich an <g>. Gibt es einen anderen Weg?

    Ralph

  • #2
    Bestimmt auch abenteuerlich, funktioniert aber <br>
    <pre>
    printer.begindoc;
    yPos:=0;
    for Line := 0 to Druckermemo.Lines.Count - 1 do
    begin
    printer.canvas.textout(xpos,ypos,Druckermemo.Lines[Line]);
    ypos:=ypos+50;
    if ypos>=printer.pageheight then
    begin
    ypos:=0;
    printer.newpage;
    end;
    end;
    printer.enddoc;
    </pre&gt

    Comment


    • #3
      Hallo Frank,

      danke für Deine schnelle Antwort.

      Ich habe Deinen Vorschlag mal wie folgt umgesetzt:

      <PRE><CODE>
      procedure RSMemoOut(x,y: Integer; Text: TMemo);
      var
      Line: Integer;
      begin
      for Line := 0 to Text.Lines.Count - 1 do
      begin
      Printer.Canvas.TextOut(x, y, Text.Lines[Line]);
      Inc(y, 50);
      end;
      end;
      </PRE></CODE>

      Nun bin ich aber nicht in der Lage, das Memofeld aus der Datenbank (SQL) an meine Prozedur zu übergeben...

      <p>
      In meinem Quellcode steht also der Aufruf meiner neuen Prozedur:
      <PRE><CODE>
      RSMemoOut(nTab1, -1000, Betreff);
      </PRE></CODE>

      Wie (bzw. als was) muss ich meine Variable 'Betreff' deklarieren, wenn ich die Daten aus meiner SQL-Tabelle so hole:
      <PRE><CODE>
      Betreff := QueryProjekteBetreff.Value;
      </PRE></CODE>

      Ich bekomme ständig eine Compiler-Warnung wegen inkompatibler Typen (peinlich).

      Schon jetzt danke für jede Hilfe!!

      Ralp

      Comment


      • #4
        Frank,

        danke für Deine Antwort!

        Leider habe ich bei einem MemoField aus der Datenbank jedoch keine Lines, sondern nur den Text als String mit eingebetteten CrLf's.

        Wenn es eine Möglichkeit gäbe, den Text des MemoFields in Lines zu verwandeln, wäre ich sehr glücklich!

        Das war auch, was ich in meiner Frage andeuten wollte: Muss ich den Text manuell in seine Lines zerlegen, oder gibt es eine Funktion dafür?

        Ralp

        Comment


        • #5
          Hat sich erledigt... danke

          Comment

          Working...
          X