HBPrinter und Memofeld [erledigt]

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

HBPrinter und Memofeld [erledigt]

Beitrag von Wolfgang_B »

Hallo,
ich bin gerade wieder mal dabei Huberts Druckerklasse in mein Programm einzubauen. Hier stosse ich auf ein Problem. Es sollen 3 Memofelder, die der Kunde selbst anlegt und die unterschiedlich lang sein können, in ein Formular eingedruckt werden.

Da diese Felder unterschiedlich lang sein können, müßte ich die Anzahl der Zeilen der Memofelder kennen, damit die Texte richtig positioniert (y) werden, Das sollte möglichst generisch sein.

Frage: Wie kann ich die Länge (Anzahl Zeilen) der Memofelder herausfinden, oder wie kann man das irgendwie mit Huberts Klasse lösen?
Zuletzt geändert von Wolfgang_B am Di, 07. Jan 2020 17:50, insgesamt 1-mal geändert.
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Volker
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 26
Registriert: Sa, 29. Okt 2005 13:57
Wohnort: Hof
Hat sich bedankt: 14 Mal
Kontaktdaten:

Re: HBPrinter und Memofeld

Beitrag von Volker »

Hallo Wolfgang,

die Anzahl der Zeilen kannst Du mit MlCount ermitteln.

Gruß
Volker
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: HBPrinter und Memofeld

Beitrag von brandelh »

Hallo,

mlcount() berechnet den Umbruch nach cpi und Clipper Umbruchsregeln, das stimmt nur wenn man einen CPI Schriftsatz und linksbündig gewählt hat,
aber das Umladen in ein Array nach dieser Vorgabe ist ein gangbarer weg.

Wenn die Felder untereinander mit flexiblen Positionen gedruckt werden sollen, habe ich das anders vorgesehen, siehe das Beispiel: TEST.PRG

Wenn man keine Kästchen oder ähnliches benötigt, kann man einfach PrintMemo() machen lassen, dies wird - wenn nötig - einen Seitenumbruch durchführen.
Wenn man mehr Kontrolle möchte gibt es verschiedene Möglichkeiten, hier die Versionsübersicht:

Code: Alles auswählen

   1.37 -  04.04.2013  (= 2013-04-04)
                ::PrintMemo()  Fehler bei Seitenumbruch, gemeldet von <Werner_Bayern>
           NEU  ::abort()      Abbruch des Druckjobs, erstellt von <Werner_Bayern> aus dem Forum.
           NEU  ::PrintMemoCountLines(cMemoText,nMaxLineLen) ermittelt wieviele Zeilen ::PrintMemo() benötigen wird, ohne tatsächlich zu drucken.

   1.36 -  29.01.2012  (= 2012-01-29)
                ::PrintMemoLinePosX und ::PrintMemoLinePosY waren NIL bei einzeiligen Texten
                ::PrintMemo() druckte keine Zeilen mit nur einem Zeichen
           NEU: ::PrintMemoPage() druckt den Text der in den Bereich passt und gibt den Rest zurück
also z.B. mit ::PrintMemoPage() den Text für diese Seite drucken, den Rest speichern und auf die Folgeseite drucken.

Oder aber die Anzahl der nötigen Zeilen berechnen und anders vorgehen: ::PrintMemoCountLines(cMemoText,nMaxLineLen)
Gruß
Hubert
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: HBPrinter und Memofeld

Beitrag von Wolfgang_B »

Danke Hubert,

probier ich mal. :D
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: HBPrinter und Memofeld

Beitrag von Wolfgang_B »

Hallo Hubert,
du meintest bestimmt "PrintMemoLineCount". :wink:

Funktioniert :D :D

Vielen Dank!
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: HBPrinter und Memofeld [erledigt]

Beitrag von brandelh »

Aus dem Gedächtnis müsste die Variable PrintMemoLineCount die aktuell gedruckte Zeilenzahl beinhalten, während die Methode die insgesamt nötige berechnet,
aber ich kann mich irren, das ist schon lange her dass ich das gemacht habe und ich drucke selten Memos ;-)
Gruß
Hubert
Antworten