Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet 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";"";....)
-
Das sagt ja schon die Hilfe:
This event occurs when the field loses focus and its value has been modified since gaining focus.
-
Ok, wie kriege ich jetzt hin, dass ich beim aktiven Ändern des Radiobuttons ein Feld löschen kann ?
-
... Feld initialisieren => notesDocument.GetFirstItem( sFeldname ) und dann NotesItem.Remove und einen Save auf das Dokument
Toni
-
Also ich würde mit dem NotesTimer arbeiten, und damit periodisch aller 1 bis 2 Sekunden den Wert im Radiobutton prüfen.
Bubble
-
.... oder zwei Schaltflächen.
-
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
-
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
-
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