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: 2081
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

SetFormSize

Beitrag von Koverhage » Mo, 05. Aug 2013 10:51

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: 14549
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: SetFormSize

Beitrag von brandelh » Mo, 05. Aug 2013 12:40

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: 2081
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

Re: SetFormSize

Beitrag von Koverhage » Di, 08. Okt 2013 11:27

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) 3320 mal betrachtet
Gruß
Klaus

Benutzeravatar
Bertram Hansen
1000 working lines a day
1000 working lines a day
Beiträge: 693
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 53902 Bad Münstereifel
Kontaktdaten:

Re: SetFormSize

Beitrag von Bertram Hansen » Di, 08. Okt 2013 13:51

Hallo Klaus,

ich benutze dafür die Methode

Code: Alles auswählen

:paperSize()
:wave:
Gruß Bertram
http://www.tobax.de

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14549
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: SetFormSize

Beitrag von brandelh » Di, 08. Okt 2013 14:27

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: 2081
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

Re: SetFormSize

Beitrag von Koverhage » Di, 08. Okt 2013 16:04

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: 2081
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Kontaktdaten:

Re: SetFormSize

Beitrag von Koverhage » Di, 08. Okt 2013 16:16

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
1000 working lines a day
1000 working lines a day
Beiträge: 693
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 53902 Bad Münstereifel
Kontaktdaten:

Re: SetFormSize

Beitrag von Bertram Hansen » Di, 08. Okt 2013 17:08

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

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!

Antworten