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?
HBPrinter und Memofeld [erledigt]
Moderator: Moderatoren
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 486
- Registriert: Do, 14. Jun 2007 18:22
- Wohnort: 94065 Waldkirchen
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 5 Mal
HBPrinter und Memofeld [erledigt]
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
Wolfgang
Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
-
- 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
Hallo Wolfgang,
die Anzahl der Zeilen kannst Du mit MlCount ermitteln.
Gruß
Volker
die Anzahl der Zeilen kannst Du mit MlCount ermitteln.
Gruß
Volker
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: HBPrinter und Memofeld
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:
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)
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
Oder aber die Anzahl der nötigen Zeilen berechnen und anders vorgehen: ::PrintMemoCountLines(cMemoText,nMaxLineLen)
Gruß
Hubert
Hubert
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 486
- Registriert: Do, 14. Jun 2007 18:22
- Wohnort: 94065 Waldkirchen
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 5 Mal
Re: HBPrinter und Memofeld
Danke Hubert,
probier ich mal.
probier ich mal.
Beste Grüße
Wolfgang
Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Wolfgang
Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
- Wolfgang_B
- Rekursionen-Architekt
- Beiträge: 486
- Registriert: Do, 14. Jun 2007 18:22
- Wohnort: 94065 Waldkirchen
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 5 Mal
Re: HBPrinter und Memofeld
Hallo Hubert,
du meintest bestimmt "PrintMemoLineCount".
Funktioniert
Vielen Dank!
du meintest bestimmt "PrintMemoLineCount".
Funktioniert
Vielen Dank!
Beste Grüße
Wolfgang
Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Wolfgang
Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: HBPrinter und Memofeld [erledigt]
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
aber ich kann mich irren, das ist schon lange her dass ich das gemacht habe und ich drucke selten Memos
Gruß
Hubert
Hubert