Hallo Werner,
zunächst die Frage, welche Version setzt du ein ? Aktuell ist 1.35 !
Dass ein einzeiliges Memofeld NIL zurückliefert ist ein Fehler, hier habe ich nicht richtig initialisiert.
Bei MemoPrint() hingegen müsste sobald der Text nicht mehr in das vorhandene Fenster passt
ganz unten eine neue Seite aufgerufen und auch bedruckt werden:
Code: Alles auswählen
if lNeedNewPage
::NewPage()
::PrintForm()
lNeedNewPage := .f.
endif
Dies ist z.B. dann sinnvoll, wenn man den Fließtext als Memo komplett drucken will.
Für komplexere Seiten mag das eventuell nicht passen.
Du könntest die fixen und variablen Texte in ::PrintForm() für jede Seite einzeln festlegen (die Seitennummer ist da ja bekannt.).
Dann würde PrintMemo() innerhalb seines Rahmens drucken und die anderen Bestandteile würde z.B. in einer DO Case Abfrage :PrintForm() zusteuern.
Code: Alles auswählen
oMyClass:PrintForm()
* Drucke Bestandteile für alle Seiten ...
...
do case
case ::nPageNo=1
case ::nPageNo=2
case ::nPageNo=3
case ::nPageNo>1
...
Sicherlich würde aber auch eine zusätzliche Methode Sinn machen, ich versuche das möglichst bald einzubauen:
PrintMemoPage( nPosX, nPosY, cTxt, cAusrichtung, nMaxLen, cArt, nFarbe, cHochQuer, nMaxBis,nLineFeed ) => cRestNochZuDrucken