Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: snore am 28.11.14 - 15:28:14

Titel: Edit Modus nur über Button ermöglichen
Beitrag von: snore am 28.11.14 - 15:28:14
Ja - sorry, das Thema ist nicht ganz neu ...aber ich komm' echt nicht weiter!

Habe über Querymodechange und Postmodechange den Doppelklick unterbunden, wenn im Feld "Doppelklick" der Wert "X" steht.
Möchte aber, dass das Dokument über einen Button editierbar gemacht werden kann.

D.h. ich muss mir einen Button mit Script erstellen, welcher mir der Wert "X" im Feld "Doppelklick" löscht.... aber wie .. im Lesemodus ?!

DANKE
snore
Titel: Re: Edit Modus nur über Button ermöglichen
Beitrag von: Tode am 28.11.14 - 16:20:24
Postmodechange ist zu spät: querymodechange und queryopen sind die richtigen events... Aber unabhängig davon klappt das setzen eines feldes im lesemodus nur für "Berechnet zur Anzeige" Feldern. Deshalb würde ich es über ein Profil oder umgebungsvariable machen:

X = ses.Getenvironmentstring("alloweditmode")
Call ses.setenvironmentvar("alloweditmode","")
If x <>"1" then continue = false

Und im button: @Environment("alloweditmode";"1"); @Command([EditDocument])
Titel: Re: Edit Modus nur über Button ermöglichen
Beitrag von: snore am 30.11.14 - 11:12:11
Super! - funktioniert wunderbar..
Vielen Dank für Deine Hilfe
Gruß
snore


in der Maske:
...
   m1 = session.Getenvironmentstring("SperreDoppelklick")
   Call session.setenvironmentvar("SperreDoppelklick","")
   If m1 <>"1" Then
      Messagebox "Doppelklick wurde deaktivert!" & Chr$ (10) & "Bitte w/ hinterlegten Formeln über den Button bearbeiten....." & Chr$ (10) & Chr$ (10) &_
      "Bei technischen Problemen, wenden Sie sich bitte an die IT-Orga"
      continue = False
   End If
End Sub


..im Button:
@Do(
@Environment("SperreDoppelklick";"1");
@PostedCommand([EditDocument]; "1");
@PostedCommand([ViewRefreshFields]);
@PostedCommand([ToolsRunMacro];"(Vorgaben setzen)"))

Titel: Re: Edit Modus nur über Button ermöglichen
Beitrag von: koehlerbv am 30.11.14 - 22:18:10
Zwei Fragen:
1) Welche Events verwendest Du nun jetzt? Ob Du die richtigen erwischt hast, kannst Du einfach prüfen, wenn Du aus einer Ansicht heraus ein Dokument mit Strg-B (deutscher Client) bzw. Ctrl-E (englischer Client) direkt im EditMode öffnen willst.
2) Stellst Du absolut sicher, daß Dein Agent dann auch die Environment-Variable wieder zurücksetzt? Das sollte dort der allererste reale Code sein, sonst kannst Du irgendwann, eventuell erst in vielen Monaten, mal ganz merkwürdige Effekte erhalten, weil Der Agent eben nicht zur Dokumentänderung aufgerufen wird, weil ein User direkt in den EditMode gelangen kann.

Bernhard (spricht aus Erfahrung)
Titel: Re: Edit Modus nur über Button ermöglichen
Beitrag von: diali am 01.12.14 - 06:27:52
Was passiert, wenn mehrere Dokumente geöffnet werden?

Wenn du sowieso schon ein Feld in dem Dokument hast, dann kannst du dieses im Backend verändern und dann das Dokument im Frontend im Editmode öffnen.

Das Feld Doppelklick muss beim Speichern und beim Schließen ggf. wieder mit einem "X" versehen werden.

Gruß
Dirk
Titel: Re: Edit Modus nur über Button ermöglichen
Beitrag von: it898ur am 01.12.14 - 07:31:45
Man könnte die Abfrage auch über eine globale Script-Variable der Maske steuern - dann spart man sich den Umweg über Felder oder ini-Variablen und auch bei mehreren offenen Dokumenten gibt es keine Probleme.

Gruß

André
Titel: Re: Edit Modus nur über Button ermöglichen
Beitrag von: Sven Hasselbach am 01.12.14 - 12:03:03
Alternativ ganz ohne Environment-Variablen mit reinem Öffnen und Schließen des UI Docs per LS-Button

Code
Dim uiws As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Dim doc As NotesDocument

' aktuelles UI Doc holen	
Set uiDoc = uiws.CurrentDocument
Set doc = uiDoc.Document

' UI Doc schliessen & Feld löschen
uiDoc.Close
doc.Doppelklick = ""

' UI Doc erneut öffnen	
uiws.EditDocument True, doc
Delete uiDoc

' Das X wieder setzen	
Set uiDoc = uiws.CurrentDocument
Set doc = uiDoc.Document
doc.Doppelklick = "X"
Titel: Re: Edit Modus nur über Button ermöglichen
Beitrag von: snore am 03.12.14 - 15:31:48
..zu den Fragen:

1) Strg-B, fang ich über Queryopen ab...


Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
   If (Source.EditMode = True)  Then
      Source.EditMode = False
   End If
   If (IsNewDoc = True)  Then
      Source.EditMode = True
   End If
End Sub

..o.K. sieht blöd' aus - funktioniert aber !


2) im Querymodechange, steht der Rest wie bereits gepostet

3) beim Öffnen mehrerer Dokument gibt's keine Probleme (aktuell!)

Gruß
snore





Titel: Re: Edit Modus nur über Button ermöglichen
Beitrag von: manboo8000 am 08.06.15 - 11:19:51
Hey Snore,

da mich diese Funktion auch interessiert, habe ich mal deine Funktionen eingebastelt, also im Queryopen:

Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
   If (Source.EditMode = True)  Then
      Source.EditMode = False
   End If
   If (IsNewDoc = True)  Then
      Source.EditMode = True
   End If
End Sub

und im Querymodchange

  m1 = session.Getenvironmentstring("SperreDoppelklick")
   Call session.setenvironmentvar("SperreDoppelklick","")
   If m1 <>"1" Then
      Messagebox "Doppelklick wurde deaktivert!" & Chr$ (10) & "Bitte w/ hinterlegten Formeln über den Button bearbeiten....." & Chr$ (10) & Chr$ (10) &_
      "Bei technischen Problemen, wenden Sie sich bitte an die IT-Orga"
      continue = False
   End If
End Sub


Dabei erhalte ich jedoch wenn ich das Dokument bearbeite den Fehler "Variant does not contain an object". Das Dokument wechselt anschließend übrigens trotz Doppelklick immer noch in den Bearbeitungsmodus. Oder habe ich was falsch verstanden?

Titel: Re: Edit Modus nur über Button ermöglichen
Beitrag von: Thomas Schulte am 08.06.15 - 11:35:15
Du solltest Session vielleicht auch füllen ....
Titel: Re: Edit Modus nur über Button ermöglichen
Beitrag von: manboo8000 am 08.06.15 - 11:36:58
Du solltest Session vielleicht auch füllen ....

Kannst du das bitte erklären. Danke
Titel: Re: Edit Modus nur über Button ermöglichen
Beitrag von: Thomas Schulte am 08.06.15 - 11:42:51
Dim session as New Notessession ....

Ohne das wird Session immer NULL sein.
Und dann vielleicht auch M1 deklarieren. Als String.
Titel: Re: Edit Modus nur über Button ermöglichen
Beitrag von: manboo8000 am 08.06.15 - 11:52:25
Vielen Dank!
Sorry, Script ist noch nicht so meins. Hatte bislang mein Seminar noch nicht, versuche es aber zu verstehen :-)