Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Sabine am 30.01.06 - 12:10:58

Titel: Public is not allowed in this module
Beitrag von: Sabine am 30.01.06 - 12:10:58
Hallo  :(,

ich wollte in einer Aktion "schließen" eine Messagebox einbinden, die vorher abfragen soll, ob das Dokument ohne vorheriges Speichern geschlossen werden soll. Da es mit einem einfachen @Command nicht funktioniert. Es handelt sich auch um eine gemeinsame Aktion, die sich auf ganz viele Masken bezieht. In manchen Masken gibt es ein Feld Save Options und in manchen Masken keines! Deshalb wollte ich dieses Problem mit Lotus Script lösen. Aber wenn ich  "%INCLUDE "lsconst.lss" in Declarations einbaue, dann bekomme ich die Fehlermeldung "Public is not allowed in this module"... wie kann ich das Problem lösen  :-:

Danke Euch

Gruß Sabine
Titel: Re: Public is not allowed in this module
Beitrag von: koehlerbv am 30.01.06 - 12:15:59
Option Public ist in Modulen wie Schaltflächen tatsächlich nicht erlaubt (es wäre ja auch Quatsch  ;D).

Es gibt mehrere Wege, Dein Problem zu lösen.
Warum benötigst Du überhaupt die ganze LSCONST.LSS? Du kannst Dir ja separat deklarieren, welche Konstanten Du wirklich benötigst - und diese eben nicht Public.
Willst Du trotzdem LSCONST.LSS verwenden, dann erstelle Dir eine ScriptLibrary und binde dort die Konstanten mit %Include ein. In Deiner Aktion verwendest Du dann ein Use "DeineLib".

HTH,
Bernhard
Titel: Re: Public is not allowed in this module
Beitrag von: Sabine am 30.01.06 - 13:38:43
Welche Konstanten würde ich denn bei diesem Script benötigen? Ich habe das mit dem Iclude... noch nie wirklich verstanden :-(

Code
Dim ws As New NotesUIWorkspace
	Dim uidoc As NotesUIdocument
	Dim boxType As Long
	Dim answer As Integer
	
	Set uidoc = ws.CurrentDocument
	
	boxType& = MB_YESNO + MB_ICONQUESTION
	answer% = Messagebox("Wollen Sie das Dokument ohne zu speichern schließen?", boxType&, _ 
	"Schließen?")
	
	Call uidoc.Close

Herzlichen Dank  :)
Titel: Re: Public is not allowed in this module
Beitrag von: ascabg am 30.01.06 - 13:43:46
Hi,

Folgende Konstanten wuerdest Du benoetigen:

Const MB_YESNO = 4
Const MB_ICONQUESTION = 32

Andreas
Titel: Re: Public is not allowed in this module
Beitrag von: koehlerbv am 30.01.06 - 13:45:48
Wenn ich den Code so sehe, wird eigentlich überhaupt keine Konstante benötigt - die Messagebox-Funktion kann einfach gelöscht werden, da deren Resultat nicht ausgewertet wird.

Bernhard
Titel: Re: Public is not allowed in this module
Beitrag von: Sabine am 30.01.06 - 13:59:29
Danke für den Hinweis mit den Konstanten, habe ich nun auch verstanden... dankeschön *freu* Es klappt auch!

Warum kann sollte das Resultat nicht ausgewertet werden?
Titel: Re: Public is not allowed in this module
Beitrag von: ascabg am 30.01.06 - 14:05:42
Ich habe mir jetzt nochmals die Anforderung an Dein Script angesehen.

Dabei habe ich bemerkt, dass Du eine bereits vorhandene Notes-Funktionalitaet nachbilden moechtest.

==> Wieso?

Anderenfalls koennte Dir der folgende kleine Code ein wenig weiterhelfen:

zusaetzlich zu den beiden Konstanten noch die folgende Konstanten definieren.
Const ID_YES = 6


If Msgbox("Wollen Sie das Dokument ohne zu speichern schliessen?", MB_ICONQUESTION + MB_YESNO, "Dokument schliessen") = IDYES Then
  'hier den Code, wenn Dokument ohne Speichern geschlossen wird
Else
  'hier den Code fuer das Speichern
End If

Andreas
Titel: Re: Public is not allowed in this module
Beitrag von: Sabine am 30.01.06 - 14:12:55
Ich habe das Problem nun so gelöst... danke für Eure Hilfe hat mir sehr geholfen :-)

Code
Dim ws As New NotesUIWorkspace
	Dim uidoc As NotesUIdocument
	Dim boxType As Long
	Dim answer As Integer
	Const MB_YESNO = 4
	Const MB_ICONQUESTION = 32
	
	Set uidoc = ws.CurrentDocument
	
	If   uidoc.EditMode = True Then
		
		boxType& = MB_YESNO + MB_ICONQUESTION
		answer% = Messagebox("Wollen Sie das Dokument ohne zu speichern schließen?", boxType&, _ 
		"Schließen?")
		
		If answer%= 6 Then 'ja
			Call uidoc.Close
		Else 'nein
			Exit Sub
		End If
	Else
		Call uidoc.Close
		Exit Sub
	End If
Titel: Re: Public is not allowed in this module
Beitrag von: Gregory.Engels am 20.12.11 - 10:09:55
und nun, nach Jahren (*grins*) mal ne richtige Erklärung, die nur auf das ursprüngliche Problem eingeht:

die Zeile "%INCLUDE "LSCONST.LSS" gehört in den (Declarations) Abschnitt des Codes, allerdings nicht in das der Schaltfläche (was die Fehlermelung verursacht, die der OP hatte), sondern in DAS DER MASKE unter (Globals). Da gibt es ebenfalls ein (Declarations) Abschnitt.

P.S: normalerweise würde ich das nicht schreiben, aber dank Randy's Comic "Wisdom of the Ancient" http://xkcd.com/979/ habe ich es mal getan ;-)