Drucken aus Memos

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
TheLinuxist
Beiträge: 15
Registriert: Do 9. Sep 2010, 19:44
OS, Lazarus, FPC: Ubuntu 11.04 (L0.9.30, FPC 2.4.2)
CPU-Target: 32/64

Drucken aus Memos

Beitrag von TheLinuxist »

Hallo,

Ich habe eine Frage: Bei Delphi war es ja möglich, aus einem RichEdit (Meines Wissens auch über Memos) einfach mittels einer Methode zu drucken. Habe leider diese Methode nicht in Lazarus gefunden. Bitte helft mir da doch.
Also, ich will einen Text (Memo, also Plain Text) drucken. Habe schon einen PrintDialog auf meinem Form platziert und ihn auf einen Button / Menüeintrag gelegt. Also:

Code: Alles auswählen

procedure TForm1.PrintButton.Click();
var result: Boolean;
begin
  result = PrintDialog1.Execute;
  if (result) then 
  begin
    // Hier kommt der Code zum Drucken hin
  end;
end;
Bitte keine Workarounds wie "Kopier' es in OpenOffice".
Danke im Voraus,

TheLinuxist

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Drucken aus Memos

Beitrag von MmVisual »

Code: Alles auswählen

If Not PrintDlg.Execute Then Exit;
Printer.BeginDoc; 
Printer.Canvas.Pen.Color := clBlack;
Printer.Canvas.Brush.Color := clWhite;
Printer.Canvas.Font.Color := clBlack;
Printer.Canvas.Font.Size := 10;
: :
printer.Canvas.TextOut(....); // Für jede Zeile
: :
//Printer.NewPage;
: :
Printer.EndDoc;
Sowas?
EleLa - Elektronik Lagerverwaltung - www.elela.de

TheLinuxist
Beiträge: 15
Registriert: Do 9. Sep 2010, 19:44
OS, Lazarus, FPC: Ubuntu 11.04 (L0.9.30, FPC 2.4.2)
CPU-Target: 32/64

Re: Drucken aus Memos

Beitrag von TheLinuxist »

Haargenau, so was hab ich gesucht. Hab aber jetzt noch eine Frage: Wie schaut's bei Lazarus mit formatiertem Text (RTF o.Ä. aus). In Delphi (Bin gerade erst umgestiegen) gab es ja den RichEdit, aber ich hab so was jetzt nicht gefunden...

Danke im Voraus
Ich kann mir keine Signatur leisten :-(

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Drucken aus Memos

Beitrag von Teekeks »

da kann ich gleich einmal meine eigene Druckerunit in den Raum werfen:
Mit der kann man Text formatiert (links-, rechtsbündig und Zentriert, Tabellen, alle Schriftarten und Styles, Header, Footer, verschiedene Blattgrößen und Druckerauflösungen, Zeilenabstand usw) auf den Drucker ausgeben.

Vl. nützt es dir ja was.

Im Anhang ist sowohl die eigentliche Unit, sowie auch ein kleines Beispiel.

Gruß Teekeks
Dateianhänge
PDPrinter_Beispiel.zip
Ein Beispiel
(503.36 KiB) 270-mal heruntergeladen
pdprinter.pas
Die eigendliche Unit
(14.17 KiB) 236-mal heruntergeladen

TheLinuxist
Beiträge: 15
Registriert: Do 9. Sep 2010, 19:44
OS, Lazarus, FPC: Ubuntu 11.04 (L0.9.30, FPC 2.4.2)
CPU-Target: 32/64

Re: Drucken aus Memos

Beitrag von TheLinuxist »

Danke dir. Aber so was bequemes wie TRichEdit aus Delphi gibt es nicht?

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Drucken aus Memos

Beitrag von Teekeks »

Das weiß ich ehrlich gesagt nicht, vl. kann ja ein anderer hier was dazu sagen?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6782
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Drucken aus Memos

Beitrag von af0815 »

Nein und zwar deshalb, weil es es das Richedit in Delphi (VCL) auch nicht gibt. In der VCL befindet sich eine Wrapperklasse die ein Windowscontrol einkapselt. Wenn man hier im Forum sucht, wird man auf Workarounds stossen, die es ermöglichen unter Windows selbst, einen solchen Wrapper zumindest ansatzweise zu erzeugen.

Eine ähnliche Funktion soll das RichMemon auss dem Lazarus -ccr haben. Bei google mal "Lazarus RichMemo" eingebn und in den Einntrag aus dem Lazarus-Wiki ansehen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

TheLinuxist
Beiträge: 15
Registriert: Do 9. Sep 2010, 19:44
OS, Lazarus, FPC: Ubuntu 11.04 (L0.9.30, FPC 2.4.2)
CPU-Target: 32/64

Re: Drucken aus Memos

Beitrag von TheLinuxist »

Ah, OK. Denke für eine Textverarbeitung wird das gute Stück reichen, oder (also als "Verbesserung" für Wordpad oder Ähnliches)? Kann man daraus direkt drucken oder muss ich da irgendwie eine Funktion benutzen?
Teekeks: Deine Unit klingt wirklich gut. Wie installiere ich so etwas? Einfach ins Unit-Verzeichnis schieben und per uses einbinden? Danke schön!
Ich kann mir keine Signatur leisten :-(

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Drucken aus Memos

Beitrag von Teekeks »

Ja genau, einfach ins Suchverzeichniss kopieren (also am einfachsten in den Programmordner).

Wie gesagt: schau dir mein Beispielprojekt einfach mal an.

Wenn du noch Fehler finden solltest, dann kannst du dich ja an mich wenden.

TheLinuxist
Beiträge: 15
Registriert: Do 9. Sep 2010, 19:44
OS, Lazarus, FPC: Ubuntu 11.04 (L0.9.30, FPC 2.4.2)
CPU-Target: 32/64

Re: Drucken aus Memos

Beitrag von TheLinuxist »

Danke. Plane einen Projektrelease unter der GNU General Public License (GPL). Darf ich das verwenden, wenn ich im Readme und im Handbuch auf dich verweise?
Also so was wie "Speziellen Dank an Teekeks aus dem deutschen Lazarusforum (http://lazarusforum.de" onclick="window.open(this.href);return false;) für seine Unit "pdprinter", die uns die Umsetzung des Projekts enorm erleichtert hat"?
Danke dir schon mal.
Ich kann mir keine Signatur leisten :-(

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Drucken aus Memos

Beitrag von Teekeks »

Das ist so auf jeden Fall schon einmal gut so.

Über die genaue Lizenz habe ich mir noch nicht viele Gedanken gemacht, ich tendiere aber zu GPL / LGPL (weiß es aber noch nicht genau).

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Drucken aus Memos

Beitrag von MmVisual »

Ich hab mal das TRichMemo geladen und installiert.

Dabei musste in der Zeile 105 der Datei Win32RichMemo.pas so geändert werden:
PrepareCreateWindow(AWinControl, AParams, Params);

Mit Einfügen über die Zwischenablage übernimmt der die Formatierung und Bilder nicht.
Drucken geht natürlich auch nicht.
EleLa - Elektronik Lagerverwaltung - www.elela.de

icke
Beiträge: 1
Registriert: Mi 18. Jul 2012, 13:57

Re: Drucken aus Memos

Beitrag von icke »

Hallo Teekeks!
erst mal besten Dank für die Arbeit die Du Dir mit der Unit gemacht hast.
So was habe ich gesucht!

Ich habe vor Jahren in PHP mit der KLasse FPDF PDF-Dokumente zum Drucken erzeugt.
Die funktionierte ähnlich, nur dass im PDF Dokument alles aus Tabellenzellenähnlichen Bereichen zusammengesetzt ist.

Also noch mal danke! :)

Ich habe allerdings auch eine Weile gebraucht, bis ich herausbekommen habe, wie das mit den Winkeln in der Tabelle gemeint ist.
leider stand das nirgendwo. :(
Aber ich hab es nach vielen Versuchen und Tests hinbekommen.

Für alle die sich neu an dieser Unit versuchen, folgende Hinweise:
Die Winkel in der Tabelle zeigen dahin, wo die ausgegebene Zeile Bündig ausgerichtet wird.
< entspricht linksbündig
> entspricht rechtsbündig
^ entspricht zentriert.
Weiterhin: header und footer werden auf jeder Seite ausgegeben!
Da ich den Kopf nur auf der ersten Seite ausgeben wollte habe ich eine normale Textzeile mit größerer Schrift genutzt.

Gruß Icke

Larzac
Beiträge: 1
Registriert: So 11. Mai 2014, 12:21

Re: Drucken aus Memos

Beitrag von Larzac »

Hallo Teekeks.
Ich finde deine dpPrinter Unit echt gut!

nun habe ich seit gestern ein Problem. ich habe Lazarus von 1.0.12 auf die aktuelle Version 1.2.2 upgedatet. Nun funktioniert dpPrinter unter Mintlinux 13 Maya nicht mehr! Das gleiche Programm unter WinXP mit Lazarus 1.2.2 - kein Problem.
Ich bin kein so großer Kenner, aber ich meine die Routine bleibt
da hängen:

Code: Alles auswählen

procedure TGtk2WidgetSet.AppWaitMessage;
begin
  WaitingForMessages:=true;
  if not FGtkTerminated then
  begin
    {$IFDEF USE_GTK_MAIN_OLD_ITERATION}
    gtk_main_iteration_do(True);
    {$ELSE}
  [color=#FF4000]  g_main_context_iteration(g_main_context_default, True);[/color]
    {$ENDIF}
  end;
  WaitingForMessages:=false;
end;
Was könnte man machen?
Zuletzt geändert von Lori am Mo 12. Mai 2014, 12:52, insgesamt 1-mal geändert.
Grund: Highlighter

Antworten