Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: rar am 11.10.04 - 11:14:54

Titel: Dialogbox via Button beenden
Beitrag von: rar am 11.10.04 - 11:14:54
Griaß eich!

Gibt es eine Möglichkeit aus einem selbstgebastelten Button in einer Dialogbox diese zu schließen ohne zusätzlich auf den OK Button der Dialogbox klicken zu müssen?

lG
Titel: Re: Dialogbox via Button beenden
Beitrag von: klaussal am 11.10.04 - 11:35:07
... mir ist da nix bekannt.  :'(

klaus
Titel: Re: Dialogbox via Button beenden
Beitrag von: Semeaphoros am 11.10.04 - 11:41:39
Schon probiert mit NotesUIDocument.Close?
Titel: Re: Dialogbox via Button beenden
Beitrag von: TMC am 11.10.04 - 12:16:17
Oder:
@Command([FileCloseWindow])

(evtl. davor noch speichern falls man das muss....)
Titel: Re: Dialogbox via Button beenden
Beitrag von: rar am 11.10.04 - 12:26:15
Das Close geht leider nicht so wie ich will...
Meine Aktion schaut so aus:
Ich erstelle im Backend ein Dokument. Das Dok öffne ich erst mal mit einer Dialogbox, in der sich u.a. der Button befindet. Über den Button kann man mit einer PickListCollection Werte aus einem anderen Dok übernehmen und dann in das neu erstellte Dok schreiben. Dann hol ich mir das neue Dok mit EditDocument ins Frontend
Mit dem uidoc.Close() wird zwar die Dialogbox beendet, aber das EditDocument funktioniert dann auch nicht.
Leider.
Titel: Re: Dialogbox via Button beenden
Beitrag von: animate am 11.10.04 - 12:38:33
aber das EditDocument funktioniert dann auch nicht.

was bedeutet das?
Titel: Re: Dialogbox via Button beenden
Beitrag von: rar am 11.10.04 - 13:02:34
Der Code, mit dem ich das Dok erstelle und befülle schaut ungefähr so aus:
Set doc = db.CreateDocument()
doc.Form = "mTicket"
Dim resp As Integer
resp = ws.DialogBox( "Dialogmaske", True, True, False, False, False, False, "Titel", doc, True, False)   
If resp = False Then Exit Sub   
Call doc.ComputeWithForm(True,True)
Call ws.EditDocument(True, doc, False)

In der Dialogmaske sind dann ein paar Eingabefelder und der Button mit dem Code:
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Set db = session.CurrentDatabase
Set coll = ws.PickListCollection(1,False, db.Server, db.FilePath, "aViewName",_
"Auswahl","Wähl ein Dokument aus" )
Set docWP = coll.GetFirstDocument()
If Not docWP Is Nothing Then
   doc.Wknr = docWP.Wknr
   ..... (Felder übernehmen)
   Call uidoc.Refresh()
   Call uidoc.close()
End If

Ohne das uidoc.Close() (ganz unten) drück ich in der Pickliste auf den OK Button und dann muß ich in der Dialogbox nochmal drauf drücken.
Mit dem uidoc.Close() wird zwar die Dialogbox geschlossen, aber das uidoc.Edit greift nicht weil die Dialogbox nach dem Close ein False (=Abbruch) zurückgibt.
Titel: Re: Dialogbox via Button beenden
Beitrag von: Axel am 11.10.04 - 18:41:53
Hi,

ich glaube da wirst du Pech haben, das geht nicht so einfach. Ich habe mal in der Gestaltung einer prof. Anwendung gestöbert. Dort haben die Dialogboxen auch eigenprogrammierte OK- und Cancel-Buttons gehabt. Das war ein ziemlicher Aufstand, den die Programmierer damals gedreht hatten. Da war ein zusätzliches Feld in der Maske, ein User-Profildokument und was weiss ich noch alles (kann mich an die Einzelheiten nicht mehr genau erinnern, ist schon etwas länger her und man wird halt alt  ;) :-\) im Spiel.

Kannst du deinen Dialog nicht etwas umgestalten, z.B. die Auswahl nicht über eine Picklist, sondern über eine Listenfeld, die mit @DbLookup gefüllt wird, machen. so könntest du dann die eigentlichen OK- und Cancel- Buttons benutzen.

Axel
Titel: Re: Dialogbox via Button beenden
Beitrag von: koehlerbv am 11.10.04 - 18:45:36
Ich denke, das Hauptproblem liegt darin, dass nur der OK-Buhtong die in der Dialogbox gemachten Änderungen davor bewahrt, wegworfen zu werden.
Das mit dem erforderlichen "Aufstand" kann ich bestätigen, Axel  ;D

Bernhard
Titel: Re: Dialogbox via Button beenden
Beitrag von: Semeaphoros am 11.10.04 - 21:15:03
rar: Wie rufst Du denn die Diabox auf? Wenn Du das aus dem PostOpen des Dokumentes machst, also das Dokument im normalen Fenster bereits offen ist, dann dürfte das doch funktionieren, dann musst Du nach dem Close ja keinen weiteren Code mehr ausführen.
Titel: Re: Dialogbox via Button beenden
Beitrag von: koehlerbv am 11.10.04 - 23:07:33
rar: Wie rufst Du denn die Diabox auf? Wenn Du das aus dem PostOpen des Dokumentes machst, also das Dokument im normalen Fenster bereits offen ist, dann dürfte das doch funktionieren, dann musst Du nach dem Close ja keinen weiteren Code mehr ausführen.

Das bewahrt ihn nicht vor seinem Problem, Jens: Er will nicht zweimal OK (Picklist und Diabox) klicken lassen, was durchaus nachvollziehbar ist.

Nochmal aber das eigentliche Problem: Das in der Diabox verwendete Box wird im Ur-(Aufruf-)Zustand belassen, wenn nicht die Diabox mit OK geschlossen wird. Das ist zumindest meine Erfahrung (und erscheint mir auch sinnig), aber ich lasse mich da (sehr !) gerne eines Besseren belehren.

Bernhard
Titel: Re: Dialogbox via Button beenden
Beitrag von: TMC am 11.10.04 - 23:39:40
Zitat
aber das uidoc.Edit greift nicht weil die Dialogbox nach dem Close ein False (=Abbruch) zurückgibt.

Nur eine Idee: Evtl. könnte man über Property notesUIDocument.DialogBoxCanceled tricksen im QueryClose der Dialogbox und so rausfinden was passiert ist.
Titel: Re: Dialogbox via Button beenden
Beitrag von: koehlerbv am 11.10.04 - 23:41:45
Probier's aus, Matthias: Nur der Click auf "OK" ergibt NotesUIDocument.DialogBoxCanceled = True.

Nochmal: Es würde mich freuen, wenn ich mich irre.

Bernhard
Titel: Re: Dialogbox via Button beenden
Beitrag von: TMC am 11.10.04 - 23:52:26
Probier's aus, Matthias: Nur der Click auf "OK" ergibt NotesUIDocument.DialogBoxCanceled = True.

Stimmt.

Andere (wohl bessere) Idee:

RefreshParentNote.

Ich öffne per Script eine Dialogbox, die Dialogbox schließe ich via Button:
@Command( [RefreshParentNote] );
@PostedCommand([FileCloseWindow])

Als Rückgabewert bekomme ich True wenn ich auf den Buthong klicke.

Titel: Re: Dialogbox via Button beenden
Beitrag von: koehlerbv am 12.10.04 - 00:03:37
Aua - was habe ich da übersehen !

Die gelobte DesignerHelp:
Zitat
Usage
This method is used mainly to create your own buttons to dismiss a dialog box. Mostly used in the QueryClose event.

DANKE, Matthias !!!

Bernhard
Titel: Re: Dialogbox via Button beenden
Beitrag von: TMC am 12.10.04 - 00:16:03
Gern geschehen.
Ich hatte mich mal mit der Thematik hinreichend beschäftigt (OK-Button simulieren, Prüfung ob OK geklickt wurde, etc. etc.).
Gerade auf RefreshParentNote muss man erstmal kommen, da man da - bedingt durch den Namen - erstmal was anderes erwartet.

Habe unten noch ein Beispiel angehängt, weil es mich es interessiert.
Da wird in einer Dialogbox eine Msgbox (Yes / Cancel) aufgerufen. Durch Klick auf "Yes" wird alles geschlossen und Rückgabewert = True.
Titel: Re: Dialogbox via Button beenden
Beitrag von: koehlerbv am 12.10.04 - 00:20:15
DANKE, Matthias.

Ich ziehe mir das morgen früh gleich rein. Ich habe gerade die tage ein Konstrukt "Per Dialogbox eine Options-Möglichkeit auswählen und mit der Auswahl diese übernehmen und Dialogbox schliessen".Klappt natürlich - aber offensichtlich viel zu kompliziert abgefackelt.

Wenn das übertragbar ist, stelle ich das Resultat auch sofort hier wieder zur Verfügung !

Gute Nacht !

Bernhard
Titel: Re: Dialogbox via Button beenden
Beitrag von: rar am 12.10.04 - 08:38:56
Als ich den Fred vorhin gelesen habe, wollte ich gleich schreiben, daß ihr euch doch nicht bis Mitternacht damit rumschlagen musstet.
Jetzt hab ich aber Matthias' DB angeschaut und bin sehr froh daß ihr das gemacht habt.
Mit Call ws.RefreshParentNote im Button gehts wie es sollte.  :D

Vielen, vielen Dank euch allen (insbesondere TMC).

lG aus IBK
-daniel
Titel: Re: Dialogbox via Button beenden
Beitrag von: koehlerbv am 27.10.04 - 16:51:32
Ich hatte ja versprochen, hier noch mein "Studienergebnis" kund zu tun. Natürlich funktioniert das von Matthias genannte RefreshParentNote - nur nicht bei mir  ;D
Aber hier ist der Kontext ein anderer: In einer Diabox will ich vom User eine Auswahl (Optionsschaltfläche). Wenn er ausgewählt hat, soll er nicht noch extra auf OK klicken müssen, sondern die Diabox soll gleich zufallen - ich weiss ja, was ich will (bzw. der Nutzer will). Im PostRecalc prüfe ich daher, ob mein Optionsfeld einen Wert hat.
Hier kann ich RefreshParentNote nun nicht einsetzen - das ruft ja selber erstmal PostRecalc auf, und die Katze beisst sich in den Schwanz.

Man kann halt nicht alles haben ...

Bernhard
Titel: Re: Dialogbox via Button beenden
Beitrag von: Semeaphoros am 27.10.04 - 20:10:24
Hm, schonmal probiert, ob ein Reentry-Flag hilft?
Titel: Re: Dialogbox via Button beenden
Beitrag von: koehlerbv am 27.10.04 - 20:52:38
Das verhindert ja auch kein circular event calling, Jens ...

Bernhard
Titel: Re: Dialogbox via Button beenden
Beitrag von: Semeaphoros am 27.10.04 - 20:58:10
Nein, aber damit lässt sich das abfackeln, und wäre interessant, obs funktioniert, sicher ist es nicht. Ich hab sowas ähnliches schonmal in LS gemacht, bin aber nicht mehr sicher, obs reentrant war oder obs was anderes war.
Titel: Re: Dialogbox via Button beenden
Beitrag von: koehlerbv am 27.10.04 - 21:06:42
Ein RefreshParentNote im PostRecalc ist ja schon der casus knacktus an sich. Aber villeicht habe ich gerade noch was anderes gefunden ... Mal schauen.

Bernhard
Titel: Re: Dialogbox via Button beenden
Beitrag von: koehlerbv am 02.11.04 - 21:09:13
Nun endlich der versprochene Rückmeldung:
Natürlich funktioniert die von Matthias (nochmals danke !) propagierte Methode NotesUIWorkspace.RefreshParentNote. Auch für meinen "Fall":

Egal, wie (Button, Event PostRecalc oder was auch immer) muss die Dialogbox zwingen zu schliessen. Ins Event QueryClose gehört dann die o.g. Methode. Dort könnte man ja auch auf Eventualitäten reagieren.

Wichtig ist: NotesUIWorkspace.DialogBox gibt dann und deswegen immer "True" zurück. Die "alten Hasen" wissen das natürlich, aber wenn sonst mal jemand über diesen Fred stolpert, sollte das nicht unerwähnt bleiben.

Matthias AKA TMC also nochmals meinen Dank !

Bernhard
Titel: Re: Dialogbox via Button beenden
Beitrag von: TMC am 02.11.04 - 23:09:37
Schön, danke Bernhard für Deine Rückmeldung.
Titel: Re: Dialogbox via Button beenden
Beitrag von: koehlerbv am 02.11.04 - 23:12:58
Na, ich muss eher sagen: Sorry, dass ich erst heute dazu gekommen bin. Und wieder hab' ich was dazu gelernt  :D

Bernhard