AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

JvRichEdit drucken

Ein Thema von t0mmy · begonnen am 18. Jul 2011 · letzter Beitrag vom 19. Jul 2011
Antwort Antwort
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#1

JvRichEdit drucken

  Alt 18. Jul 2011, 11:32
Hallo!

Also ich hab ein formatiertes Dokument mit Bildern in JvRichEdit erstellt.
Nun zu meinem problem.. Jedes dieser Bilder verfügt über eine Überschrift, dem Bild, und einem kleinen Text darunter. Mit dem Befehl:

JvRichEdit1.Print(JvRichEdit1.Lines.Text); Drucke ich den Inhalt der JvRichEdit in einer Wurst.

Als erstes würde ich gerne wissen:
1. Wie bekomme ich wie im Notepad die Anzahl der Seite --> sprich Seite 1 von x
2. Wie löse ich das Wurstproblem? D.h. wenn ich einen Absatz habe (Überschrift, Bild und Text) und der nicht auf die Seite draufpasst.. soll er auf die nächste seite gedruckt werden.

PS.: Is das eine Aufgabe der Druckprozedur oder muss ich da schon beim erstellen des Dokumentes in der JvRichEdit einstellungen vornehmen.

mfg
  Mit Zitat antworten Zitat
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#2

AW: JvRichEdit drucken

  Alt 18. Jul 2011, 15:36
Also kann mir niemand helfen bzw. tipps geben... oder einen link -.-
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: JvRichEdit drucken

  Alt 18. Jul 2011, 15:48
Nun mal nicht so ungeduldig.

Zunächst einmal habe ich keine Ahnung was "Wurst" mit Drucken zu tun hat, darum kann ich Dir gar keine detailierten Infos weiterreichen.

Im Prinzip wird bei jeder Textverarbeitung der Seitenumbruch abhängig vom zu bedruckenden Papier gemacht. Oder besser, der Seitenumbruch erfolgt an Hand der vom Druckertreiber gemeldeten Daten über das Paperformat.
Ältere Textverarbeitugssysteme wurden noch direkt mit diesen Werten gefüttert, so sahen dann auch einige Ausdrucke aus.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#4

AW: JvRichEdit drucken

  Alt 18. Jul 2011, 15:58
Hallo!!

Also, Ich habe vlt meine frage falsch und zu lang formuliret..

Kurz: Wie bekomme ich einen automatischen Zeilenumbruch (wenn es sowas für TJvRichEdit überhaupst gibt -.-)..und wie ist es möglich die Seitennummerierung einzufügen?
Also der Text wird nur auf A4 gedruckt.. falls das was hilft.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: JvRichEdit drucken

  Alt 18. Jul 2011, 18:14
Dann schau mal nach .Pagerect, dort sollte das Papierformat definiert sein.
Soweit ich weiß, kann TRichEdit nichts mit "Header" und "Footer" anfangen, aber bei TJvRichEdit kann das ja anders sein.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#6

AW: JvRichEdit drucken

  Alt 19. Jul 2011, 08:50
.PageRect scheint interessant zu sein.. aber is es das richtige nachdem ich suche.. naja jetzt kommt sicher.. ja probiers aus.
Aber da ich schon über 30 seiten verdruckt habe durchs probieren.. bin ich mittlerweile vorsichtiger geworden...

PageRect gibt doch nur das Rechteck an.. indem der inhalt gedruckt wird. Wie soll ich da eine intelligenten Seitenumbruch erstellen... der mir bei einem Absatz mit Überschrift diesen automatisch auf die nächste Seite druckt???

Zudem kommt die Seitennummerierung -.-
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#7

AW: JvRichEdit drucken

  Alt 19. Jul 2011, 09:37
Hi,

kleiner Tipp am Rande:
Nutze zum Testen doch einen PDF-Drucker (z.B. FreePDF (XP)) - da kannst du testen so viel du willst und es rettet den Regenwald


LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#8

AW: JvRichEdit drucken

  Alt 19. Jul 2011, 14:40
Danke für den Tipp.. werd ich machen... (warum ist mir das nicht eingefallen *grübel*)
Naja.. Wenn ich noch wüsste wie ich eine formatierte durckausgabe erstelle dann wär mein problem gelöst..
bis dahin probier ich mal rum -.-
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: JvRichEdit drucken

  Alt 19. Jul 2011, 15:36
Also vorneweg, das Trichedit ist Kein Textverarbeitungssystem!
Es Ersetzt nicht Word & Co!
D.h. es gibt keine Kopf und Fußzeile, keine Abschnittswechsel, keine Seitenzählung usw.!

Wenn Du eine Seitenzählung willst, dann bleibt Dir nichts anderes als die Ausdruckroutine an Deine Bedürfnisse anzupassen:
Delphi-Quellcode:
procedure TCustomRichEdit.Print(const Caption: string);
var
  Range: TFormatRange;
  LastChar, MaxLen, LogX, LogY, OldMap: Integer;
  SaveRect: TRect;
begin
  FillChar(Range, SizeOf(TFormatRange), 0);
  with Printer, Range do
  begin
    Title := Caption;
    BeginDoc;
    hdc := Handle;
    hdcTarget := hdc;
    LogX := GetDeviceCaps(Handle, LOGPIXELSX);
    LogY := GetDeviceCaps(Handle, LOGPIXELSY);
    if IsRectEmpty(PageRect) then
    begin
      rc.right := PageWidth * 1440 div LogX;
      rc.bottom := PageHeight * 1440 div LogY;
    end
    else begin
      rc.left := PageRect.Left * 1440 div LogX;
      rc.top := PageRect.Top * 1440 div LogY;
      rc.right := PageRect.Right * 1440 div LogX;
      rc.bottom := PageRect.Bottom * 1440 div LogY;
    end;
    rcPage := rc;
    SaveRect := rc;
    LastChar := 0;
    MaxLen := GetTextLen;
    chrg.cpMax := -1;
    // ensure printer DC is in text map mode
    OldMap := SetMapMode(hdc, MM_TEXT);
    SendMessage(Self.Handle, EM_FORMATRANGE, 0, 0); // flush buffer
    try
      repeat
        rc := SaveRect;
        chrg.cpMin := LastChar;
        LastChar := SendMessage(Self.Handle, EM_FORMATRANGE, 1, Longint(@Range));
        if (LastChar < MaxLen) and (LastChar <> -1) then NewPage;
      until (LastChar >= MaxLen) or (LastChar = -1);
      EndDoc;
    finally
      SendMessage(Self.Handle, EM_FORMATRANGE, 0, 0); // flush buffer
      SetMapMode(hdc, OldMap); // restore previous map mode
    end;
  end;
end;
(Da Dir augenscheinlich die RTL fehlt habe ich sie einfach mal kopiert)

Vielleicht hilft Dir auch das hier weiter.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz