Domino 9 und frühere Versionen > Entwicklung

dynamische Ansichten!

<< < (2/5) > >>

Performance:
@Rob Green

habe diesen Code schon vor mehr als einem Jahr probiert und ich habe es heute nochmal probiert - da tut sich nichts

- im Agent versucht der Typ auf die view zuzugreiefen bin mir aber nicht im klaren wie das funktionieren soll
Dim uiview As notesuiview
Set uiview=ws.currentview

diese Zuweisung bleibt bei mir immer leer...

- ich wäre dir echt verbunden wenn du einen Tip abgibst wie man es richtig macht (hast ja gesagt das der Code ok ist)


erwartungsvoll
cu

Rob Green:
der Code liest sich wirklich "ok", denn ich finde die Idee von dem Typ iO. Ich habe es nn verwendet, aber kein Thema es einzubauen. Melde mich heute Abend.  :)

Rob Green:
so...dele....

erfolgreich getestet soeben.

Screen:


1. Habe eine Gliederung (Outline) erstellt
2. In den Gliederungspunkt habe eine Aktion reingeschrieben:

--- Code: ---@SetEnvironment("ViewAction";"Remove");
@Command([ToolsRunMacro];"IsEmbeddedView")
--- Ende Code ---
3. dann habe ich die Gliederung in eine Maske embedded (ist der rosane Part im Bild....sorry.  ;D)
4. in die gleiche Maske habe ich einen View embedded
5. dann einen Agent namens "IsEmbeddedView" erstellt mit Inhalt:

--- Code: ---Dim s As New NotesSession
Dim ws As New NotesUIWorkspace
Dim uiview As notesuiview
Set uiview=ws.currentview
'check to see if cursor is in the embedded view
If Not (uiview Is Nothing) Then
Call ws.currentdocument.clear
End If
--- Ende Code ---
6. ins QueryDocumentDelete kam

--- Code: ---Dim s As New NotesSession
Dim doc As NotesDocument
Dim ViewAction as String
ViewAction = s.GetEnvironmentString("ViewAction")
if ViewAction <> "" then
Set doc = source.documents.getfirstdocument
'here branching code would be inserted to figure out
'what to do based on the type of doc and the
'ViewAction environment variable...
Msgbox doc.universalid+Chr(13)+Chr(13)+ _
doc.address1(0), 0, ViewAction
'just testing, don't delete anyting
continue = False
'reset ViewAction
call s.SetEnvironmentVar("ViewAction","")
End If
--- Ende Code ---
7. Gemäß diesem letzten Code müßte ein markiertes Doc in der embedded view in der Tat mit seiner Universal-ID in einer Messagebox angezeigt werden.

Und wie man im Bild sieht klappt das auch, wenn ich ein beliebiges Doc im embedded view markiere, den Gliederungspunkt anklicke und dann das Ergebnis sehe :) Der Autor=Erfinder dieses Codes hatte also doch recht. Ich weiß nicht, woher der Fehler bei den anderen kommt. Ich hatte zB das Doc im Lesemodus gelassen, da klappt natürlich das ws.doc.clear nicht. Im Editmode geht das einwandfrei. Was natürlich auch nicht geht, ist den Code im Debugger durchlaufen zu lassen, da dann das markierte Doc im embedded View seinen Fokus verliert anscheinend, denn wie sonst kann man erklären, daß im Debugger uiview leer ist und ohne Debugger der Code wunderbar durchläuft und das markierte Doc im embedded View tatsächlich greift?

Heißt das jetzt, daß etwas was angeblich nie ging doch geht???

Performance:
@Rob Green

ok - das funktioniert so  :D

Ich hatte es vorher ohne outline getestet, d.h. ich hatte im dok ein Action-button oder auch ein Hotspot.  So funktioniert das leider nicht.
Meine Frage ist warum geht das mit nem outline aber nicht mit einen actionbutton ?
Ich vermute das Notes beim klick auf den button den Fokus aufs dok legt bevor der Code abläuft, und dann ist es klar das da keine uiview gefunden wird. Klickt man aber zweimal auf die action outline  ist der Effekt der gleiche - Verlust des Fokus.

Wie du schon sagtest die Aktion ist nur im Edit mode anwendbar.

Meine nächste Frage ist - kann man das den Kunden antun ? oder handelt man sich da nur weitere Probleme auf ?
... sowas wie "Warum geht das im edit und nicht im Lese Modus" und warum geht das beim 2 klick nicht mehr ?" will ich mir auch nicht täglich anhören.

Also die Lösung funktioniert, aber es ist eine 'nice to have' Lösung will sagen keine produktivlösung.

thx

cu

Rob Green:
hm..für den USer dürfte wohl die Frage nach dem "Outline oder actionbutton" so ziemlich 100% wurscht sein. Das kann man also als "problem" haken. Also Outline.

Aber zur Frage, was passiert, wenn der User den Outline "Button" (würde ich grafisch hinterlegen) zweimal hintereinander anklickt: mit dem ersten Klick wird ja bereits eine Aktion ausgeführt. Daher würde ich ... mal laut nachdenken ... umgehend irgendeine Messagebox aufpoppen, die genau das "2x anklickern" verhindert. So nach dem Motto "Ihr Bearbeitungwunsch wird umgehend ausgeführt". Ich denke dabei daran, daß das Userinterface durch die umgehend aufpoppende Messagebox für einen zweiten Klickanngriff blockiert wird. Stellt sich die Frage, ob dann nicht dadurch das im embedded view markierte Doc  seinen Focus verliert.


Dann muß man ja noch das Doc in den Editmode versetzen (wenn es das nicht ist, ist es ja ein Leichtes)....verliert sich dann auch der Fokus?

Und wenn der User mind. keine Author Rechte hat, wirds auch schwer.

ABER: wer sagt denn, daß man unbedingt die ws.clear Methode verwenden muß, um das QueryDocDelete anzutriggern? Man kann doch jedes andere Event nehmen, was eben nicht zu Problemen mit Editmode bzw. Rechteproblemen führt. Man muß das Prinzip dahintersehen...das "markieren" scheint mir nicht unbedingt vom Editmode abzuhängen. Und wenn das passt, dann geht auch wirklich jede andere Methode.


Tja, wenns passt, ok (was die Fokussierei angeht....kann man nur antesten erstmal, bevor man definitiv dazu etwas sagen kann). Und wenns vom Gesamtbnild net passt, halt nicht. Mach mir da keinen großen Kopp. Alle Wege führen letztlich nach Rom.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln