Druckerdialog [erledigt]
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Druckerdialog [erledigt]
Hallo,
bei der Abarbeitung von irgendwelchen automatischen Abläufen erzeuge ich mehrere Druckjobs, die nach
Programmende gestartet werden und dem User die Möglichkeit geben, den Druck über das Windows-Druckmenü
auszulösen. Leider sagt das Menü nichts über den anstehenden Druckjob aus - also, was genau gedruckt wird.
Ich suche eine Möglichkeit, wie ich aus EXPRESS++ heraus eine Meldung an den Druck-Dialog mitgeben kann.
In der Kopfzeile, da wo jetzt standardmäßig "Drucken" steht, möchte ich je Druckjob zusätzlich eine Info mitgeben, was
gedruckt werden soll. Also z.B. "Drucken Inventurbelege".
Da gibt es doch bestimmt einen Parameter, den ich mal wieder übersehen habe.
Bin für jeden Tip wie immer dankbar.
Gruß
Ewald
bei der Abarbeitung von irgendwelchen automatischen Abläufen erzeuge ich mehrere Druckjobs, die nach
Programmende gestartet werden und dem User die Möglichkeit geben, den Druck über das Windows-Druckmenü
auszulösen. Leider sagt das Menü nichts über den anstehenden Druckjob aus - also, was genau gedruckt wird.
Ich suche eine Möglichkeit, wie ich aus EXPRESS++ heraus eine Meldung an den Druck-Dialog mitgeben kann.
In der Kopfzeile, da wo jetzt standardmäßig "Drucken" steht, möchte ich je Druckjob zusätzlich eine Info mitgeben, was
gedruckt werden soll. Also z.B. "Drucken Inventurbelege".
Da gibt es doch bestimmt einen Parameter, den ich mal wieder übersehen habe.
Bin für jeden Tip wie immer dankbar.
Gruß
Ewald
Zuletzt geändert von Ewald am Mi, 23. Dez 2009 14:24, insgesamt 1-mal geändert.
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Druckerdialog
Es gib da in den DCPRINT OPTIONS den Parameter "TITLE". Dem hätte ich das zugetraut. Das bleibt bei mir aber ohne den gewünschten Erfolg.
Wenn das mit EXPRESS++ nicht zu realisieren ist, wie sieht es dann wohl mit reinem XBASE++ Code aus ?
Geht da wohl was ?
Wenn das mit EXPRESS++ nicht zu realisieren ist, wie sieht es dann wohl mit reinem XBASE++ Code aus ?
Geht da wohl was ?
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Druckerdialog
Hi Ewald,
den TITLE hatte ich auch erst als Vorschlag, bis mir aufgefallen ist, dass der benutzt werden kann um über PDF dem Druckjob einen Namen zu geben, wenn man den automatisch speichern will, aber nicht um oben den Text "Drucken" zu verändern.
Im Prinzip müßtest Du die Frage auf das reine Xbase++ Forum erweitern und dann hoffen, dass Günther Beyes es liest. Der hat ja immer irgendwelche tollen Ideen, wie man sowas lösen kann/könnte.
den TITLE hatte ich auch erst als Vorschlag, bis mir aufgefallen ist, dass der benutzt werden kann um über PDF dem Druckjob einen Namen zu geben, wenn man den automatisch speichern will, aber nicht um oben den Text "Drucken" zu verändern.
Im Prinzip müßtest Du die Frage auf das reine Xbase++ Forum erweitern und dann hoffen, dass Günther Beyes es liest. Der hat ja immer irgendwelche tollen Ideen, wie man sowas lösen kann/könnte.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Druckerdialog
Hallo Manfred,
nachdem diese Anforderung bei mir auf dem Tisch liegt bin ich überrascht, dass das nicht irgendwo vorgesehen sein soll.
Ich habe grade mal nachgesehen, wie sich Office da verhält und 1 x Excel und 1 x Word geöffnet und jeweils einen Druck ausgelöst.
Da steht auch nur stumpf "Drucken". Das führt da aber nicht zu Problemen, da der Druckdialog fest in das Fenster genagelt ist und der User sieht, wozu der Dialog gehört.
Schaun mer mal ...
nachdem diese Anforderung bei mir auf dem Tisch liegt bin ich überrascht, dass das nicht irgendwo vorgesehen sein soll.
Ich habe grade mal nachgesehen, wie sich Office da verhält und 1 x Excel und 1 x Word geöffnet und jeweils einen Druck ausgelöst.
Da steht auch nur stumpf "Drucken". Das führt da aber nicht zu Problemen, da der Druckdialog fest in das Fenster genagelt ist und der User sieht, wozu der Dialog gehört.
Schaun mer mal ...
- Koverhage
- 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: Druckerdialog
Hallo Ewald,
swoeit mir bekannt gibt es nur diese Möglichkeit. Müsstest alle Zeilen ändern die hinten // neu
haben.
Das Problem ist, Du musst das bei dem Express++ Update machen.
swoeit mir bekannt gibt es nur diese Möglichkeit. Müsstest alle Zeilen ändern die hinten // neu
haben.
Das Problem ist, Du musst das bei dem Express++ Update machen.
Code: Alles auswählen
FUNCTION DC_PrinterDialog( aOptions, oPrinter )
LOCAL .................................................................. ;
lGroups, nHwnd, nAHwnd, cATitle := space(200) // ab nHwnd neu
IF nDialogStyle = 2
oDlg := XbpPrintDialog():new()
oDlg:enablePrintToFile := .t.
oDlg:enableNumCopies := .t.
oDlg:enableCollate := .t.
oDlg:numCopies := nCopies
IF !Empty(nFrom) .AND. !Empty(nTo)
oDlg:pageRange := { nFrom, nTo }
ENDIF
oDlg:create()
lSelect := .f.
oThread := Thread():new()
Sleep(10)
oThread:start({||oPrinter := _PrinterDialog(oDlg,oPrinter,@lSelect)})
nAHwnd := GetForegroundWindow() // Neu
GetWindowTextA( nAHwnd,@cATitle,200 ) // Neu
DO WHILE !lSelect
nEvent := AppEvent(@mp1,@mp2,@oXbp,10)
IF Valtype(oXbp) = 'O'
oXbp:handleEvent(nEvent,mp1,mp2)
ENDIF
nHwnd := GetForegroundWindow() // Neu
SetWindowTextA( nHwnd,@cTitle,len(cTitle) ) // Neu
ENDDO
SetWindowTextA( nAHwnd,@cATitle,len(cATitle) ) // Neu
Gruß
Klaus
Klaus
- Lewi
- 1000 working lines a day
- Beiträge: 830
- Registriert: Di, 07. Feb 2006 14:10
- Wohnort: Hamburg
- Danksagung erhalten: 2 Mal
Re: Druckerdialog
Hallo Ewald,
Und was eigentlich "nach Programmende"? Wenn ich Deine Ausführungen Recht verstehe, erzeugst Du keine Druck-Jobs, weil "vor" dem Druck eines jeweiligen Beleges eine Druckerauswahl erfolgen soll. Ich wüßte keine Möglichkeit, wie man einen Druck-Job auf den Weg bringen kann, ohne das ein Device angegeben werden muss und anschließend Windows von sich aus einen Druckerdialog einblendet. Wird kein dezidierter Drucker angegeben, druckt Windows auf den eingestellten Standard-Drucker. Der Druckerdialog muß demnach immer ein Teil der eigenen Programm-Logik sein.
Viele Grüße
Olaf
Der Windows-Druckspooler läßt sich mittels API-Funktion abfragen. Dort landen allerdings nur Druckaufträge, die einem Device zugeordnet sind.bei der Abarbeitung von irgendwelchen automatischen Abläufen erzeuge ich mehrere Druckjobs, die nach
Programmende gestartet werden und dem User die Möglichkeit geben, den Druck über das Windows-Druckmenü
auszulösen.
Und was eigentlich "nach Programmende"? Wenn ich Deine Ausführungen Recht verstehe, erzeugst Du keine Druck-Jobs, weil "vor" dem Druck eines jeweiligen Beleges eine Druckerauswahl erfolgen soll. Ich wüßte keine Möglichkeit, wie man einen Druck-Job auf den Weg bringen kann, ohne das ein Device angegeben werden muss und anschließend Windows von sich aus einen Druckerdialog einblendet. Wird kein dezidierter Drucker angegeben, druckt Windows auf den eingestellten Standard-Drucker. Der Druckerdialog muß demnach immer ein Teil der eigenen Programm-Logik sein.
Viele Grüße
Olaf
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Druckerdialog
Hallo Olaf,
durch jahrelanges Training ist es mir wohl gelungen, einfache Abläufe kompliziert darzustellen
Die Ausdrucke sind Bestandteil des Programmes. Mit nach Programmende meinte ich die Verarbeitung der Daten.
Ich mache mal ein sinnloses Beispiel.
Wenn jetzt die Funktion fdruckelieferschein läuft, erscheint das Durckmenu mit der Kopfzeile Drucken. Und ich hätte gerne da stehen "Drucken Lieferschein"
Aus der Funktion fdruckerechnung heraus sollte dort dann stehen "Drucken Rechnung". Also muß ich eine Variable an das Druckerauswahlmenü weitergeben und dort verarbeiten können.
@ Klaus,
das muss ich erst mal verdauen.
Danke
durch jahrelanges Training ist es mir wohl gelungen, einfache Abläufe kompliziert darzustellen
Die Ausdrucke sind Bestandteil des Programmes. Mit nach Programmende meinte ich die Verarbeitung der Daten.
Ich mache mal ein sinnloses Beispiel.
Code: Alles auswählen
proc main
@ 0,0 dcprint say "Auftragsnummer "
* Erfassung weiterer Daten.
dcread gui
fdruckelieferschein()
fdruckerechnung()
return
function fdruckelieferschein
dcprint on to oprinter
*ausgabe Lieferschein
dcprint off
return
function fdruckerechnung
dcprint on to oprinter
*ausgabe rechnung
dcprint off
return
Aus der Funktion fdruckerechnung heraus sollte dort dann stehen "Drucken Rechnung". Also muß ich eine Variable an das Druckerauswahlmenü weitergeben und dort verarbeiten können.
@ Klaus,
das muss ich erst mal verdauen.
Danke
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Druckerdialog
Hallo, Ewald.
Laut Doku zu "DCPRINT ON" und "DCPRINT OPTIONS" sollte der Inhalt der Option "TITLE" auch in der Titelzeile des Druckerdialogs erscheinen. Das ist ein Bug. Bist Du in Rogers Forum registriert? Dann solltest Du das dort mal zur Kenntnis geben.
Laut Doku zu "DCPRINT ON" und "DCPRINT OPTIONS" sollte der Inhalt der Option "TITLE" auch in der Titelzeile des Druckerdialogs erscheinen. Das ist ein Bug. Bist Du in Rogers Forum registriert? Dann solltest Du das dort mal zur Kenntnis geben.
Herzlich,
Tom
Tom
- Koverhage
- 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: Druckerdialog
Hallo Tom,
das gilt nur wenn der Express++ Dialog verwendet wird. Habe das schon öfters bei Roger bemängelt.
Gruß
Klaus
das gilt nur wenn der Express++ Dialog verwendet wird. Habe das schon öfters bei Roger bemängelt.
Gruß
Klaus
Gruß
Klaus
Klaus
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Druckerdialog
Hallo Klaus,
stimmt, mit dem Express Dialog funktioniert das heute noch. Danke für den Tip.
Spricht eigentlich irgendwas dagegen, diesen Dialog noch zu verwenden ?
Und kann man den evtl. irgendwie eindeutschen ohne den Quellcode der LIB zu verändern ?
Gruß
Ewald
stimmt, mit dem Express Dialog funktioniert das heute noch. Danke für den Tip.
Code: Alles auswählen
dcprint on to oprinter font cfontname ;
dialogstyle DCPRINT_DIALOG_EXPRESS ;
title "Irgendwas irgendwohin drucken"
Spricht eigentlich irgendwas dagegen, diesen Dialog noch zu verwenden ?
Und kann man den evtl. irgendwie eindeutschen ohne den Quellcode der LIB zu verändern ?
Gruß
Ewald
- Koverhage
- 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: Druckerdialog
Ewald,
es ist schon lange her, das ich mit dem Express++ Dialog gearbeitet habe, aber der war schon mal
in deutsch.
DC_LANGSET hast Du gesetzt ?
Tom:
Leider konnte ich Roger bisher nicht überreden, die hier gepostete Lösung einzubauen
es ist schon lange her, das ich mit dem Express++ Dialog gearbeitet habe, aber der war schon mal
in deutsch.
DC_LANGSET hast Du gesetzt ?
Tom:
Leider konnte ich Roger bisher nicht überreden, die hier gepostete Lösung einzubauen
Gruß
Klaus
Klaus
-
- Rekursionen-Architekt
- Beiträge: 475
- Registriert: Sa, 08. Apr 2006 14:07
- Wohnort: Datteln
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Druckerdialog
Hallo Klaus,
natürlich hatte ich DC_LANGSET nicht gesetzt.
Habe ich aber nachgeholt und jetzt ist alles gut.
Deine gepostete Lösung baue ich in die DCLIPX ein sobald hier der Wahnsinn mit den Jahresendgeschäften gelaufen ist (und ich das ohne Herzklabaster überstehe ).
@Alle
ich wünsche allen ein frohes Weihnachtsfest.
Gruß
Ewald
natürlich hatte ich DC_LANGSET nicht gesetzt.
Habe ich aber nachgeholt und jetzt ist alles gut.
Deine gepostete Lösung baue ich in die DCLIPX ein sobald hier der Wahnsinn mit den Jahresendgeschäften gelaufen ist (und ich das ohne Herzklabaster überstehe ).
@Alle
ich wünsche allen ein frohes Weihnachtsfest.
Gruß
Ewald