Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: muR am 05.08.04 - 12:38:44
-
Hallo,
ich hab' da ein Problem mit den Buttons.
Ich möchte Notes Script den Name des Button auslesen welches von User gedrückt worden ist. Ich wollte das über das Click event machen. Da wird zwar ein tolle Source als Variable reingeschrieben welche ab gänzlich leer ist. Wie bekommt man das auf die Reihe.
Danke für Euere Hilfe.
Gruß
-
gar nicht..... aber ich verstehe auch nicht wozu...
Hast Du vielleicht eine Script- Library, die von jedem Button aus aufgerufen wird, und wo das, was getan wird, vom Button abhängig ist !?
Dann übergib der Funktion einen Parameter und schreib in Deinen Button-Code:
Call DeineFunktion( "NameDesButtons" )
HTH
Tode
-
Ich kann mich Tode hier nur vollkommen anschliessen: Sicherlich kann man da einiges machen (nur nicht so, wie Du Dir das momentan vorstellst), nur müssen wir wissen, was Du eigentlich erreichen willst. Schreib' das mal sauber auf und vertraue dann auf die Community dieses Forums ;)
Bernhard
-
Also ich habe eine Adressdatenbank mit einer Maske die eine eingebette Ansicht besitzt. Über die Buttons soll die ANsicht selektiert werden. Die Buttons haben die Namen A...Z somit werden jeweils die Adressen mit A, B...Z angezeigt.
Mein jetziger Code ist im Clickevent der Buttons.
Sub Click(Source As Button)
Dim uiws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = uiws.CurrentDocument
Set doc = uidoc.Document
doc.ABCsort = "D" 'Hier soll der Buttonname rein
Call uidoc.Refresh
End Sub
Nur möchte ich einen einheitlichen Code haben und nicht jedesmal den Buchstaben im Code hinterlegen, sondern den Namen des Buttons (de ja der Buchstabe ist) im Code benutzen.
Gruß
mur
-
Du kannst doch im Form eine globale Funktion definieren z.B.
wechsleABCSort('D')
dann brauchst du pro button nur 1 Funktion aufzurufen und hast einen einheitlichen Code, ausserdem wird dann nicht jedesmal der uiws initialisert....
-
das mit der Funktion ist schon mal gut...
Abgesehen davon:
in der Zeit, in der Du hier im Forum auf die Antwort gewartet hast, hättest DU auch schon den Button 26x kopiert und die Buchstaben eingetragen... ;)
Ich würde Dir aber trotzdem raten, das in eine Funktion auszulagern. Was bringt es Dir, wenn der Buchstabe aus dem Button-Lable berechnet wird, und Du später merkst, dass in Deinem Code eine Zeile Fehlt / Code- Optimierungen vorgenommen werden könnten...
Also:
in jeden Button reinschreiben Call wieauchimmer( "A" )
und dann in Deine Funktion den Code... wenn sich dann was ändert, dann musst DU nur an einer Stelle code wälzen, nicht an 26.
HTH
Tode
-
Ich würde Dir aber trotzdem raten, das in eine Funktion auszulagern.
Sehe ich auch so.
Wenn Du allerdings mit "Shared Actions" und einer ScriptLibrary arbeitest, können unter Umständen Probleme auftauchen.
Siehe Kapitel 9.4.1 des BP-Artikels Agenten in Notes/Domino (http://www.atnotes.de/index.php?board=26;action=display;threadid=16181)
9.4.1 Shared Actions – Gemeinsame Aktionen
Es gibt vermehrt Probleme beim Einsatz von Shared Actions – wenn diese in Lotus Script geschrieben sind. Das Script wird nicht immer wie vorgesehen ausgeführt. Die Probleme treten noch häufiger auf, wenn im Code auf Script Libraries zurückgegriffen wird. Als Abhilfe lagert man das Script in einen Agenten aus (Trigger: None / Run once (@Commands may be used)). In die Shared Action schreibt man den Formelsprachebefehl @Command([ToolsRunMacro]; Agent ) und ruft damit den erzeugten Agenten auf. Mit dieser Vorgehensweise lassen sich Shared Actions zuverlässig verwenden.
Das ist mein Weg bei der Verwendung von Script in Verbindung mit Shared Actions. Im Agenten steht dann im Initialze i.d.R. nur 1 Zeile:
Call SubBlaBla(...)
-
Vielleicht sollte man noch dazu sagen, wie das Haupt-Problem aussieht, das mit Shared Actions & Script provoziert wird:
Denn das ist eine Geschichte, auf die man alleine NIE kommen würde:
Benutzt man shared Actions mit Script-Libraries oder einfach direkt codiertem Script, dann kommt es zu dem seltsamen verhalten, dass NotesDatabase.UnprocessedDocuments nur jedes ZWEITE Mal die komplette Collection zurückliefert. Die anderen male wird immer nur das Dokument, das aktuell den Focus hat, zurückgeliefert, egal wie viele man markiert hat..
Ist der Debugger eingeschaltet zeigt sich das ganze wieder anders, ich meine, dass es da immer funktioniert (was die Fehlersuche nicht unbedingt erleichtert), aber das ist schon so lange her, dass ich mir nicht mehr sicher bin...
Gruß
Tode