Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: manboo8000 am 09.06.15 - 16:04:09

Titel: Alternative für "Editgotofield"?
Beitrag von: manboo8000 am 09.06.15 - 16:04:09
Hey, ich habe da mal wieder eine Frage. Bitte nicht gleich mit Steinen werfen, ich lerne noch :-)

Und zwar möchte ich folgendes erreichen:

In einem Feld (z. B. Bemerkungen) stehen verschiedene Daten drin, die bei Bedarf aber angepasst werden sollen/müssen. Klar könnte man jetzt das Dokument einfach bearbeiten, zum Feld scrollen und dort Sachen rausschmeißen, finde ich aber nicht wirklich elegant.

Habe jetzt schonmal mit Editgotofield gebastelt, sodass der Cursor also gleich beim richtigen Feld ist, finde ich aber auch nicht so ganz perfekt.

Am Liebsten hätte ich folgendes:

- Eine separate Aktionsschaltfläche im Dokument
- Aktion zeigt den Inhalt des Feldes in einem Popup (Prompt?) an und man kann dort den Text ändern.
- Der geänderte Text wird in das Feld übernommen.

Geht das ohne großartig mit Lotus Script anzufangen?
Titel: Re: Alternative für "Editgotofield"?
Beitrag von: Klafu am 09.06.15 - 16:07:11
Das klingt für mich alles nach einer Teilmaske in einer Dialogbox.
Die Basics solltest du dafür aber am Besten können
Titel: Re: Alternative für "Editgotofield"?
Beitrag von: manboo8000 am 09.06.15 - 16:25:31
Grundlagen sind soweit vorhanden (auch wenn ich viel nachgucken muss).

Also das Feld um das es geht, wird durch Benutzer mittels einer Aktion befüllt. Die Aktion sieht so aus:
Code
Sub Click(Source As Button)
	Dim session As New notessession     
	Dim ws As New notesuiworkspace
	Dim db As notesdatabase
	Dim dialogDoc As notesdocument
	Dim uidoc As notesuidocument
	
	Set uidoc = ws.currentdocument
	Set db = session.currentdatabase
	uidoc.EditMode=True
	
	zs = Chr(13) & Chr(10)
	
	
	Set doc = db.createdocument
	flag = ws.DialogBox( "Bemerkungen" ,True , True, False, False, False, False, "Bemerkungen", doc )
	If doc.dialogBemerkungenText(0) = "" Then
		Call uidoc.Close
		Exit Sub
	End If
	
	tempText = zs+"---------------- " + Cstr(Now) & " / " + session.commonusername + " ----------------" +  zs + doc.dialogBemerkungenText(0)+zs          
	
	Call uidoc.FieldAppendText("Bemerkungen", tempText )
	Call uidoc.Save
 	Call uidoc.refresh
	Call uidoc.Save
	Call uidoc.Close
End Sub


Nun möchte ich auf mehr oder weniger elegante Weise halt auch über eine Aktion es (einem begrenzten Kreis) ermöglichen, daraus auch Sachen wieder zu entfernen.
Titel: Re: Alternative für "Editgotofield"?
Beitrag von: Tode am 09.06.15 - 16:26:12
Am besten fängst Du in der Hilfe bei @DialogBox mit lesen an... Dann sparst Du Dir den ganzen Script- Code...
Titel: Re: Alternative für "Editgotofield"?
Beitrag von: Keydins am 10.06.15 - 08:16:10
Ist das Bemerkungsfeld ein Textfeld oder ein RichTextFeld?

Bei einem normalen Textfeld besteht das Problem, dass die Menge an Text, die es aufnehmen kann, begrenzt ist. Wird die Grenze überschritten gibt dir Lotus Notes beim Speichern einen 32k-Fehler aus.

Ist bei uns auch mal nach Jahren in einer Anwendung passiert, bei der wir ein Textfeld als 'Historie' genutzt hatten. Der bei jedem Bearbeiten geschriebene Text war ca. 5 Zeilen lang, bei einer freien Kommentarfunktion könnte da allerdings deutlich mehr Text zusammen kommen und das 'Problem' dann deutlich eher auftreten.

Optional zum Einsatz eines RichTextFeldes kann man die Feldeigenschaft 'Summary' eines Textfeldes auf 'False' setzen (NotesItem.IsSummary = false). Dadurch kann man den Inhalt jedoch nicht mehr in Ansichten anzeigen, aber das ist für Bemerkungsfelder mit viel Text ja eher unüblich.
 
 
Gruß Dirk
Titel: Re: Alternative für "Editgotofield"?
Beitrag von: manboo8000 am 10.06.15 - 11:05:10
Derzeit ist es ein normales Textfeld. Dass das Feld überläuft, kann an sich nicht passieren, da sich die erfassten Bemerkungen in Grenzen halten und jedes Dokument immer nur eine gewisse Gültigkeit hat, in der es auch zur Verfügung steht.

Titel: Re: Alternative für "Editgotofield"?
Beitrag von: Klafu am 10.06.15 - 11:23:31
Ich hab ein ähnliches Szenarion in einer meiner Datenbanken.
Dort gibt es ein paar Felder die "wichtig" sind und deshalb nur gesondert änderbar sein sollen.

Ich hab eine Teilmaske erstellt und dort die Textfelder im einer Tabelle im vorher - nachher Vergleich dargestellt. Der Aufruf der Teilmaske über die Dialogbox aus dem Dokument (in einem Button) ist relativ überschaubar:

Code
Aenderungen = ws.DialogBox ("Teilmaske", True , True, False, True, False, False, "Dialog Box",,True)
Beim schließen der Teilmaske werden dann die Änderungen in das Dokument geschrieben.

Guck dir einfach mal die verschiednen Möglichkeiten von Dialogbox und Teilmasken an.

Chris
Titel: Re: Alternative für "Editgotofield"?
Beitrag von: manboo8000 am 11.06.15 - 09:34:05
so, also ich habe es jetzt soweit, dass ich die Teilmaske eingebaut habe und der normale User über eine Schaltfläche was eintragen kann.

Ich habe es auch soweit hin, dass ein bestimmter Userkreis über eine Schaltfläche die Dialogbox aufbekommt, un die eingetragenen Werte aus dem Feld angezeigt bekommt und bearbeiten kann. Was nicht klappt ist, dass Änderungen anschließend auch übernommen werden.

Irgendwie bin ich zu blöd dafür. Ich dachte, dass wenn in der Dialogbox auf "ok" geklickt wird (Rückgabe = @True?), die Werte mit einem @Replace übernehmen könnte. Das haut aber irgendwie nicht hin.
Titel: Re: Alternative für "Editgotofield"?
Beitrag von: Klafu am 11.06.15 - 10:02:55
Bist du, wenn die Teilmaske kommt, im Ursprungsdokument im Bearbeitungsmodus (uidoc.EditMode=True)?

Ergänzung: Achja. Ein @Replace brauchst du dabei garnicht. Das Feld in der Teilmaske muss so heißen wie das Feld im Dokument.
Titel: Re: Alternative für "Editgotofield"?
Beitrag von: manboo8000 am 11.06.15 - 10:09:57
danke, jetzt gehts - komplett über Formeln
Titel: Re: Alternative für "Editgotofield"?
Beitrag von: manboo8000 am 12.06.15 - 12:33:27
lässt sich eigentlich in einer bestehenden Datenbank, in der es auch schon Dokumente mit Bemerkungen gibt, problemlos aus dem Feld eine Teilmaske bauen? Werden dabei die vorhandenen Bemerkungen übernommen?
Titel: Re: Alternative für "Editgotofield"?
Beitrag von: Klafu am 12.06.15 - 12:48:53
Du kannst in einer Datenbank jederzeit eine Teilmaske aufbauen, die den aktuellen Wert eines Feldes aus dem Dokument anzeigt. Es muss sich dabei nicht mal um ein Feld handeln, welchs im Dokument dargestellt wird.

Chris