Announcement

Collapse
No announcement yet.

TMetaFileCanvas ausdrucken - leere Seite

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

  • TMetaFileCanvas ausdrucken - leere Seite

    Hallo beisammen,

    im Kontext "Druckvorschau / Drucken / Archivieren" möchte ich auf Vorschlag von Hagen eine Liste von TMetaFiles verwenden. Diese MetaFiles sollen dann je nach Bedarf auf den verschiedenen "Zielgeräten" ausgegeben werden.

    Ich scheine jedoch noch ein grundsätzliches Verständnisproblem zu haben... folgender Code druckt nämlich einfach eine leere Seite auf meinem LaserJet5L.

    Was mache ich falsch? Danke für jede Hilfe!

    Ralph

    <PRE>
    <P>
    // MetaFile anlegen (Größe: DIN A4)
    FCurrentPage := TMetaFile.Create;
    FCurrentPage.MMHeight := 2990;
    FCurrentPage.MMWidth := 2100;
    <P>
    // Zeichenfläche anlegen
    FCurrentCanvas := TMetaFileCanvas.Create(FCurrentPage, 0);
    <P>
    // Einstellungen für Zeichenfläche
    FCurrentCanvas.MoveTo(0, 0);
    SetMapMode(FCurrentCanvas.Handle, MM_LOMETRIC);
    FCurrentCanvas.Font.Name := 'Arial';
    <P>
    // Testdaten ausgeben
    FCurrentCanvas.TextOut(50, -50, 'TestText');
    <P>
    // Zeichenfläche freigeben
    FCurrentCanvas.Free;
    <P>
    // Testdaten drucken
    Printer.PrinterIndex := -1;
    Printer.Copies := 1;
    Printer.Orientation := poPortrait;
    Printer.BeginDoc;
    Printer.Canvas.Draw(0, 0, FCurrentPage);
    Printer.EndDoc;
    </PRE>

  • #2
    Hi,

    du solltest bei der Freigabe der Zeichenfläche wie folgt vorgehen:

    var
    fCurrentPage : TMetafile;

    begin
    :
    :
    //Zeichenfläche freigeben
    fCurrentPage := TMetafile.create;
    fCurrentPage.Handle := CloseEnhMetaFile(fCurrentCanvas.handle);
    //Damit hast du ein richtiges Metafile das du auch ggf.
    //Speichern kannst.

    : //Hier jetzt die Ausgabe via Draw auf dem Drucker
    :

    fCurrentpage.free;
    end;

    Wenn du näheres wissen willst, mail einfach

    Uw

    Comment


    • #3
      Uwe,

      herzlichen Dank für Deine Antwort. Ich bin im Moment leider nicht an meinem Rechner... sobald ich Deinen Vorschlag ausprobieren kann, gebe ich wieder Bescheid.

      Ralp

      Comment

      Working...
      X