AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
28.03.20 - 18:32:49
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Domino 8 und frühere Versionen
| |-+  ND7: Entwicklung (Moderatoren: eknori, koehlerbv)
| | |-+  Problem mit Schaltfläche in Dialogdokument
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Problem mit Schaltfläche in Dialogdokument  (Gelesen 5763 mal)
2stupid4this
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 70

Never touch a running system!


« am: 05.02.09 - 12:20:34 »

Hallo zusammen,

ich habe eine Dialogeingabemaske in der ich aufgrund von optischen Gründen eigene Schaltflächen für OK und Abbrechen erstellt habe.

In den Eigenschaften der Schaltfläche habe ich als Typ Abbrechen und OK ausgewählt.

Des weiteren habe ich im queryclose der Makske eine kleine Eingabeprüfung hinterlegt:

if not source.DialogBoxCanceled then
  if source.document.feld1(0)="" then fehler="Kein Inhalt angegeben"
  ....
  if fehler <>"" then
      MessageBox "Folgende Fehler sidn aufgetreten:"+chr$(13)+fehler
      continue = false
 end if


Klicke ich bei leerem Feld1 auf OK kommt die "gewünschte" Fehlermeldung. Bereinige ich den Fehler, passiert gar nichts mehr. Ich kann den Dialog nur durch den Schließen-Button beenden.

Ich muss vielleicht noch dazusagen, dass ich bisher keine Formel bzw. kein Script als Aktion auf die OK-Schaltfläche gelegt habe.

Was mache ich falsch. Als Formel ein  @command([FileCloseWindow]) als Aktion für OK ist auch nicht richtig. Hat jemand eine Idee für mich?

« Letzte Änderung: 05.02.09 - 16:58:09 von 2stupid4this » Gespeichert

Wer Rechtschreibfehler findet, darf diese behalten.
DerAndre
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1655


Keep cool!


« Antworten #1 am: 05.02.09 - 12:53:15 »

if fehld1 Richtig?
Gespeichert

André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )
2stupid4this
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 70

Never touch a running system!


« Antworten #2 am: 05.02.09 - 14:59:21 »

Das ist nur ein Ausschnitt aus dem QueryClose-Script.

Somit ist
if source.document.feld1(0)="" then fehler="Kein Inhalt angegeben"
korrekt.

Das funktioniert einwandfrei, kann ich auch testen, indem ich die Standard-Buttons OK und Abbrechen wieder anzeigen lasse.

Mein Problem liegt an den selbst erstellten Schaltflächen.
Gespeichert

Wer Rechtschreibfehler findet, darf diese behalten.
DerAndre
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1655


Keep cool!


« Antworten #3 am: 05.02.09 - 15:09:10 »

Das beantwortet leider meine Frage nicht.

Ist es Richtig, das im Queryclose als Variablenname fehld1 steht?
Gespeichert

André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )
2stupid4this
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 70

Never touch a running system!


« Antworten #4 am: 05.02.09 - 15:26:10 »

Sorry, aber beantwortet die Frage, da ich mich im Ursprungslisting nur vertippt habe - siehe letztes Posting

if source.document.feld1(0)="" then fehler="Kein Inhalt angegeben"


Wie bereits erwähnt, wenn die Standardschaltflächen verwendet werden funktioniert alles einwandfrei. Erst wenn ich meine selbst erstellten OK- und Abbrechen-Schaltflächen verwende taucht mein Problem auf.

So wie es für mich aussieht, "merkt" Notes beim ersten anklicken, dass es sich bei der Schaltfläche um eine OK-Schaltfläche handelt. Beim zweiten mal anklicken unterscheiden sich Abbrechen und OK nicht mehr von der Auswirkung.
« Letzte Änderung: 05.02.09 - 15:35:45 von 2stupid4this » Gespeichert

Wer Rechtschreibfehler findet, darf diese behalten.
DerAndre
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1655


Keep cool!


« Antworten #5 am: 05.02.09 - 15:49:53 »

Kannst Du dann bitte den Code im Startposting korrigieren, das irritiert

Mach mal einen Else-Zweig für die DialogboxCanceled und mach ein Print irgendwas darein.
Einfach um mal zu sehen, ob wirklich garnichts passiert, oder die Bedinung falsch ist.
Gespeichert

André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )
2stupid4this
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 70

Never touch a running system!


« Antworten #6 am: 05.02.09 - 17:04:49 »

Habe nun einen else-Zweig eingebaut und es ist genauso, wie ich es bereits geschildert habe. Beim ersten mal kommt die Prüfung, beim zweiten mal tut sich gar nichts. Es wird auch nicht der else-zweig ausgeführt.

Um es gleich vorne wegzunehmen - nein, ich habe mich beim else-zweig nicht vertan. Die eingebaute Messagebox kommt beim klicken auf "Abbrechen".

Und wenn ich die Standardschaltflächen für OK und Abbrechen einblende funltioniert ja alles.

Gespeichert

Wer Rechtschreibfehler findet, darf diese behalten.
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #7 am: 05.02.09 - 17:41:53 »

Hast Du immer noch das
Code:
if not source.DialogBoxCanceled

im Code der Maske für die Dialogbox? Das gehört da nicht hin, weil eine Dialogbox nicht auf sich selbst reagieren kann.

Bernhard
Gespeichert
2stupid4this
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 70

Never touch a running system!


« Antworten #8 am: 05.02.09 - 18:40:27 »

Hallo Bernhard,
ich wiederspreche so aktiven wie Dir nur äußerst ungern, aber dafür ist auch laut Hilfe die Funktion gedacht.

Zitat
You can access this property when the NotesUIDocument processes the QueryClose event from a document that has been brought up in a dialog. 

Wenn ich von "aussen" wissen möchte, ob eine Dialogbox z.B. mit Abbrechen beendet wurde geht das doch über
Code:
if not ws.dialogbox("dialodmaske",doc,......) then
oder nicht?

Wie gesagt, über die Standardschaltflächen funktioniert das auch hervorragend. Habe das dialogboxcanceld auch schon in mehreren Datenbanken verwendet, aber immer über die Standardschaltflächen.
Gespeichert

Wer Rechtschreibfehler findet, darf diese behalten.
Axel
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #9 am: 05.02.09 - 19:15:34 »

Hast Du immer noch das
Code:
if not source.DialogBoxCanceled

im Code der Maske für die Dialogbox? Das gehört da nicht hin, weil eine Dialogbox nicht auf sich selbst reagieren kann.

Bernhard

Bernhard, das funktioniert sehr wohl. Im QueryClose-Event der Dialogmaske kannst du damit abfragen, ob die Box mit OK oder Abbrechen beendet wurde. Ich habe das schon mehrfach angewendet. Funktioniert einwandfrei.

@ZuDummFürDas
Ich habe es auf die Schnelle mal nachgebaut und kann das Problem nachvollziehen. Aber eine Lösung habe ich auch nicht dafür gefunden. Ich tippe mal auf einen Bug in der Implementierung. Mach mal einen Call bei IBM auf.

Axel

PS: Du hast doch bestimmt auch einen realen Vornamen, oder? Bitte "unterschreibe" deine Posts mit deinem Vornamen. Dich bei deinem Nicknamen anzusprechen ist so unpersönlich und in deinem Fall schon etqwas krass. Ich halte dich nämlich auf keinen Fall zu dumm für Notes.   Wink


Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #10 am: 05.02.09 - 23:31:17 »

Sorry, ich sehe jetzt aber gar nicht mehr durch, wo jetzt "innen" (Dialogbox") oder "aussen" welche Property abgefragt wird.

Und völlig ohne Frage: "Innen" und "aussen" habe ich gerade selber ganz sauber durcheinander gebracht (obwohl selbst zigfach verwendet). Es gibt halt Postings, die man wirklich nicht "zwischendurch" versuchen sollte zu beantworten.

An den "DafürZuBlöden", den ich ebenfalls herzlich bitte, zumindest mit einem passenderen Namen zu unterschreiben: Wenn Du mir den Code-Teil aufmalst, der nachweislich zum genannten und unerwünschten Ergebnis führt, dann baue ich das am Freitag nach und liefere eine Lösung. Die 7.0x-Version wäre noch interessant.

Bernhard
Gespeichert
2stupid4this
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 70

Never touch a running system!


« Antworten #11 am: 06.02.09 - 12:28:31 »

Hallo Bernhard,

vielen Dank für das Angebot mein Problem nachzustellen.

In einer Maske rufe ich über eine Schaltfläche folgenden Code auf:
Code:
        Dim ws           As New NotesUIWorkspace
        Dim session As New NotesSession
        Dim db           As Notesdatabase
        Dim doc           As NotesDocument
        Dim uidoc   As NotesUIDocument
       
           
        Set uidoc = ws.CurrentDocument
       
        Set doc        = uidoc.Document
        Set db = session.CurrentDatabase
       
       
        Dim diadoc As New NotesDocument(db)
        If ws.DialogBox("pv.dialog.vermittler",True,True,True,False,False,False," ",diadoc,True, False) Then
                diadoc.form="pv.form.vermittler"
               Call diadoc.MakeResponse(doc)
                Call diadoc.Save(True,True)
                Call uidoc.Refresh
        End If
end sub

In der aufgerufenen Maske ist das Feld Vermittler enthalten.

Im queryClose der Maske steht folgender Code:
Code:
Dim fehler$
        If Not source.DialogBoxCanceled Then
                If source.Document.Vermittler(0)="" Then fehler = fehler + "Es wurde kein Vermittler angegeben."+Chr$(13)
                If fehler <>"" Then
                        Messagebox "Bei der Prüfung der eingegebenen Daten ist/sind folgende(r) Fehler aufgetreten:"+Chr$(13)+fehler+Chr$(13)+Chr$(13)+"Bitte berichtigen Sie Ihre Eingaben oder schließen Sie den Dialog duch 'Abbrechen'"
                        continue = False
                End If
        End If
Zusätzlich besitzt die Maske innerhalb einer Tabelle zwei Schaltflächen - eine vom Typ Abbrechen, die andere vom Typ OK.

Auf der Abbrechen-Schaltfläche liegt die Formel "@Command([FileCloseWindow])" mit der OK-Schaltfläche habe ich mehrere Varianten im Bereich Script und Formel versucht, jedoch ohne korrektes Ergebnis.

Als Notes-Version ist 7.03 im Einsatz.

Sorry, das ich immer wieder meinen Namen vergesse.



Erik
« Letzte Änderung: 06.02.09 - 12:31:37 von 2stupid4this » Gespeichert

Wer Rechtschreibfehler findet, darf diese behalten.
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #12 am: 06.02.09 - 12:34:48 »

Hallo Erik,

erstens: Danke (für den "Erik").
Zweitens: Shit. Nun habe ich Arbeit an der Backe  Grin Ich komme aber erst heute abend oder am Wochenende dazu, aber eine Antwort sei Dir hiermit versprochen (wenn mir nicht jemand zuvor kommt  Wink)

Bernhard
Gespeichert
DerAndre
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1655


Keep cool!


« Antworten #13 am: 06.02.09 - 13:36:14 »

Erweitere Dein Queryclose der Dialogbox :

if not source.DialogBoxCanceled ...
.
.
.
else
 continue = true
endif





Dim fehler$
        If Not source.DialogBoxCanceled Then
                If source.Document.Vermittler(0)="" Then fehler = fehler + "Es wurde kein Vermittler angegeben."+Chr$(13)
                If fehler <>"" Then
                        Messagebox "Bei der Prüfung der eingegebenen Daten ist/sind folgende(r) Fehler aufgetreten:"+Chr$(13)+fehler+Chr$(13)+Chr$(13)+"Bitte berichtigen Sie Ihre Eingaben oder schließen Sie den Dialog duch 'Abbrechen'"
                        continue = False
                End If
          else
               continue = true
          endif


Halt falsch

So nun im ganzen...  Smiley




so sollte es klappen

Dim fehler$

        continue = true

        If Not source.DialogBoxCanceled Then
                If source.Document.Vermittler(0)="" Then fehler = fehler + "Es wurde kein Vermittler angegeben."+Chr$(13)
                If fehler <>"" Then
                        Messagebox "Bei der Prüfung der eingegebenen Daten ist/sind folgende(r) Fehler aufgetreten:"+Chr$(13)+fehler+Chr$(13)+Chr$(13)+"Bitte berichtigen Sie Ihre Eingaben oder schließen Sie den Dialog duch 'Abbrechen'"
                        continue = False
                End If
          endif

« Letzte Änderung: 06.02.09 - 13:44:26 von DerAndre » Gespeichert

André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )
DerAndre
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1655


Keep cool!


« Antworten #14 am: 06.02.09 - 13:49:58 »

Grundlage ist notes.net
Gespeichert

André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )
Axel
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #15 am: 06.02.09 - 14:12:16 »

Ich glaube nicht, dass das hilft. Beim zweiten Mal, also nach der Fehlerbehebung, wird QueryClose nicht ausgeführt.


Axel
 
Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
cebolina
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 386



« Antworten #16 am: 06.02.09 - 14:25:39 »

Hallo zusammen,

Erik möchte ausdrücklich nicht die Standard-Schaltflächen 'OK' und 'Abbrechen' nutzen.
Die Frage ist doch deshalb:
Was ist bei manuell erstellten Schaltflächen vom Typ 'OK' bzw 'Abbrechen' anders, als bei den Vorgabe-Schaltflächen?

Gruß Stefan
Gespeichert

Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6
Axel
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #17 am: 06.02.09 - 15:51:21 »

Die Frage ist doch deshalb:
Was ist bei manuell erstellten Schaltflächen vom Typ 'OK' bzw 'Abbrechen' anders, als bei den Vorgabe-Schaltflächen?

Die Frage ist schon richtig angekommen.

Den Unterschied werden wahrscheinlich nur die entsprechenden Programmierer bei IBM erklären koönnen.


Axel
Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: