Seitenanzahl ermitteln
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 205
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Seitenanzahl ermitteln
Hallo zusammen,
Wie ermittelt ihr die Seitenanzahl eures Ausdrucks, ohne die Anzahl bei Druckbeginn zu kennen?
Ich verwende keinen Report Generator.
Aktuell versuche ich die Druck Prozedur einfach 2x zu durchlaufen, und einmal "ins Leere zu Drucken". Kann das überhaupt funktionieren?
Wie ermittelt ihr die Seitenanzahl eures Ausdrucks, ohne die Anzahl bei Druckbeginn zu kennen?
Ich verwende keinen Report Generator.
Aktuell versuche ich die Druck Prozedur einfach 2x zu durchlaufen, und einmal "ins Leere zu Drucken". Kann das überhaupt funktionieren?
Gruß Dominik
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Seitenanzahl ermitteln
Hallo Dominik,
das kommt ja immer darauf an was gedruckt werden soll. Wenn man die Anzahl der Zeilen kennt kann man sich die Seitenzahl ja vorher ausrechnen.
Wobei ich bei Ausdrucken wie bei Dialogen immer TopLeft starte, nicht BottomLeft, wie Xbase++ das standardmäßig macht. Das erleichtert das Leben ganz ungemein.
Jan
das kommt ja immer darauf an was gedruckt werden soll. Wenn man die Anzahl der Zeilen kennt kann man sich die Seitenzahl ja vorher ausrechnen.
Wobei ich bei Ausdrucken wie bei Dialogen immer TopLeft starte, nicht BottomLeft, wie Xbase++ das standardmäßig macht. Das erleichtert das Leben ganz ungemein.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Rekursionen-Architekt
- Beiträge: 205
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Re: Seitenanzahl ermitteln
Hallo Jan,
da eine Rechnung erstellt wird kenne ich die Zeilenanzahl vorher nicht.
Top left starte ich tatsächlich auch.
Kann ich denn in einen PresSpace drucken der kein Printer ist und somit den ersten Druck verwerfen?
da eine Rechnung erstellt wird kenne ich die Zeilenanzahl vorher nicht.
Top left starte ich tatsächlich auch.
Kann ich denn in einen PresSpace drucken der kein Printer ist und somit den ersten Druck verwerfen?
Gruß Dominik
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Seitenanzahl ermitteln
Hallo Dominik,
aber bei einer Rechnung kennst Du doch vorab die Anzahl der Positionen, oder? Wenn Du dann noch weißt wie hoch unten der Seitenfuß ist, und auf der ersten Seite und den Folgeseiten (da ist der Kopf ja meistens nicht so hoch) wo die Positionen beginnen, kannst Du das ausrechnen. Da du die Höhe der Zeilen aus dem Font auslesen kannst weißt Du auch, wie viel Platz jede Zeile braucht. Und kannst errechnen, wie viele Zeilen Du in den verbleibenden Platz rein bekommst.
Jan
aber bei einer Rechnung kennst Du doch vorab die Anzahl der Positionen, oder? Wenn Du dann noch weißt wie hoch unten der Seitenfuß ist, und auf der ersten Seite und den Folgeseiten (da ist der Kopf ja meistens nicht so hoch) wo die Positionen beginnen, kannst Du das ausrechnen. Da du die Höhe der Zeilen aus dem Font auslesen kannst weißt Du auch, wie viel Platz jede Zeile braucht. Und kannst errechnen, wie viele Zeilen Du in den verbleibenden Platz rein bekommst.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Seitenanzahl ermitteln
also gerade bei Rechnungspositionen ist doch eine Zeile eine Rechnungsposition ... dann sollte es einfach auszurechnen sein, aber zur eigentlichen Frage ...Dominik Krebs hat geschrieben: ↑Mo, 30. Nov 2020 22:28 Hallo Jan,
da eine Rechnung erstellt wird kenne ich die Zeilenanzahl vorher nicht.
Top left starte ich tatsächlich auch.
Kann ich denn in einen PresSpace drucken der kein Printer ist und somit den ersten Druck verwerfen?
Ich habe in meiner Druckerklasse eine Vorschau und wenn die Seite 5 gedruckt werden soll, fange ich auf Seite 1 an, aber die Befehle werden intern nicht an den Drucker presentation space weitergegeben (das weil z.B. evtl. wegen Blocksatz und freie Texte eine Zeilenzahl nicht bekannt ist).
Es ist ja nicht so, dass man fixe Zeilenvorschübe wie früher hat oder die Schriftgröße fix wäre ...
2 Durchläufe (einmal ohne Druckausgabe) sind der richtige Weg, wenn man die Anzahl nicht einfach abschätzen kann.
Gruß
Hubert
Hubert
-
- Rekursionen-Architekt
- Beiträge: 205
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Re: Seitenanzahl ermitteln
So einfach ist es leider nicht.
Eine Zeile ist leider nicht eine Position.
Eine Rechnungsposition besteht aus einem Memo Feld und ist von der länger leider nicht abzuschätzen. Erst nach dem Durchlauf weiß ich wie lange die Position tatsächlich wird.
Kann ich dem oPrinter denn einfach einen anderen PresSpace zuweisen der nicht auf den Drucker zeigt?
Ich verwende die @ SAY Befehle um eine Druckausgabe zu erzeugen. Klappt das dann überhaupt noch?
Eine Zeile ist leider nicht eine Position.
Eine Rechnungsposition besteht aus einem Memo Feld und ist von der länger leider nicht abzuschätzen. Erst nach dem Durchlauf weiß ich wie lange die Position tatsächlich wird.
Kann ich dem oPrinter denn einfach einen anderen PresSpace zuweisen der nicht auf den Drucker zeigt?
Ich verwende die @ SAY Befehle um eine Druckausgabe zu erzeugen. Klappt das dann überhaupt noch?
Gruß Dominik
- BJelinek
- Rekursionen-Architekt
- Beiträge: 221
- Registriert: Sa, 02. Jun 2012 20:57
- Wohnort: 73257 Köngen
- Hat sich bedankt: 10 Mal
- Danksagung erhalten: 3 Mal
Re: Seitenanzahl ermitteln
Hallo Dominik,
druckst Du über set printer to LPTn n=1 to 9
Dann im ersten Durchgang set printer to nul ( Drucken ins Dirwana wie ich immer sage)
Dabei die Seiten mit zählen.
Die folgenden Durchgänge mit dem richtigen set printer to xxxxxx
So mache ich es in meinem Programm, da ich mit GUI=NO keinen WINDOWS-Drucker
unterstützen kann. (Ich lasse mich gern eines besseren belehren.)
druckst Du über set printer to LPTn n=1 to 9
Dann im ersten Durchgang set printer to nul ( Drucken ins Dirwana wie ich immer sage)
Dabei die Seiten mit zählen.
Die folgenden Durchgänge mit dem richtigen set printer to xxxxxx
So mache ich es in meinem Programm, da ich mit GUI=NO keinen WINDOWS-Drucker
unterstützen kann. (Ich lasse mich gern eines besseren belehren.)
Grüße
Bernd
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Bernd
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Seitenanzahl ermitteln
Dominik,
aber auch bei Memofeldern weist Du ja, wie viele Zeilen dabei zusammen kommen. MLCount() gibt Dir die für jedes Feld an. Für alle Datensätze der Rechnung zusammen addieren, und fertig.
Jan
aber auch bei Memofeldern weist Du ja, wie viele Zeilen dabei zusammen kommen. MLCount() gibt Dir die für jedes Feld an. Für alle Datensätze der Rechnung zusammen addieren, und fertig.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Rekursionen-Architekt
- Beiträge: 205
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Re: Seitenanzahl ermitteln
Ja, das werde ich mal versuchen, danke.BJelinek hat geschrieben: ↑Di, 01. Dez 2020 19:00 Hallo Dominik,
druckst Du über set printer to LPTn n=1 to 9
Dann im ersten Durchgang set printer to nul ( Drucken ins Dirwana wie ich immer sage)
Dabei die Seiten mit zählen.
Die folgenden Durchgänge mit dem richtigen set printer to xxxxxx
So mache ich es in meinem Programm, da ich mit GUI=NO keinen WINDOWS-Drucker
unterstützen kann. (Ich lasse mich gern eines besseren belehren.)
Drücke über die tbxWinPrint Klasse, wusste nicht das man den Drucker auf nul setzen kann.
@Jan
Leider ist der Kopf sowie der Fuß Bereich variable und abhängig von mehren Faktoren wie beispielsweise Banner, Fußzeile, mehrere individuelle Rechnungszusätze. Das sind mir dann doch zu viele Dinge ich ich berücksichtigen müsste und die Anzahl der Seiten "zu raten".
Die Rechnung besteht ja nicht nur aus Positionen.
Gruß Dominik
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Seitenanzahl ermitteln
damit nimmt man sich Flexibilität und handelt sich nichts als Ärger ein.Dominik Krebs hat geschrieben: ↑Di, 01. Dez 2020 17:57 Ich verwende die @ SAY Befehle um eine Druckausgabe zu erzeugen. Klappt das dann überhaupt noch?
Clipper und Zeilendrucker konnten nicht viel und warum soll man sich darauf beschränken ?
Natürlich, so mache ich auch meine Vorschau, ABER das ist doch gar nicht nötig !Dominik Krebs hat geschrieben: ↑Di, 01. Dez 2020 17:57 Kann ich dem oPrinter denn einfach einen anderen PresSpace zuweisen der nicht auf den Drucker zeigt?
egal wie man druckt XbpPrinter(), HBPrinter() *** meine Empfehlung *** oder @ SAY bzw. ?Dominik Krebs hat geschrieben: ↑Di, 01. Dez 2020 17:57 So einfach ist es leider nicht.
Eine Zeile ist leider nicht eine Position.
Eine Rechnungsposition besteht aus einem Memo Feld und ist von der länger leider nicht abzuschätzen. Erst nach dem Durchlauf weiß ich wie lange die Position tatsächlich wird.
Wichtig ist, dass man der Druckfunktion per Parameter beibringt, ob sie tatsächlich drucken soll oder ob der Durchlauf nur für die Berechnung (also nötige Zeilenzahl) ist.
In meiner Klasse kümmere ich mich intern um die ganzen Sachen, auch um das Drucken von Memofeldern und berücksichtigt auch die Hardwareränder.
HBPrinter in der Wissensbasis viewtopic.php?p=767#p767
ich liefere viele Beispiele mit, im Quellcode kann man sehen wie ich Blocksatz im Memofeld berechne ...
Meine Klasse eignet sich besonders gut wenn es darum geht alles selbst zu drucken und ganze Dokument Systeme aufzubauen.
Je Ausdruck eine Klasse die voneinander erbt. Kopfpapier mit Logo und Absender, daraus abgeleitet dann Rechnungen Anschreiben etc.
Wer eher freie Reports braucht sollte sich L&L ansehen.
Aber gehen wir von deinem @ SAY aus:
Code: Alles auswählen
Function Drucken( lDrucken )
local nZeile := 0
if empty(lDrucken)
lDrucken := .t.
endif
// wie auch immer die Druckausgaben ermittelt werden
go top
do while ! eof()
....
nZeile++
if lDrucken
@ say oder ? oder wie auch immer
endif
...
endif
...
return nZeile
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Seitenanzahl ermitteln
Dominik,
es ist schwer Dir Deine Fragen zu beantworten wenn Du immer wieder mit neuen Sachen um die Ecke kommst. Von SAY war nie die Rede. Von Memofeldern war nie die Rede. Von variablen Headern und Footern war nie die Rede (wobei ich noch nie gesehen habe das die einfach mal eben zwischendurch sich ändern).
Aber wie auch immer. Ich glaube immer noch, das Du das vorher ausrechnen kannst. Du kennst alle Regeln fü den Ausdruck. Also warum kannst Du all diese Regeln nicht schon vorher einmal durchrechnen?
Jan
es ist schwer Dir Deine Fragen zu beantworten wenn Du immer wieder mit neuen Sachen um die Ecke kommst. Von SAY war nie die Rede. Von Memofeldern war nie die Rede. Von variablen Headern und Footern war nie die Rede (wobei ich noch nie gesehen habe das die einfach mal eben zwischendurch sich ändern).
Aber wie auch immer. Ich glaube immer noch, das Du das vorher ausrechnen kannst. Du kennst alle Regeln fü den Ausdruck. Also warum kannst Du all diese Regeln nicht schon vorher einmal durchrechnen?
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2471
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 103 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Seitenanzahl ermitteln
Die Frage ist warum braucht man die Seitenzahl ?
Das ganze macht für mich nicht unbedingt Sinn, aber ich würde die Sache anders angehen.
Einfach in eine temporäre Datei drucken, diese dann per copy an den Drucker schicken.
Das ganze macht für mich nicht unbedingt Sinn, aber ich würde die Sache anders angehen.
Einfach in eine temporäre Datei drucken, diese dann per copy an den Drucker schicken.
Gruß
Klaus
Klaus
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Seitenanzahl ermitteln
Seite 1 von x, das hat schon Sinn auf mehrseitigen Dokumenten. Aber außer den Druck zu simulieren und so die benötigte Zeilenzahl zu ermitteln, sehe ich in der geschilderten Situation auch keine andere Lösung. Und meines Wissens agieren auch professionelle Reportgeneratoren so.Die Frage ist warum braucht man die Seitenzahl ?
Herzlich,
Tom
Tom
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Seitenanzahl ermitteln
Eine andere nicht ganz zur Frage passende Lösung (off Topic) wäre es List&Label zu verwenden. Der übernimmt das ganze.
Das war damals einer der Gründe L&L zu kaufen den für die Anforderung auf jede Seite die Seitenzahl im Format "Seite: 1 von 6" "Seite 2 von 6" usw. zu Drucken fand ich keine einfache und schnelle Lösung.
Das war damals einer der Gründe L&L zu kaufen den für die Anforderung auf jede Seite die Seitenzahl im Format "Seite: 1 von 6" "Seite 2 von 6" usw. zu Drucken fand ich keine einfache und schnelle Lösung.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Seitenanzahl ermitteln
Ich kann mir überhaupt nicht vorstellen, was hier los wäre, wenn wir keinen professionellen Reportgenerator wie L&L einsetzen würden. Das Drucken selbst ist ja noch eine überschaubare Aufgabe. Aber es hängt so viel dran, vom individuellen Design über daten-/einstellungenabhängiges Druckverhalten und Exporte und automatische Speicherung und Verschlüsselung und Einbindung in Web-Komponenten und Charts und alle möglichen Formen von Datenvisualisierungen bis sonstwohin, dass wir eine eigene Programmierabteilung nur dafür bräuchten, hätten wir L&L nicht.
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Seitenanzahl ermitteln
@Carlo:
Das war übrigens eine meiner ersten Kaufentscheidungen damals, nachdem wir Xbase++ angeschafft hatten. Ich sagte mir, dass wir das mit dem GUI-Krempel schon irgendwie hinkriegen würden, dass aber die Idee, sich auf den tönernen Füßen des Xbase-Drucksystems oder auf schrägen Umwegen wie Dateiexporte in der Druckwelt zu bewegen, keine gute wäre.
Das war übrigens eine meiner ersten Kaufentscheidungen damals, nachdem wir Xbase++ angeschafft hatten. Ich sagte mir, dass wir das mit dem GUI-Krempel schon irgendwie hinkriegen würden, dass aber die Idee, sich auf den tönernen Füßen des Xbase-Drucksystems oder auf schrägen Umwegen wie Dateiexporte in der Druckwelt zu bewegen, keine gute wäre.
Herzlich,
Tom
Tom
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Seitenanzahl ermitteln
Hallo Tom
diese Entscheidung habe ich leider viel zu spät getroffen und mich viel zu lange auf schrägen Umwegen bewegt und sehr viel Zeit mit eigentlich sinnlosem verbraten. Als dann die Anforderung an eine neue Gestaltung der Dokumente mit neuen Details aufkam war es dann Zeit für eine grundlegende Änderung aller Ausdrucke. Rückblickend frage ich mich oft wieso ich nicht viel, viel früher auf L&L gewechselt habe. ......
Ein Grund war sicher ich habe nicht über den Tellerrand gekuckt. L&L habe ich das erste mal bei einem Freund gesehen der damit die Dokumente in seinen Programmen (nicht xbase++) erstellte, ich war schlicht fassungslos. Zurück zu Hause war es dann auch die erste Handlung L&L zu kaufen.
diese Entscheidung habe ich leider viel zu spät getroffen und mich viel zu lange auf schrägen Umwegen bewegt und sehr viel Zeit mit eigentlich sinnlosem verbraten. Als dann die Anforderung an eine neue Gestaltung der Dokumente mit neuen Details aufkam war es dann Zeit für eine grundlegende Änderung aller Ausdrucke. Rückblickend frage ich mich oft wieso ich nicht viel, viel früher auf L&L gewechselt habe. ......
Ein Grund war sicher ich habe nicht über den Tellerrand gekuckt. L&L habe ich das erste mal bei einem Freund gesehen der damit die Dokumente in seinen Programmen (nicht xbase++) erstellte, ich war schlicht fassungslos. Zurück zu Hause war es dann auch die erste Handlung L&L zu kaufen.
Valar Morghulis
Gruss Carlo
Gruss Carlo
-
- Rekursionen-Architekt
- Beiträge: 205
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Re: Seitenanzahl ermitteln
Hallo zusammen,
Eventuell sollte ich mir L&L auch mal anschauen.
Welches Inst denn das passende Produkt und mit wieviel euronen muss ich rechnen?
Und vor allem, was ist alles möglich?
Eventuell sollte ich mir L&L auch mal anschauen.
Welches Inst denn das passende Produkt und mit wieviel euronen muss ich rechnen?
Und vor allem, was ist alles möglich?
Gruß Dominik
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Seitenanzahl ermitteln
L&L ist eine Eierleigendewollmilchsau. Die Lizenzmodelle kann man ggf. wechseln. https://www.combit.net/reporting-tool/
Edit: Mit der Standardedition ist man meistens gut bedient. https://www.combit.net/reporting-tool/e ... ist-label/
Edit: Mit der Standardedition ist man meistens gut bedient. https://www.combit.net/reporting-tool/e ... ist-label/
Herzlich,
Tom
Tom
-
- Rekursionen-Architekt
- Beiträge: 205
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 4 Mal
Re: Seitenanzahl ermitteln
Hallo Tom,
entschuldigt bitte die lange Zeit in der ich nicht geantwortet habe.
Das klingt wirklich vielversprechend. Und da so viele darauf schwören, kann es eigentlich nur gut sein.
Ich denke ich weiß was ich mir zu weihnachten schenke
entschuldigt bitte die lange Zeit in der ich nicht geantwortet habe.
Das klingt wirklich vielversprechend. Und da so viele darauf schwören, kann es eigentlich nur gut sein.
Ich denke ich weiß was ich mir zu weihnachten schenke
Gruß Dominik