lzRichEdit1 drucken
-
- Beiträge: 28
- Registriert: Mo 29. Jan 2007, 18:50
lzRichEdit1 drucken
ich habe mir die Komponente lzRichEdit heruntergeladen und nun möchte ich den text auch ausdrucken weiss aber nicht wie.
Kann mir jemand helfen?
Kann mir jemand helfen?
Re: lzRichEdit1 drucken
Soweit mir bekannt ist, kann diese Komponente nicht drucken.
Ich glaube man kann aber RTF speichern und dann mit einem anderen Prog wie Word oder OpenOffice drucken.
Es gibt vllt. noch andere Möglichkeiten, aber die sind mir im Moment nicht bekannt.
Ich glaube man kann aber RTF speichern und dann mit einem anderen Prog wie Word oder OpenOffice drucken.
Es gibt vllt. noch andere Möglichkeiten, aber die sind mir im Moment nicht bekannt.
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: lzRichEdit1 drucken
Du könntest n Bildschirmfoto der Komponente machen und das drucken.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 28
- Registriert: Mo 29. Jan 2007, 18:50
Re: lzRichEdit1 drucken
esrt einmal danke ,aber ich möchte in einem Programm eine möglichkeit schaffen um einen Serienbrief oder Aushand zu erstellen ohne noch andere Programme zu nutzen.
Ich habe mir mal richview angesehen , aber auch damit krieg ich es nicht hin auszudrucken.
Gibt es denn andere Kostenlose Komponenten eine Memo oder sowas zu editieren ähnlich wordpad und dann drucken
Ich habe mir mal richview angesehen , aber auch damit krieg ich es nicht hin auszudrucken.
Gibt es denn andere Kostenlose Komponenten eine Memo oder sowas zu editieren ähnlich wordpad und dann drucken
Re: lzRichEdit1 drucken
Naja, wenn du nur auf Windows drucken willst:
Da lzRichEdit sowieso das entsprechende MS Control verwendet (z.B. aus RICHED20.DLL) kannst du das vllt. nach dieser Anleitung hinbiegen:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Wenn es auf Linux auch laufen sollte, geht das nat. nicht.
Aber da muss du selber durch. Wer viel will, muss auch viel schwitzen.
Viel Glück!
Da lzRichEdit sowieso das entsprechende MS Control verwendet (z.B. aus RICHED20.DLL) kannst du das vllt. nach dieser Anleitung hinbiegen:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Wenn es auf Linux auch laufen sollte, geht das nat. nicht.
Aber da muss du selber durch. Wer viel will, muss auch viel schwitzen.

Viel Glück!
Re: lzRichEdit1 drucken
OK, bei mir hat sich ein Termin verschoben, deshalb habe ich das MSDN Bsp. kurz übersetzt.
Kann man ja vllt. mal brauchen.
Der Code bezieht sich auf die Demo bei lzRichEdit (Exemplo...), benötigt noch einen PrintDialog.
Das druckt hier, ist aber nur so runtergehackt. Ich war selber erschrocken, dass es es funktioniert hat und übernehme keine Garantie.
Kann man ja vllt. mal brauchen.
Der Code bezieht sich auf die Demo bei lzRichEdit (Exemplo...), benötigt noch einen PrintDialog.
Das druckt hier, ist aber nur so runtergehackt. Ich war selber erschrocken, dass es es funktioniert hat und übernehme keine Garantie.

Code: Alles auswählen
uses Windows, Printers, OSPrinters, richedit;
...
function PrintRTF(REhwnd: HWND; PRhdc: HDC ): boolean;
var di:DOCINFO;
cxPhysOffset,cyPhysOffset,cxPhys,cyPhys,cpmin:integer;
fr: FORMATRANGE;
Success : Boolean;
begin
if StartDoc(PRhdc, @di)=0 then
begin
result:=False;
Exit;
end;
cxPhysOffset := GetDeviceCaps(PRhdc, PHYSICALOFFSETX);
cyPhysOffset := GetDeviceCaps(PRhdc, PHYSICALOFFSETY);
cxPhys := GetDeviceCaps(PRhdc, PHYSICALWIDTH);
cyPhys := GetDeviceCaps(PRhdc, PHYSICALHEIGHT);
// Create "print preview".
SendMessage(REhwnd, EM_SETTARGETDEVICE, PRhdc, Round(cxPhys/2));
fr.hdc := PRhdc;
fr.hdcTarget := PRhdc;
// Set page rect to physical page size in twips.
fr.rcPage.top := 0;
fr.rcPage.left := 0;
fr.rcPage.right := MulDiv(cxPhys, 1440, GetDeviceCaps(PRhDC, LOGPIXELSX));
fr.rcPage.bottom := MulDiv(cyPhys, 1440, GetDeviceCaps(PRhDC, LOGPIXELSY));
// Set the rendering rectangle to the pintable area of the page.
fr.rc.left := cxPhysOffset;
fr.rc.right := cxPhysOffset + cxPhys;
fr.rc.top := cyPhysOffset;
fr.rc.bottom := cyPhysOffset + cyPhys;
SendMessage(REhwnd, EM_SETSEL, 0, LPARAM(-1)); // Select the entire contents.
SendMessage(REhwnd, EM_EXGETSEL, 0, LPARAM(@fr.chrg)); // Get the selection into a CHARRANGE.
Success := TRUE;
// Use GDI to print successive pages.
while ((fr.chrg.cpMin < fr.chrg.cpMax) AND Success) do
begin
Success := StartPage(PRhdc) > 0;
if (not Success) then break;
cpMin := SendMessage(REhwnd, EM_FORMATRANGE, 1, LPARAM(@fr));
if (cpMin <= fr.chrg.cpMin) then
begin
Success := FALSE;
break;
end;
fr.chrg.cpMin := cpMin;
Success := EndPage(PRhdc) > 0;
end;
SendMessage(REhwnd, EM_FORMATRANGE, 0, 0);
if (Success) then EndDoc(PRhdc) else AbortDoc(PRhdc);
result:= Success;
end;
...
procedure TForm1.ToolButton29Click(Sender: TObject);
begin
If PrintDialog1.Execute then PrintRTF(lzRichEdit1.Handle,TWinPrinter(Printer).Handle);
end;
-
- Beiträge: 28
- Registriert: Mo 29. Jan 2007, 18:50
Re: lzRichEdit1 drucken
Hat leider nicht funktioniert,er druckt nicht,der printdialog geht auf, der Success kommt aber im Drucker steht 0 anstehende Dokumente
Aber trotzdem danke für die Bemühungen
Aber trotzdem danke für die Bemühungen
Re: lzRichEdit1 drucken
Hmm, da kann ich nichts dazu sagen. Hier druckt das und es ist das von Microsoft empfohlene Verfahren.Emsbootsmann hat geschrieben:Hat leider nicht funktioniert,er druckt nicht,der printdialog geht auf, der Success kommt aber im Drucker steht 0 anstehende Dokumente
Aber trotzdem danke für die Bemühungen
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
Re: lzRichEdit1 drucken
Habs vorhin probiert,Win XP 32bit und Laz 1.0.irgendwas funktioniert einwandfrei.
Edit:
Danke Theo für deine Zeit und für den Code
Edit:
Danke Theo für deine Zeit und für den Code

Zuletzt geändert von creed steiger am Mo 9. Dez 2013, 19:18, insgesamt 1-mal geändert.
-
- Beiträge: 28
- Registriert: Mo 29. Jan 2007, 18:50
Re: lzRichEdit1 drucken
Ich habs gerade auch ausprobiert, auf xp läufts auf win 7 leider nicht, es scheint so als übergibt er die Seite nicht,der Drucker wird geöffnet aber die Seite nicht übergeben