SetFormSize

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

SetFormSize

Beitrag von Koverhage »

Wenn ich für einen Nadeldrucker ein benutzerdefiniertes Formular anlege,
bekomme ich diese nicht in der Auswahl. Wie kann ich die Nummer feststellen ?
Die pauschale Defintion #define XBPPRN_FORM_USER 256
ist meistens ja nicht richtig.
Gruß
Klaus
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: SetFormSize

Beitrag von brandelh »

Nadeldrucker, da war doch was ... ;-)

Eventuell mußt du das Papierfach ermitteln:

Code: Alles auswählen

aPaperBins := oHBPrinter:paperBins()
nLdfNr := 1
aeval(aPaperBins,{| oBin| qout(alltrim(str(nLdfNr++))+":   ID:",str(oBin[1],4),"Name:",oBin[2]) })
und laut Hilfe bekommt man so die Papierformate:

Code: Alles auswählen

:forms() --> aForms | NIL 

// Die Methode gibt ein zweidimensionales Array mit zwei Spalten zurück. 
// Die linke Spalte des Arrays enthält numerische Werte, mit denen ein Papierformat identifiziert wird, 
// während die rechte Spalte den Namen für ein Format als Zeichenkette enthält:  { {<nFormId>, <cFormName>}, { <...> , <...>      }  } 
// Falls ein Drucker keine unterschiedlichen Papierformate unterstützt, wird NIL zurückgegeben. 

:setFormSize( <nFormId>  ) übergeben werden, um ein bestimmtes Papierformat auszuwählen. 

// Die aktuelle Größe eines Papierformats wird durch die Methode :paperSize() festgestellt. 
ob allerdings ein NADELDRUCKER wirklich das Papierfach über die Papiergröße ermittelt, oder einfach nur der Traktor oder Einzelblatteinzug gewählt werden muss weiß ich nicht.
Mein Canon iP7200 kann jedenfalls per Papiergrößenauswahl in Word die Umschläge aus einem der Fächer ziehen, die Nadler die ich kannte konnten sowas nicht.
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: SetFormSize

Beitrag von Koverhage »

ich muss nochmals auf dieses Thema kommen.

Wie bekomme ich die richtige Bezeichnung des Papierformates in der Xbasee++ Anwendung
angezeigt?
Beispiel: Ich stelle beim Drucker generic / text only das Papierformat

German Std Endlospapier

ein.

Wenn ich mit

oPrinter := XbpPrinter():New()
oPrinter:create( m_drucker ) // need this to keep from crashing, m_drucker = ausgewählter Drucker
aBin := oPrinter:Forms()
oPrinter:destroy()

die verfügbaren Papierformate anzeige ist German Std Endlospapier nicht dabei.
Wie bekomme ich die (richtigen) Werte des Druckertreibers und nicht die
komischen Vorgaben/Konstanten von Xbase++ ?
Dateianhänge
2013-10-08_110030.jpg
2013-10-08_110030.jpg (72.79 KiB) 8100 mal betrachtet
Gruß
Klaus
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: SetFormSize

Beitrag von Bertram Hansen »

Hallo Klaus,

ich benutze dafür die Methode

Code: Alles auswählen

:paperSize()
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
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: SetFormSize

Beitrag von brandelh »

Die Werte für Fächer und Papiergrößen musst du vom Drucker direkt abfragen, meist haben die eigene IDs / Nummern / Bezeichnungen ...
Papiergröße bzw. Art hängt nämlich je nach Drucker auch vom richtigen Fach ab. Anstatt der Konstanten kann man mit :forms() auch die Druckergrößen ermitteln.

Code: Alles auswählen

:paperBins() --> aPaperBins | NIL =>    { {<nBinId>, <cBinName>}, 
:setFormSize( [<nFormID>] ) --> nFormIDOld | NIL 
:forms() --> aForms | NIL =>    { {<nFormId>, <cFormName>}, ; 
Doku zu :forms() hat geschrieben: Die Methode gibt ein zweidimensionales Array mit zwei Spalten zurück. Die linke Spalte des Arrays enthält numerische Werte, mit denen ein Papierformat identifiziert wird, während die rechte Spalte den Namen für ein Format als Zeichenkette enthält
Ich selbst habe damit aber keine Erfahrung, da ich immer auf A4 drucke.
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: SetFormSize

Beitrag von Koverhage »

Hubert,

der Anwender soll doch einstellen was er möchte. Hierfür zeige ich die möglichen Papierformate "aBin gefüllt via oPrinter:Forms()"
Die Bezeichnungen die Xbase++ zurück gibt sind nicht identisch mit dem was mir der Druckertreiber anzeigt.
z.B. der Druckertreiber zeigt mir German Std Endlospapier (leider nicht die ID dazu) und Xbase++ zeigt mir zwar eine ID an
aber mit Fantasiebezeichnungen.

Rückgabe von :Forms()

Die Methode gibt ein zweidimensionales Array mit zwei Spalten zurück. Die linke Spalte des Arrays enthält numerische Werte, mit denen ein Papierformat identifiziert wird, während die rechte Spalte den Namen für ein Format als Zeichenkette enthält:

{ {<nFormId>, <cFormName>}, ;

{ <...> , <...> } }
Gruß
Klaus
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: SetFormSize

Beitrag von Koverhage »

Bertram,

das nützt mir nichts, es wird ja nur die Größe des gewählten Papierformats zurückgegeben.
Der Anwender soll das Papierformat aus den möglichen ja erst wählen.

Beispiel: HP LaserJet A3, in das Fach können verschiedene Papierformate eingelegt werden, A3, A4, etc.

Bei unseren Anwendungen läuft das so. Der Anwender legt für Rechnungen eine Drucker fest, mit Schacht, Papierformat, Duplex, etc.
Wenn er dann auf das Drucken Symbol klickt (wie in Word Direktdruck ohne nochmals die Einstellungen zu bemühen) wird der Ausdruck
mit den festgelegten Einstellungen gedruckt. Wenn der Anwender jedoch den Druckerdialog eingestellt hat (wie in Word, Datei, drucken)
kann bzw. muss er die Einstellungen manuell vornehmen.
Das ist in den meisten Fällen einfach nur lästig, da es meines Erachtens ein effizientes Arbeiten verhindert.
Gruß
Klaus
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: SetFormSize

Beitrag von Bertram Hansen »

Hallo Klaus,

wäre es eventuell möglich (und nicht zu unübersichtlich) pro Schacht bzw. pro Papierformat einen eigenen Druckertreiber zu installieren.

Beispiel: "Laserdrucker_xyz_Schacht1", "Laserdrucker_xyz_Schacht2", "Nadeldrucker_xyz_Din_A4" oder "Nadeldrucker_xyz_Endlos"
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Antworten