Wie mehrere Windows unter E1 schliesen

  • Hi Leute,


    Ich suche eine Möglichkeit, in einem Plugin mehrere geöffnete Fenster zu schliesen.


    Bedingt durch das "modale" <dlg__root>,<dlg_child_1>,...<dlg_child_letzter> muß


    ich auch alle der Reihe nach mit der FB schliesen, das letzte geht mit *.accept();.


    Wie kann ich durch eine Befehl aus dem letzten Fenster das ganze Plugin schließen?


    Bin sehr dankbar für euere Hilfe.


    Emanuel :winking_face:

    rosig

  • Evtl. im Plugin ein Script schreiben und ausführen, das über das WebIF etliche Male die EXIT-Taste betätigt.

    MfG Ali

    DM8000 | DM8000 | DM500HD | DM500HD | DM7020S


    Bash
    #!/bin/sh
    while [ 1 ]
    do
    	echo "i love my dreams!!!"
    	sleep 1
    done
  • AliAbdul1978,


    Hi,


    Danke für die Antwort.


    Diese Möglichkeit wollte ich eigentlich umgehen, da ich dafür das passwd


    für den login brauche. das Plugin soll aber unabhängig laufen.


    Außerdem konnen in dem Plugin n-Windws geöffnet sein (wäre sehr umständlich n-Windows-count in tmp-Datei schreiben , auslesen um n-EXIT zu senden aus script/exe bzw. auch langsam und evt. unstabil (httpd crash = nix geht mehr)).


    CU Emanuel :winking_face:

    rosig

  • Ich würde es in etwa so versuchen:

    Code
    wnd.show();
    int res = wnd.exec();
    wnd.hide();
    if (res == <Wert für "alle Fenster schliessen">) 
        this->close(res);

    Wenn du das in allen deinen Fensterklassen so machst, dann müsste es funktionieren, indem du das "letzte" Fenster mit

    Code
    this->close(<Wert für "alle Fenster schliessen">);

    schließt.


    dbluelle

  • hi dbluelle,


    close(n);


    n ist nur der EXITCODE:


    0 = OK, -1 = FEHLER


    mir wäre neu wenn das zurückliegenden Speicher leert.


    alle anderen kann ich ja nicht zu machen bevor die Auswahl war also nur alter_dlg.hide(),


    sonst kann ich ja im Auswahlmodus nicht zurück mit FB-EXIT.



    Danke trotzdem


    Emanuel

    rosig

  • Hmm, m.E. ist doch bei close(n) n der Wert, den die exec()-Funktion im "Vaterdialog" zurückliefert. Da sollte eigentlich jeder beliebige Wert möglich sein (ich hab's aber nicht getestet)
    Das Schließen aller Dialoge erfolgt dann ja quasi "rekursiv", d.h. wenn ich aus dem exec() eines Dialogs durch ein close() im "Kinddialog" zurückkehre, dann rufe ich ja sofort die close des Dialogs auf und beende dadurch den nächsten Dialog usw.


    Also z.B. so:
    3 Dialoge dlg1, dlg2, dlg3:


    wenn nun dlg3::endalldlgs() aufgerufen wird, dann springt das System in dlg2::startdlg3() zurück und erhält dort den Wert 2 für res. Dadurch wird die close()-Methode von dlg2 aufgerufen und dlg2 auch geschlossen=> das System kommt zurück in dlg1::startdlg2 und dlg1 wird ebenso geschlossen.


    dbluelle

  • Hi,


    also leider wird bei meinem Plugin immer der selbe Dialog aufgerufen nur mit


    anderem Listboxinhalt. Derzeit habe ich als Notlösung eine Dynamische Listbox


    und nur ein Window. Ist aber doof, denn ich kann nicht mehr mit FB_EXIT in den


    vorherigen Dialog mit geladener Listbox. Heißt ich muß jetzt die Liste immer laden, laden,...


    aber wenn Du es testen willst kannst. schicke ich dir den Quelltext.


    CU Emanuel

    rosig

  • Hmm, bei nur einer Dialogklasse müsste das doch genauso funktionieren (dann ist es ja wirklich rekursiv :winking_face: ).

    dbluelle