Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: ArcTan am 02.09.05 - 13:50:53

Titel: Messagebox/Maske nur bestimmte Zeit lang anzeigen
Beitrag von: ArcTan am 02.09.05 - 13:50:53
Hallo,

vielleicht hat jemand eine Idee zu folgendem Problem:

Ich speichere Kennwörter in einer Datenbank und möchte das Kennwort, das in einem Dokument in einem versteckten (und verschlüsselten) Feld abgelegt ist, nach Klicken auf einen Button nur maximal 10 Sekunden lang anzeigen lassen.

Eine Standard-Messagebox bietet diese Funktionalität ja nicht. Also habe ich ein bisschen mit Masken und dem Notes Timer 'rumprobiert:

In den Declarations der Maske habe ich hinterlegt:

Dim elapsedTime As Integer
Dim elapsedTimer As NotesTimer
Const ANZEIGEZEIT=10
Dim thisdoc As NotesUIDocument

Dann gibts noch den Timer Handler:

Sub elapsedTimerHandler(S As NotesTimer)
   Dim workspace As New NotesUIWorkspace
   Set thisdoc = workspace.CurrentDocument
   elapsedTime=elapsedTime+1
   Call uidoc.fieldsettext("zeit","Fenster schließt automatisch in " + Str(ANZEIGEZEIT-elapsedTime) + " Sek.")
   Set S=Nothing
   thisdoc.close   
   
End Sub

Leider schließt sich jedoch die Form nicht von selbst...

Wäre dankbar für einen Hinweis. Vielleicht gibt es ja noch eine bessere Möglichkeit?

Grüße
ArcTan
Titel: Re: Messagebox/Maske nur bestimmte Zeit lang anzeigen
Beitrag von: rar am 02.09.05 - 14:51:02
Hi ArcTan,
du könntest es mit sleep versuchen....

Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUidocument
Dim doc As NotesDocument
Set uidoc = ws.Currentdocument
Set doc = uidoc.Document
Call uidoc.FieldSetText("PWAnzeige",doc.PW(0) + "      (Bald ist es wieder weg.)")
Sleep(10)   
Call uidoc.FieldSetText("PWAnzeige","")

Der Code in ein Button, daneben das Feld PWAnzeige (Berechnet auf sich selber)

HTH
Titel: Re: Messagebox/Maske nur bestimmte Zeit lang anzeigen
Beitrag von: Wilhelm am 02.09.05 - 14:55:31
Na, besser gut kopiert als schlecht Programmiert?   ;D

Nur mal so als Hinweis: Wenn Du thisDoc as Ui deklarierst und das Frontend dann als Uidoc und nicht als thisdoc ansprichst, dann läuft Dein Code nicht besonders gut.

Wenn Du nicht darauf angewiesen bist, das das Dokument für die 10 Sekunden bearbeitbar bleibt, dann versuchs doch mit der Sleep funktion:

Zitat
Sub Click(Source As Button)
   
   Dim ws As NotesUiWorkspace
   Dim uidoc As NotesUiDocument
   Dim intSeconds As Integer
   
   Set ws = New NotesUiWorkspace
   Set uidoc = ws.CurrentDocument
   
   intSeconds = 10
   
   Do While Not  intSeconds = 0
      
      Call uidoc.FieldSetText("Zeit", "Noch " + Cstr(intSeconds) + " Sekunden bis das Dokument geschlossen wird...")
      Call uidoc.Refresh
      
      intSeconds = intSeconds  - 1
      Sleep 1
      
   Loop
   
   Call uidoc.Save
   Call uidoc.Close
   
End Sub


Gruß

Willi
Titel: Re: Messagebox/Maske nur bestimmte Zeit lang anzeigen
Beitrag von: ArcTan am 05.09.05 - 11:16:15
Super, klappt. Vielen Dank für Eure Tipps.

(Ok, Willi, mit dem uidoc hast Du natürlich recht...)

Gruß
ArcTan