Autor Thema: Disable copying to clipboard ($KeepPrivate)  (Gelesen 4854 mal)

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Disable copying to clipboard ($KeepPrivate)
« am: 10.08.12 - 15:13:59 »
Hallo zusammen,
in unserer DB soll das manuelle kopieren von Dokumenten disabled werden. Dazu habe ich in der Form einen Haken bei "Disable printing/forwarding/copying to clipboard." gemacht. Allerdings kann man immer noch (neu erstellte) Dokumente (natürlich mit dieser Form) kopieren. Danach habe ich in die Form noch ein Feld "$KeepPrivate" eingefügt und mit der Value 1 versehen. Dennoch kann ich mit der Form neu erstellte Dokumente kopieren... Muss ich noch etwas anderes beachten? Vielen Dank und Gruß

Edit: Anscheinend wurde irgendwas nicht richtig aktualisiert, auf jeden Fall klappt es jetzt mit dem zusätzlichen Field :) Ist also gelöst!
« Letzte Änderung: 13.08.12 - 13:21:57 von yannick »

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Disable copying to clipboard ($KeepPrivate) - Gelöst
« Antwort #1 am: 10.08.12 - 17:42:26 »
Zitat
in unserer DB soll das manuelle kopieren von Dokumenten disabled werden.
Wenn es darum geht, keine Dubletten zu erzeugen, würde ich besser im QueryPaste-Ereignis Continue auf "FALSE" setzen (was leider in allen Views/Folders gemacht werden muss) und ggf noch über einen entsprechenden eventgetriggerten Agent, die Dokumente nach dem Einfügen wieder löschen, falls es jemand trotzdem schafft.

$KeepPrivate="1" hat nämlich noch folgende Seiteneffekte:
- Drucken funktioniert nicht
- beim Bearbeiten funktioniert die Zwischenablage auch nicht. (echt lästig beim Überarbeiten von größeren Richtexten)
Außerdem hindert es den User nicht daran, Dokumente aus anderen DBs in deine DB zu kopieren.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Disable copying to clipboard ($KeepPrivate) - Gelöst
« Antwort #2 am: 12.08.12 - 14:39:45 »
Super, danke dir für die Antwort, denn Drucken sollte schon noch möglich sein. Habe es jetzt nach deinem Vorschlag gemacht, klappt auch wunderbar :)

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Disable copying to clipboard ($KeepPrivate)
« Antwort #3 am: 13.08.12 - 13:26:00 »
Nochmal kurz zur Sache. Und zwar geht es jetzt um einen Button der eben ein Dokument kopieren soll. Der Button ist in der Form integriert und soll dann das currentDocument einfach kopieren. Allerdings habe ich dazu nicht viel gefunden (wahrscheinlich ist es einfach zu einfach), nur sehr viel darüber wie man Dokumente von DB zu DB kopiert. Also ich möchte einfach eine exakte Kopie des currentDocuments in der DB speichern (vielleicht noch ein paar Werte verändern, aber mir geht es eher ums Kopieren hier) und diese als neuen Tab in Notes öffnen. Ich habe eben einfach mal versucht ein neues Dokument mit dem currentDocument gleichzusetzen und zu speichern, so scheint es ja schonmal nicht zu gehen :P
« Letzte Änderung: 13.08.12 - 13:29:12 von yannick »

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Disable copying to clipboard ($KeepPrivate)
« Antwort #4 am: 13.08.12 - 13:29:36 »
Hallo,

Und warum machst Du dann nicht (ist nur ein Beispiel)

Set docOrg = view.GetDocumentByKey(...)
Set docNew = New NotesDocument(CurrentDb)

Call docOrg.CopyAllItems(docNew, True)
Call docNew.Save(True, False)


Andreas

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Disable copying to clipboard ($KeepPrivate)
« Antwort #5 am: 13.08.12 - 13:35:13 »
Ich erstelle dann immer ein neues Dokument in der Datenbank und kopiere alle Items aus dem Backend des aktuellen Dokuments in das neue.

Set newdoc = New NotesDocument (db)

Set doc = uidoc.Document
Call doc.CopyAllItems (newdoc)
'Anpassungen an newdoc
Call newdoc.Save (True, True)

Man kann sicherlich auch eine Methode nehmen, die das ganze Dokument kopiert (habe den Namen der Funktion gerade nicht im Kopf, sowas wie Call doc.CopyToDatabase (db)), dabei wird das Dokument sofort gespeichert. Bei Verwendung von Autorenfeldern und Zugriff der Benutzer als Autor (was dringend zu empfehlen ist) kann es dann passieren, dass die nachträglichen Änderungen nicht mehr gespeichert werden können, da der Autorenzugriff fehlt.

EDIT:

Das Öffnen machst Du dann mit

Call workspace.EditDocument (False, newdoc) im Lesemodus oder
Call workspace.EditDocument (True, newdoc) im Bearbeitenmodus
« Letzte Änderung: 13.08.12 - 13:38:30 von Peter Klett »

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Disable copying to clipboard ($KeepPrivate)
« Antwort #6 am: 13.08.12 - 15:46:03 »
Super, danke! Hat schonmal so geklappt, habe dann aber doch gleich ein ganz neues Dokument erstellt und die Werte aus dem "alten" Dokument in die Kopie übernommen (es sollten nicht alle Werte übernommen werden. Letztendlich hat sich herausgestellt, dass kaum etwas übernommen werden sollte). Jetzt habe ich nur wieder ein Problem mit diesen ... richtext Items. Und zwar soll in der Kopie in einem RT-Feld der Doclink zum Original-Dokument eingefügt werden. Ich bekomme hier beim Aufruf der Funktion immer die Methode mein Object sei nicht gesetzt  :-\
Code
	Dim ws As New NotesUIWorkspace
	Dim db As NotesDatabase
	Dim newdoc As NotesDocument
	Dim doc As NotesDocument
	Dim uidoc As NotesUIDocument
	Set uidoc = ws.Currentdocument
	Set db = ws.Currentdatabase.Database
	
	Set newdoc = New NotesDocument (db)
	Call newdoc.Replaceitemvalue("Form", "myForm")
	Set doc = uidoc.Document	
	
	'get doclink
	Dim rtitem As NotesRichTextItem
	Set rtitem = newdoc.Getfirstitem("rtField")
	Call rtitem.Appenddoclink(uidoc.Document, "test")
.
.
.
Das "rtField" ist ein ganz normales RichtText-Feld, daher verstehe ich nicht ganz warum das nicht gesetzt werden kann?
« Letzte Änderung: 13.08.12 - 15:49:52 von yannick »

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Disable copying to clipboard ($KeepPrivate)
« Antwort #7 am: 13.08.12 - 15:49:48 »
Was sagt denn der Debugger?
Und warum nimmst Du denn bei AppenDocLink das UI-Document und nicht das doc?


Andreas

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Disable copying to clipboard ($KeepPrivate)
« Antwort #8 am: 13.08.12 - 15:54:26 »
Wie gesagt: Object variable not set. Wenn ich im Debugger unter Variables schaue, ist mein RT-Feld nach dem "set" auch immer noch leer...
Bei dieser Zeile hängt´s: Call rtitem.Appenddoclink(uidoc.Document, "test")
Also liegt´s doch an dieser Zeile (weil object variable not set): Set rtitem = newdoc.Getfirstitem("rtField")

Ob doc oder uidoc.document dürfte egal sein? (war mir nur nicht sicher, ob ich beim "doc" auch den richtigen Link bekommen würde)
« Letzte Änderung: 13.08.12 - 15:56:36 von yannick »

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Disable copying to clipboard ($KeepPrivate)
« Antwort #9 am: 13.08.12 - 15:56:34 »
Du kannst Dir im Debugger doch genau ansehen, ob Deine Objekte gefuellt sind oder nicht.
Und wenn Du das nicht gefullte Objekt hast, dann findet man doch auch sehr schnell den Punkt innerhalb des Codes bei dem man ansetzen muss.

Edit
Hatte ich doch glatt ueberlesen, dass Du das betreffende Objekt bereits ausfindig gemacht hast.

Stellt sich nur noch die Frage, gibt es dieses Item "rtFeld" denn ueberhaupt schon in Deinem newdoc?
Wenn nicht, dann kommst Du mit GetFirstItem nicht weiter. Dann musst Du dieses Item erst mit
Set rtitem = New NotesRichTextItem(docnew, "rtitem") anlegen.


Andreas
« Letzte Änderung: 13.08.12 - 16:00:01 von ascabg »

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Disable copying to clipboard ($KeepPrivate)
« Antwort #10 am: 13.08.12 - 15:57:39 »
Den Punkt habe ich im obigen Post schon genannt:
Set rtitem = newdoc.Getfirstitem("rtField")
Hier wird das rtitem nicht gesetzt! Nur verstehe ich nicht, warum.  :-:

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Disable copying to clipboard ($KeepPrivate)
« Antwort #11 am: 13.08.12 - 16:01:17 »
Set rtitem = newdoc.GetFirstItem ("rtField")

Setzt rtitem mit dem Item rtField im Dokument. Aber Du hast überhaupt kein solches Item im Dokument (-> object variable not set), denn das Dokument ist brandneu und hat nur ein Item mit dem Namen "Form", denn das schreibst Du da rein.

Set rtitem = New NotesRichtextItem (newdoc, "rtField")

wäre ein guter Ansatz ...

EDIT: Ist das gleiche, was Andreas oben auch schon geschrieben hat, aber nachdem ich meine Antwort angefangen hatte ...
« Letzte Änderung: 13.08.12 - 16:05:15 von Peter Klett »

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Disable copying to clipboard ($KeepPrivate)
« Antwort #12 am: 13.08.12 - 16:06:38 »
Achso, ich dachte das würde quasi ein "neues" Feld mit dem Namen "rtField" an mein Dokument anhängen. Das hatte ich auch schon probiert, da gab es zwar keinen Fehler, allerdings wurde kein Link eingefügt.
Jetzt klappt es aber, es hat einfach nur noch das "rtitem.Update" gefehlt. :) Danke euch!
Und Peter, egal, ob es im Prinzip das gleiche ist. Ich lese lieber mehr über als weniger über das Thema! Also auch dir vielen Dank ;)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz