Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Drucken unter Delphi 5

Empfohlene Antworten

Veröffentlicht

Wie erstelle ich eine Druckfunktion unter Delphi 5??

:confused:

Das soll mit Delphi 5 Enterprise nicht möglich sein. Ist es denn unter Delphi 5 Professionell möglich und wie sieht das ganze aus??

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

  • Autor

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:

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

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...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.