Zum Inhalt springen

Drucken unter Delphi 5


ITwork

Empfohlene Beiträge

Hallo Mc-S!

Es wäre gut zu wissen was Du drucken willst:

1. Dein Formular (dann nimm: "MeinFormular.Canvas.Print).

2. Einen Text (z.B. aus der RichEdit-Komponente: "RichEdit.Print").

3. Du Benutzt QuickReport(ist bei Delphi5 im lieferumfang. In der Komponentenleiste unter QReport.).

Du kannst natürlich auch eine Druckkomponente für Delphi suchen (z.B. ReportBuilder, FastReport, CrystalReports...).

Hoffe ich konnte Dir irgendwie helfen :confused:

Gruß,

Maart

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich möchte ein Formular ausdrucken, wobei möglichst nur einen Teil des Formulars. Ich habe aber keine Ahnung wie ich das machen soll/kann.

Alternativ: Ich will einfach die aktuellen Informationen aus dem Formular ausgeben. Also alles was ich da so eingegeben habe.

z.B.

Name: Karl Meyer

Geb. Datum: 1.1.2000

Wohnort: München

.........

:rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo mal wieder!

Also, wenn Du keine Lust hast Dich sofort in QuickReport oder ähnliches einzuarbeiten oder Du schlicht und ergreifend keine Zeit hast hab ich ene einfache, schnelle aber relativ(EXTREM) unelegante Lösung:WD :

Nimm die RichEdit-Komponente aus der Komponentenliste "Win32". Entweder Du packst sie auf das Formular und setzt die Eigenschaft Visible auf False(damit der Anwender sie nicht immer sieht), oder Du erzeugst Sie nur kurz selber zum Ausdrucken.

Wenn Du eine Instanz von RichEdit erzeugt hast, schreibst Du in die Eigenschaft Text den Krempel rein, den du Ausgedruckt haben willst.

Wenn Du mehrere Zeilen haben möchtest:

RichEdit.Text := 'Hallo' + #13 + #10 + 'Welt'; //Hallo ist in der ersten Zeile, Welt in der Zweiten (#13, #10 sind die Steuerzeichen für "neue Zeile" und "Wagenrückluaf").

Wenn Du den Text drin hast, kannste einfach die Methode Print von RichEdit aufrufen (Ich meine da kannst/musst Du dann die Überschrift noch angeben).

Das ist, glaube ich, besser als mit dem Canvas rum zu fuschen. Hoffe es hilft Dir.

Gruß Maart

Link zu diesem Kommentar
Auf anderen Seiten teilen

also, gaaanz einfach:

In der Unit Printers befindet sich die Klasse TPrinter. Mit der kannst du beliebiges auf den Drucker ausgeben. Auch dein Formular oder einen Teil davon.

Beispiel:



var p: TPrinter;

      XDest, YDest, XSrc, YSrc: Integer;

      PWidth, PHeight: Integer;

begin

  // X bzw. Y für Ausgabe auf Papier (hier ist zu beachten, dass ein Pixel beim Drucker sehr klein ist und 

  //abhängig von der gewählten Auflösung. 

  //Z.B. 600 dpi entsprechen 600 Pixel einem Inch = 2,54 cm)

  XDest:= 50;

  YDest:= 50;

  // Ausschnitt des Formulars, der gedruckt werden soll

  XSrc:= 0;

  YSrc:= 0; // Angefangen in der linken oberen Ecke

  PWidth:= self.Width div 2;

  PHeight:= self.Height div 2; // Bis Hälfte Breite bzw. Höhe, also linkes oberes Viertel drucken

  p.BeginDoc;

  // Formular drucken

  BitBlt(p.Canvas.handle, XDest, YDest, PWidth, PHeight, self.Canvas.handle, XSrc, YSrc, SRCCOPY);

  p.EndDoc;

end;


nicht probiert, aber müsste so funktionieren. Wenn du die Ausgabe skalieren willst musst du "StretchBlt" nehmen, falls du die Ausgabe drehen willst "PlgBlt" (geht nur unter NT und folgende, nicht 9x) Für nur Text nimmst du Printer.Canvas.TextOut (Wobei wenn du ein Textfile o.ä. drucken willst die Methoden von vorhandenen Komponenten (TRichEdit o.ä.) einfacher zu nutzen sind ;) ) Ach ja, geht mit allen Delphi Versionen... nicht möglich bei D5 Enterprise :rolleyes: @Pointerman: Eine TCanvas Methode Print gibt es nicht. Was mir gerade noch einfällt... mit dem Beispiel oben Druckst du nur den Client Bereich, also onhe Fenster Titelleiste. Wenn du die haben willst musst du das Handle vom Desktop nehmen bei BitBlt. aus dem Kopf sag ich mal das müsste so gehen:

var: DC: HDC

begin

  DC:= GetDC(0);

  BitBtl(p.canvas.handle, 0, 0, 50, 50, DC, self.left, self.top, SRCCOPY);

  freedc(DC);

end;


so ungefähr zumindest...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...