XbpPrintDialog() Fenster in VIO mode positionieren

Auf dem Weg von Clipper, FoxPro u.ä. nach Xbase++

Moderator: Moderatoren

Antworten
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von BJelinek »

Hallo zusammen.

Kann man den XbpPrintDialog() aus eine VIO-Anwendung positionieren.

Code: Alles auswählen

FUNC BFBHolWinDrucker
local oDlg,oPrinter
local cRet := ""

oDlg := XbpPrintDialog():new()
oDlg:create()
oPrinter := oDlg:display()
oDlg:destroy()
IF oPrinter <> NIL
 cRet := oPrinter:devName
endif
return cRet


Wenn dies ausgeführt wird, erscheint der Dialog immer oben links.

Kann man das beeinflussen ?

Nicht lebenswichtig, aber wäre schön, wenn es möglich wäre.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von Werner_Bayern »

Servus Bernd,

die nicht lebensnotwendige Antwort heisst: Ja, lt. Hilfe erbt der Dialog das :setPos von XbpSysWindow():
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von BJelinek »

Servus Werner,

ich verwende VIO.
Das Programm läuft in einem CMD Consolen Fenster.
Das Fenster kann stehen wo es will, der Drucker-Dialog steht immer oben links.
Hab in meiner Hilfe nichts gefunden.

Grüße aus dem heißen Köngen
hat immer noch 27 Grad
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von brandelh »

Ich denke Werner meint, dass man ein "unsichtbares" Fenster aufmachen soll, dieses dann an die gewünschte Stelle schiebt und als Parent verwendet vor dem Aufruf von XbpPrinterDialog().

PS: hab ich noch nie gemacht ... ;-)
Beim XbpFileDialog() konnte man zentrieren, bei der aktuellen 2.00.785 führt das aber zu Problemen.
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von Werner_Bayern »

Servus Bernd,

hab beide Methoden (CMD und eigener XbpDialog) getestet, keine Chance. Das setPos() wird ignoriert. Es scheint auch so, dass XbpPrintDialog():new immer als owner den AppDesktop() bekommt, egal, was man angibt. Man kann den Druckdialog immer komplett verschieben, nicht nur innerhalb des CMD oder einem evtl. mitgegebenem XbpDialog.

Code: Alles auswählen

function main
local oDlg,oPrinter, oFenster
local cRet := ""

oFenster         := XbpDialog():new(AppDesktop() ,, {50,30}, {1000, 900} )
oFenster:title   := "XbpDialog"
oFenster:create()

oDlg := XbpPrintDialog():new(oFenster)
oDlg:create()
oDlg:setPos({300, 0})
oPrinter := oDlg:display()
oDlg:destroy()
IF oPrinter <> NIL
 cRet := oPrinter:devName
endif
return cRet
Kannst einen PDR eröffnen lassen... Umstellung auf GUI hilft hier nämlich dann auch nichts.
es grüßt

Werner

<when the music is over, turn off the lights!>
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: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von brandelh »

Hast du SetAppWindow() richtig eingestellt, eigentlich sollte es genau dieses benutzen.

Code: Alles auswählen

oAltWindow := SetAppWindow( oNeuTempWindow )
XbpPrintDialog() ...
...
SetAppWindow( oAltWindow )
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von Werner_Bayern »

Hab beides getestet, einmal mit einem extra großem VIO-Fenster und 1x mit zusätzlichem Windows-Fenster, so wie im Code oben gezeigt.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von BJelinek »

Dann frage ich mal bei Alaska an.

Danke für Eure Mühe.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von AUGE_OHR »

der XbpPrintDialog() ist ein "Common Control" (comdlg32.dll) und das Fenster hat kein Handle ( o:getHWND() )
es reagiert aber auf den Parent ...

Code: Alles auswählen

function main
local oDlg,oPrinter, oFenster,oDummy
local cRet  := ""
local aDesk := AppDesktop():CurrentSize()
local aPart := {470,410}

   oFenster         := XbpDialog():new(AppDesktop() ,, {50,30}, {1000, 900} )
   oFenster:title   := "XbpDialog"
   oFenster:create()
   CenterControl(oFenster)

   // Dummy als Parent
   oDummy := XbpStatic():new(oFenster:DrawingArea,,{0,0},aPart)
   oDummy:Create()
   CenterControl(oDummy)

   oDlg := XbpPrintDialog():new(oDummy)
   oDlg:create()
   oPrinter := oDlg:display()
   oDlg:destroy()
   IF oPrinter <> NIL
    cRet := oPrinter:devName
   endif
return cRet
gruss by OHR
Jimmy
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von BJelinek »

Hallo Jimmy

Danke für die Mühe.

Funktioniert,
aber nur mit GUI=Yes
oder LINK_FLAGS=/PM:PM

Meine Programme sind alle GUI=NO
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von AUGE_OHR »

BJelinek hat geschrieben: Mo, 26. Jun 2017 18:30Meine Programme sind alle GUI=NO
hm ... damit kannst du gar keine (echten) XbParts verwenden (als Parent).
XbpPrintDialog() ist wie schon gesagt kein Control in dem Sinne sondern ein ganzes Dialog Fenster.

Frage : was spricht dagegen GUI=YES zu verwenden und APPSYS.PRG aufzubohren (grössere Fonts, 80 x 50 etc.) ?
gruss by OHR
Jimmy
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: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von brandelh »

Ich wundere mich, dass XbpPrintDialog() überhaupt aufgerufen werden kann, wenn man GUI=NO hat.
Ich meine mich zu erinnern, dass ich bei einem Programm wegen XbpPrinter() auf GUI=YES wechseln musste ... ist aber schon 15 Jahre her ;-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von AUGE_OHR »

brandelh hat geschrieben: Di, 27. Jun 2017 8:28Ich wundere mich, dass XbpPrintDialog() überhaupt aufgerufen werden kann, wenn man GUI=NO hat.
wie ich schon sagte ist es ein "Common Dialog" also ein "Fenster" und kein Control ( = XbPart ) was man aufruft.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von AUGE_OHR »

Nachtrag : mit GUI=NO kann man zwar den XbpPrintDialog() anzeigen/auswählen/abbrechen aber dann kommt diese Fehlermeldung
oError:args :
-> VALTYPE: O CLASS: RootCrt
-> VALTYPE: O CLASS: XbpPrintDialog
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Member-Variable ist für dieses Objekt unbekannt
oError:filename :
oError:genCode : 26
oError:operation : XbpPartHandler
oError:osCode : 0
oError:severity : 2
oError:subCode : 2240
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von XBPPRINTDIALOG:DESTROY(259)
Aufgerufen von MAIN(32)
ohne GUI=YES wird es nichts [-X
gruss by OHR
Jimmy
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: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von brandelh »

sag ich doch ;-)
Gruß
Hubert
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von BJelinek »

Hallo zusammen.

Und es geht doch.
Programm:

Code: Alles auswählen


#pragma Library( "XppUI2.lib" )

function main
clear screen
?
?
?
? BFBHolWinDrucker()
wait "...."
return

FUNC BFBHolWinDrucker
local oDlg,oPrinter
local cRet := ""

oDlg := XbpPrintDialog():new()
oDlg:create()
oPrinter := oDlg:display()
oDlg:destroy()
IF oPrinter <> NIL
 cRet := oPrinter:devName
endif
return cRet

Project datei:

Code: Alles auswählen

//
// Project - Definition - File created by PBUILD Version 2.00.726
// Date: 21.09.2016 Time: 19:38:53
//

[PROJECT]
    COMPILE       = xpp
    COMPILE_FLAGS = /q /p
    DEBUG         = no
    GUI           = no
    LINKER        = alink
    LINK_FLAGS    =
    RC_COMPILE    = arc
    RC_FLAGS      = /v
    DEBUG_SAVE    = yes
    PROJECT.XPJ

[PROJECT.XPJ]
    TEST.EXE

[TEST.EXE]
// $START-AUTODEPEND
    std.ch
    set.ch
    natmsg.ch
    get.ch
    prompt.ch
    memvar.ch
    collat.ch
    sql.ch
    ot4xb.ch
    TEST.obj
// $STOP-AUTODEPEND
    TEST.PRG


habe es auch ins Echt-Programm eingebaut und funktioniert.


Warum Gui=No

Meine Warenwirtschaft ist seit 22 Jahren bei Kunden.

Die wollen sich nicht umgewöhnen.

Mein Clipper-Programm mit gleichem Umfang läuft immer noch.
Auch unter Win 10 32Bit Version 1702 Kein Problem.
Auch kein Problem mit meiner 32Bit Xbase ++ Version mit identischer Oberfläche
und Bedienung. Auch beim einstellen der Fentstergröße. (Consolen-Fenster) Alles wie gehabt und gewohnt.
Erste Frage wenn ich umstellen will: Aber an der Bedienung hat sich nichts geändert?
Ich kann Sie beruhigen. Ich muß nur meine EXE-Dateien austauschen und die BFBSTART.BAT neu anlegen
lassen und die Index-Dateien löschen. Die Daten-Basis ist in beiden Programm gleich.

Es läuft jetzt halt auch unter 64Bit Windows und auf neuen Servern.

Auf dem Server muß das gemeinsame Laufwerk z.B. O: aber mit dem subst-Befehl erstellt werden.
anstatt mit net use. Kann beim Index neu erstellen den Unterschied 1,5 Std zu 20 Min ausmachen.

Ich installiere Updates jetzt gern auf dem Server. Es geht jetzt einfach schneller.

So das waren meine Antworten.

Grüße aus Köngen
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von AUGE_OHR »

BJelinek hat geschrieben: Mi, 28. Jun 2017 17:07habe es auch ins Echt-Programm eingebaut und funktioniert.
also bei mir kommt auf dem Arbeits PC noch die selbe Fehlermeldung mit dem Source / *.XPJ sobald ich auf einen Button klicke ... :?:
oError:args :
-> VALTYPE: O CLASS: RootCrt
-> VALTYPE: O CLASS: XbpPrintDialog
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Member-Variable ist für dieses Objekt unbekannt
oError:filename :
oError:genCode : 26
oError:operation : XbpPartHandler
oError:osCode : 0
oError:severity : 2
oError:subCode : 2240
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von XBPPRINTDIALOG:DESTROY(259)
Aufgerufen von BFBHOLWINDRUCKER(19)
Aufgerufen von MAIN(8)
gruss by OHR
Jimmy
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von BJelinek »

Hallo Jimmy

mit welcher Xbase++ Version ?

Ich verwende die Xbase++ (R) Version 2.00.785.

Und da gehts.

Wie funktioniert das mit der Benachrichtigung von Dir ?
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von AUGE_OHR »

BJelinek hat geschrieben: Mi, 28. Jun 2017 19:32 mit welcher Xbase++ Version ?
v1.9x
BJelinek hat geschrieben:Ich verwende die Xbase++ (R) Version 2.00.785.
hab PDR 5991 (und Workaround) gefunden.
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von Werner_Bayern »

BJelinek hat geschrieben: Mi, 28. Jun 2017 17:07 Hallo zusammen.

Und es geht doch.
Es ging doch ums Positionieren?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbpPrintDialog() Fenster in VIO mode positionieren

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben: Mi, 28. Jun 2017 21:49Es ging doch ums Positionieren?
Ja ... aber wenn er dann abschmiert hätte es eh nicht mit v1.9x VIO funktioniert.

ohne eine zusätzlichen Parent wird ein zentrieren des XbpPrintDialog() wohl nicht möglich sein.
gruss by OHR
Jimmy
Antworten