Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: MrXYZ am 15.04.08 - 15:53:59

Titel: OnChange Event Feld
Beitrag von: MrXYZ am 15.04.08 - 15:53:59
Hi @ALL

... folgende Quiz-Frage:

1) Habe einen RadioButton mit yes und no - Feld RADIO
2) Ein Feld namens ABC

1. Fall: wenn ich den Radiobutton von yes -> no setze, soll das Feld ABC gelöscht werden.
2. Fall: Der Radiobutton bleibt stdmäßig auf no stehen, aber das Feld ABC wird vom Anwender mit einem Wert gefüllt (soll natürlich nicht gelöscht werden)

Meine Überlegung:

Im OnChange Event des Feld RADIO:

                Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   
   Set uidoc = ws.CurrentDocument

   Call uidoc.RefreshHideFormulas

   if uidoc.FieldGetText( "radio") = "no" then

                         Call uidoc.FieldSetText("abc","")

                End If


   Klappt aber leider nicht  ???


P.S. Da komplex -> geht leider nicht über Default Value von ABC nach dem Motto @If(radio="no";"";....)
Titel: Re: OnChange Event Feld
Beitrag von: klaussal am 15.04.08 - 16:04:37
Das sagt ja schon die Hilfe:

Zitat
This event occurs when the field loses focus and its value has been modified since gaining focus.
Titel: Re: OnChange Event Feld
Beitrag von: MrXYZ am 15.04.08 - 16:28:07
Ok, wie kriege ich jetzt hin, dass ich beim aktiven Ändern des Radiobuttons ein Feld löschen kann ?
Titel: Re: OnChange Event Feld
Beitrag von: ata am 15.04.08 - 18:18:46
... Feld initialisieren => notesDocument.GetFirstItem( sFeldname ) und dann NotesItem.Remove und einen Save auf das Dokument

Toni
Titel: Re: OnChange Event Feld
Beitrag von: jBubbleBoy am 15.04.08 - 20:19:51
Also ich würde mit dem NotesTimer arbeiten, und damit periodisch aller 1 bis 2 Sekunden den Wert im Radiobutton prüfen.

Bubble
Titel: Re: OnChange Event Feld
Beitrag von: klaussal am 15.04.08 - 20:43:32
.... oder zwei Schaltflächen.
Titel: Re: OnChange Event Feld
Beitrag von: koehlerbv am 15.04.08 - 23:17:14
NotesTimer - Finger weg, wenn man sich nicht aller Konsequenzen klar ist - das Teil läuft dann permanent und kann wirklich unerwartete Resultate zeitigen (okay, die sind dann auch erklärbar, aber daran hat man vorher nicht gedacht!).

Ich mag die Lösung nun nicht vorkauen, werfe aber mal folgende Begriffe ein:
- Masken-globale Variable zur Speichrung des aktuellen Zustandes des Items "RadioButton" (RB)
- Im PostOpen aktuellen Zustand merken, im PostRecalc dito
- Property von RB "Aktualisierung bei Schlüsselwortaktualisierung" nutzen und daher
- das Event PostRecalc nutzen.

Bernhard
Titel: Re: OnChange Event Feld
Beitrag von: iukhdh am 16.04.08 - 12:51:39
Hmm,
ich weiss nicht, bei mir funktioniert das genau mit dem oben angegebenen Code so wie du es willst. Hast du in den Eigenschaften des Radiobuttons im dritten Reiter unten das Häkchen gesetzt?
(EXciting/Onchange Änderungen nach jeder Wertänderung ausführen)

Oder kapier ich das Problem  nicht?

Ciao
Thomas
Titel: Re: OnChange Event Feld
Beitrag von: MrXYZ am 16.04.08 - 14:31:35
ok, Problem dank Bernhards Ansatz gelöst.

Im PostRecalc Event wird folgender Code eingebunden und das klappt prima (Postopen Aktionen werden für mein Problem nicht benötigt):

   
   Dim ABC As String
      
   ABC = source.Document.abc(0)
      
   If ABC ="hallo" And source.Document.radio(0)="no" Then
      Call source.FieldClear("abc")
   End If