MDI - aber wie?

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

MDI - aber wie?

Beitrag von Jan »

Wie die Überschrift dieses Forums schon sagt - eigentlich ist es mir etwas peinlich. Aber die Fragen müssen mir einfach mal beantwortet werden.

Also: Wie schaffe ich es, abhängige Child-Dialoge zu erstellen? Die also den Parent sperren, bis der Child wieder geschlossen wird?

Außerdem: Wo ist eigentlich der Unterschied zwischen

Code: Alles auswählen

oDlg:setModalState(XBP_DISP_APPMODAL)
und

Code: Alles auswählen

oDlg:ShowModal()
?
In der Onlinehilfe kann ich keinen Unterschied erkennen (außer natürlich, daß ShowModal() einen auswertbaren Wert zurückgibt). Im Moment verwende ich die erste Variante, damit bekomme ich die Childs wenigstens in der Vordergrund und aktiv.

Jan
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hi Jan,

also ich arbeite mit xbpDialog(). Den entsprechenden Dialog oDlg() gebe ich dann an eine weitere Function weiter. Diese übernehme ich dann als
oParent(). Vor dem aufbau der neuen Maske oDlg() wird oParent:disable()

wenn die "neue Maske" dann mit einem Pushbutton beendet wird, geschieht dies im Codeblock folgendermaßen:

oXbp:activate:={|| oParent:enable(), oDlg:destroy(),SetAppFocus(oParent),PostAppEvent(xbep_close) }

Dafür muß natürliche event-Handle enthalten sein.
Somit ist die "alte- Maske" oParent gesperrt, bis auf de Pushbutton gedrückt/geklickt wird.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

grundsätzlich habe ich mal gelesen, dass Xbase++ (ähnlich wie mein BasicCompiler) gar keine echten MDI Fenster unterstützt, da alles vom Dialog abgeleitet wäre ... :wink: ob das stimmt kann ich nicht beurteilen.

Zu deiner Frage:

Grundsätzlich regeln dies die Paramter Owner und Parent, die beim Dialog angegeben werden. Den genauen Zusammenhang kann ich jetzt nicht aufschreiben, da muss ich immer selbst nachsehen. Schließlich hat man das irgendwann in eine Routine geschrieben und sich nicht mehr gekümmert.

Aber hier findest du ein schönes Beispiel wie die verschiedenen Fenster wirken:

C:\ALASKA\XPPW32\SOURCE\samples\basics\WINDOWS
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Rolf,

danke. Funktioniert einwandfrei. Nur das mit dem xbeP_Close muß raus, sonst wird die komplette Anwendug beendet.

Jan
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Jan hat geschrieben:Rolf,

danke. Funktioniert einwandfrei. Nur das mit dem xbeP_Close muß raus, sonst wird die komplette Anwendug beendet.

Jan
Hallo Jan,

dafür solltest du deine Event-Schleife anpassen, damit diese nicht auf xbeP_Close reagiert. Dann hast du keine Probleme mehr damit.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hallo Jan,

so sieht meinEvent-Handle aus.

Dann hast du keine Probleme.

nEvent := xbe_None
DO WHILE nEvent <> xbeP_Close
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Antworten