Autor Beitrag
Peter1000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Fr 15.02.19 11:49 
Hallo,

wenn ich in einem Fenster einen Druck starte, wird das Druckdialogfenster im übergeordneten Fenster angezeigt. Und auch dieses ist sichtbar.
Wie kann das sein ? Nachher wird wieder das aktuelle Fenster angezeigt.

THX Peter
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.02.19 12:19 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 15.02.19 20:45 
Wenn du PrintDialog verwendest ist leider Application.Current.MainWindow als Parent hart verdrahtet. Der PrintDialog wird also die MainWindow zwangsweise mit in den Vordergrund ziehen. Du kannst versuchen Application.Current.MainWindow vor dem anzeigen des PrintDialog auf deine eigentlich Form die du im Hintergrund des Printdialogs haben willst zu setzen und nachher wieder auf deine eigentliche MainWindow zurück. Ich kann aber nicht ausschließen das das kurzzeitige ändern der MainWindow andere Nebeneffekte hat.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 15.02.19 23:25 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Peter1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Mi 20.02.19 11:31 
Danke erstmal für die Antworten,

alos meine Applikation ist so aufgebaut, dass es ein Fullscreen main-Window gibt und wenn man dann bestimmten Button klickt wird ein Fullscreen-Dialogfenster aufgebaut. aus diesem Dialogfenster will ich drucken (mit PrintDialog). Wenn ich ohne PrintDialog drucke, passt es soweit. nur mit PrintDialog wird plötzlich das MainWindow angezeigt. Wird der PrintDialog wieder geschlossen, erscheint wieder mein Dialogfenster.

Es kann doch nicht sein, dass der Printdialog nur sinnvoll vom MainWindow aus nutzbar ist !?

THX
Peter
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 20.02.19 12:02 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 20.02.19 13:31 
Zitat:
Es kann doch nicht sein, dass der Printdialog nur sinnvoll vom MainWindow aus nutzbar ist !?


Er ist sinnvoll nutzbar. Oder druckt er was falsches?
Das du deine Form während der Druck-Dialog offen ist (modal das dahinter hilf also eh nur begrenzt) nicht siehst ist höchstens unschön aber kein funktionales Problem.

Zitat:
Was hindert dich daran, meinen Hinweis umzusetzen?


Ich geb mal stellvertetend eine Antwort :wink:
a.) Wenn sollte man PrintDlgEx verwenden (PrintDlg ist der alte DruckDialog, und alt heißt hier der vor XP)
b.) Die API ist misst und man holt sich Probleme mit der Bittigkeit rein (man muss also entscheiden ob man 32bit/64bit oder beides unterstützen will und dann entsprechend durchprogrammieren)
c.) Man holt sich vermutlich dutzende andere Glitches rein um diesen einen zu beheben (da kann man sehr viel Arbeit drin versenken um das nachzuschreiben was der PrintDialog jetzt schon tut bzw. fixt)

Experimentierfreudige könnten sich den Sourcecode aus Referencesource ziehen in den Hoffnung das da nicht viele Abhängigkeiten dran hängen und den ShowDialog Aufruf fixen so das der Owner übergeben werden kann und nicht intern zwangsweise Application.Current.MainWindow benutzt wird.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 20.02.19 13:54 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 20.02.19 15:16 
Mit meiner API Kritik meinte ich explizit die PrintDialog(EX) API nicht die Window API per se.

Das API Problem das ich meinte ist sprachunabhängig. Das von dir verlinkte struct (zumindest in der -EX Variante) müsstest du in Delphi einmal als packed struct und einmal als normales struct definieren je nachdem ob du für 32 oder 64 bit kompilieren willst. Microsoft hat da das Alignment verbockt.


Da fällt mir ein man könnte auch einfach den Winforms PrintDialog verwenden der kann mit Owner umgehen. Der Dialog ist eh Windows API und nicht Winforms oder WPF spezifisch.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 20.02.19 17:37 
- Nachträglich durch die Entwickler-Ecke gelöscht -