Autor Thema: Public is not allowed in this module  (Gelesen 7822 mal)

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Public is not allowed in this module
« 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
« Letzte Änderung: 30.01.06 - 14:13:11 von Sabine »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Public is not allowed in this module
« Antwort #1 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

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: Public is not allowed in this module
« Antwort #2 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  :)

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Public is not allowed in this module
« Antwort #3 am: 30.01.06 - 13:43:46 »
Hi,

Folgende Konstanten wuerdest Du benoetigen:

Const MB_YESNO = 4
Const MB_ICONQUESTION = 32

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Public is not allowed in this module
« Antwort #4 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

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: Public is not allowed in this module
« Antwort #5 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?
« Letzte Änderung: 30.01.06 - 14:03:53 von Sabine »

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Public is not allowed in this module
« Antwort #6 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

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: Public is not allowed in this module
« Antwort #7 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

Offline Gregory.Engels

  • Frischling
  • *
  • Beiträge: 4
    • Domino aus der Steckdose
Re: Public is not allowed in this module
« Antwort #8 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 ;-)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz