Domino 9 und frühere Versionen > Entwicklung
Wie kann ich eine Klasse sinnvoll aufbauen ?
Markus Henke:
Ata, habe ich das richtig verstanden, dass Duu zum Teil Code in Dokumenten speicherst, anstatt ihn im Design zu haben? Das hört sich interessant an, was ist der Vorteil davon?
Markus
ata:
... das hat Vorteile, aber auch Nachteile...
Ich habe die Technik in meiner Support-Datenbank eingebaut. Damit lassen sich per Schlagwort dann verschiedene "Aktions-Bündel" zur Verfügung stellen.
Vorteile:
Mit normalen Notes-Mitteln kannst du bestimmen, wer den Code verändern kann, wer verwenden...
Mit einer kleinen Erweiterung eines Popup's kann man damit Aktionen an beliebiger Stelle zur Verfügung stellen. Einmal programmiert, an allen erreichbaren Stellen verwendbar...
Man kann auf ScriptLibraries der aktuellen Datenbank zugreifen.
Es lassen sich auch externe ".lss"-Dateien einbinden - damit keine 65K-Grenze...
Nachteile:
Als Entwicklerplattform bietet es zunächst keinerlei Komfort, da überlicherweise Notepad verwendet wird.
Dies lässt sich umgehen, wenn man die Dateien explicit auslagert und als ".lss" mit einem bestimmten Programm bearbeiten lässt. Hat dann aber die Nachteile, daß der Code vor Ort zur Verfügung stehen muss...
Debugging ist bei weitem nicht so komfortabel. Es kommt eine Fehlermeldung, die in der Regel hilfreich ist, wenn aber dein Code sehr umfangreich ist, dann solltest du einen Texteditor verwenden, der dir die Zeilennummer anzeigt, oder entsprechenden Debugging-Code einbauen...
@Axel:
Der Weg ist eigentlich ganz simpel:
Execute( |MsgBox("Hallole")| )
Das Geheimnis ist, das alle Objekte innerhalb des Execute's deklariert und initialisiert werden müssen. Wenn du etwas Geduld hast, dann zeig ich's in einer kleinen Demo-DB...
ata
ata:
... zur Demo reicht es heute nicht mehr - aber zu einer kleinen Anleitung:
--- Code: ---' # ###################################################
%REM
ata - 23.06.2004
In dieser kleinen Demo möchte ich zeigen, wie
Text als LS-Code ausgeführt werden kann.
Als Beispiel verwende ich
... Globale Variablen
... Globale Funktionen
... normaler Code
'
Was für einen Wert gibt in diesem Beispiel die MsgBox zurück?
Die Rückgabe erscheint in der Statuszeile...
'
Man benötigt
... ein Feld "Code"
... ein Event - zum Beispiel eine Schaltfläche
'
Als Schaltflächen-Code zur Ausführung dient:
'
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim docThis As NotesDocument
Set docThis = ws.CurrentDocument.Document
If docTHis.Code(0) <> "" Then
vCode = docThis.Code
sCode = ""
For i = 0 To Ubound( docThis.Code )
sCode = sCode + vCode( i ) + Chr(10)
Next
Execute( sCode )
End If
End Sub
'
Das Feld "Code" ist ein Mehrfachwerte-Feld
... Mehrere Werte werden nur mit neuen Zeilen getrennt
%END REM
' # ###################################################
' # ... im Feld "Code" kann dann der folgende Code verwendet werden....
'
' # Globale Deklarationen
Option Explicit
' Use "Deine LS-Library"
' %INCLUDE "C:\Temp\deineLSS-Datei.lss" ' lässt sich auch später noch einbauen...
Dim sPos As String
'
' ... dann lassen sich Klassen, Type's und Funktionen einbauen
Function makeMsg( sText As String , iTyp As Integer ) As Integer
sPos = "Sub makeMsg."
On Error Goto ErrorHandle ' # innerhalb von Sub's und Function's sind Sprunmarken möglich
makeMsg = MsgBox( "Ausgabe: " + sText , iTyp , "Ausgabe einer Meldung" )
Exit Function
'
ErrorHandle:
Print "Fehler: " + sPos + Cstr( Erl )+ " - " + Error
Resume Next
End Function
'
' # ... letztendlich dann der eigentliche Code, der ausgeführt werden soll - hier sind keine Sprungmarken (GoTo) möglich...
Dim sText As String
Dim res As Integer
sText = "Hallole"
res = makeMsg( sText , 2 )
'
Print res
--- Ende Code ---
... der obige Code kann komplett in das Feld "Code" kopiert werden.
Mit der Schaltfläche wird dann der Code ausgeführt...
... es liese sich auch ein Rich-Text-Feld in der Maske plazieren, in der dann ein Button eingefügt wird. Als Code dient dann der "Click()"-Code aus dem Beispiel...
... und es gibt noch viel weitere Spielarten... ;D ;D ;D
ata
koehlerbv:
Danke, Anton, dass Du eine Lanze gebrochen hast für dieses hochwirksame LS-Statement. Das sollte eigentlich auch ein BP-Artikel wert sein ... Wir sollten das vielleicht im BP-Diskussionsforum weiter diskutieren.
Bernhard
ata:
... wenn du meinst...
Toni ;D
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln