Parent von einer Anwendung zur anderen weiterreichen

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
ij1972
Rookie
Rookie
Beiträge: 17
Registriert: Di, 11. Sep 2012 14:08

Parent von einer Anwendung zur anderen weiterreichen

Beitrag von ij1972 »

Hallo, ich bräuchte mal Hilfe bzgl. eines Problems:

Ich habe in meiner Anwendung derzeit ein MDI-Child aus dem ich ein Modales Fenster öffne.
Dieses modale Fenster möchte ich gerne in eine separate Anwendung auslagern.

Jetzt die Frage, wie kann ich dem modalen XBase Dialog in der einen Anwendung den Parent (MDI Child der anderen Anwendung) mitgeben, damit dieser weiterhin Modal zum MDI-Child ist?

Geht das überhaupt?

Die Anwendung mit dem modalen Dialog öffne ich per Runshell.
Danke schonmal im Voraus.
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: Parent von einer Anwendung zur anderen weiterreichen

Beitrag von brandelh »

Runshell hat 2 Parameter die das steuern:

Code: Alles auswählen

RunShell( <cCmdLine>    , ;
         [<cProgram>]   , ;
         [<lAsync>]     , ;
         [<lBackground>],
         [<aStdHandles>|<lInherit>] ) --> xReturn
werden beide nicht übergeben, sollte sich das Programm so verhalten wie du willst, denn Standard ist:
lAsync := .f. // Aufrufendes Programm anhalten
lBackground := .f. // und im Vordergrund starten
Gruß
Hubert
ij1972
Rookie
Rookie
Beiträge: 17
Registriert: Di, 11. Sep 2012 14:08

Re: Parent von einer Anwendung zur anderen weiterreichen

Beitrag von ij1972 »

Hallo und danke erstmal für die Antwort.
Jedoch ist mein Problem nicht so trivial wie es den Anschein hat.
Ich starte die neue Anwendung mit dem Modalen Dialog mit lAsync=FALSE per Default damit meine Hauptanwendung wartet.

Klicke ich nirgends anderst wird die gestartete Anwendung auch brav angezeigt über den aufrufenden MDI-Childdialog.
Klicke ich auf den aufrufenden MDI-Childdialog verliert zwar der neu gestartete modale Dialog den Focus aber bleibt noch brav über den MDI-Child.
Klicke ich jedoch auf den App-Dialog geht der neue modale komplett hinter der Hauptanwendung und man denkt dann die Hauptanwendung hängt.

Habe mir nun damit beholfen den XbpDialog aus der gestarteten Anwendung mit alwaysOnTop=TRUE zu erstellen.
Damit bleibt dieser auch immer vor den anderen. Denn ich warte ja sowieso auf das Beenden des modalen Dialoges.

Für mich wäre es nur interessant und schöner gewesen, wenn dies überhaupt gegangen wäre, den Parent eines XbpDialoges über Anwendungen hinweg einem anderen XbpDialog zu übergeben/kommunizieren.
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Parent von einer Anwendung zur anderen weiterreichen

Beitrag von Wolfgang Ciriack »

Warum startest du deinen neuen Dialog nicht über einen Thread ?
Viele Grüße
Wolfgang
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: Parent von einer Anwendung zur anderen weiterreichen

Beitrag von AUGE_OHR »

ij1972 hat geschrieben:Klicke ich jedoch auf den App-Dialog geht der neue modale komplett hinter der Hauptanwendung und man denkt dann die Hauptanwendung hängt.
ein MDI Fenster hat immer o:DrawingArea als Parent und dürfte nicht "verschwinden".
du könntest bei einem Modalen Fenster noch

Code: Alles auswählen

o:alwaysOnTop
hinzufügen damit es "oben bleibt".
ansonsten bleibt noch

Code: Alles auswählen

o:toFront()
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: Parent von einer Anwendung zur anderen weiterreichen

Beitrag von brandelh »

Es gibt ein Beispiel in den dokus wo eine Anwendung 2 XbpCrt() steuert.
Aber ein ganz anderes Programm, da braucht man wohl die API dazu. Es gibt Beispiele mit ot4xb den Handle eines Fensters über seine Titelzeile abzufragen und
mit diesem Handle könnte man per API steuern - aber ich fürchte das ist sehr komplex und auch abhängig, was genau man da startet.

Falls es Xbase++ Anwendungen sind, solltet ihr euer Anwendungsmodell überdenken, sowas hat man früher gemacht.
Gruß
Hubert
Antworten