Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Aladdin Sane am 20.07.04 - 17:03:30

Titel: UIdoc im Frame erstellen
Beitrag von: Aladdin Sane am 20.07.04 - 17:03:30
Hallo.

Ich möchte über LS ein UIDoc in einem Frame erstellen.

Bislang habe ich das mit folgendem Code probiert:

Call uiwk.SetTargetFrame("Frame")
Set uidoc = uiwk.Composedocument("", "", "Form")

Dokument wird erstellt, aber wenn ich es schließe, geht die ganze DB zu,
weil das neue Dokument nicht in den "Aktvitätsschaltflächen" erscheint.
Was muss ich machen, damit es auch als neuer Eintrag dort erscheint?

Gruß
paSCAL
Titel: Re:UIdoc im Frame erstellen
Beitrag von: TMC am 20.07.04 - 21:55:07
2 Möglichkeiten die ich sehe:

A) Starteigenschaften der Maske (Rakete):
Dort ein Frameset und einen Zielframe für die Maske einstellen

B) Evtl. mit mehreren Framesets arbeiten
-> kann ich auswendig nicht sagen ob da dann ein uiws.OpenFrameSet(..) einen neuen Tab öffnet

Titel: Re:UIdoc im Frame erstellen
Beitrag von: Aladdin Sane am 21.07.04 - 12:37:31

Zu Möglichkeit A)

Das mit dem Zielrahmen habe ich gemacht.
Es sollen ja auch schon vorhandene Dokumente in diesem Frame geöffnet werden.
Hier erscheint auch immer schön ein neuer Tab.
Wenn ich das Dok schließen, sehe ich in dem Frame, die View, aus der ich das Dok ge-
öffnet habe.

Die Anweisung Set uidoc = uiwk.Composedocument("", "", "Form")
erstellt nun ein neues Dok - mit neuem Tab.
Allerdings möchte ich im Dokument gleich nach dem Erstellen Felder mit Inhalten
versehen.
Da bekomme ich nun die Fehlermeldung "Dok muss im Bearbeitungsmodus sein".
Das UIDOc ist aber schon im Bearbeitungsmodus.

Wenn ich folgenden code verwende:
   Call uiwk.SetTargetFrame("Frame")
   Set uidoc = uiwk.Composedocument("", "", "Form")
Dann können direkt Änderungen gemacht werden, aber es erscheint kein neuer Tab....


Idee:
 Set uidoc = uiwk.Composedocument("", "", "Form")
 uidoc.EditMode = True
mal sehen....




Titel: Re:UIdoc im Frame erstellen
Beitrag von: Aladdin Sane am 21.07.04 - 12:42:37
Geht nicht:

   Set uidoc = uiwk.ComposeDocument("","","Material")
   uidoc.EditMode = True

Die zweite Anweisung verursacht hier den Fehler:
"Document Command is not available"
Titel: Re:UIdoc im Frame erstellen
Beitrag von: Driri am 21.07.04 - 12:58:33
Wie versuchst Du denn, die Felder zu füllen ?

Das neu erzeugte UIDoc sollte eigentlich direkt im Editmode sein und daher auch bearbeitbar.
Titel: Re:UIdoc im Frame erstellen
Beitrag von: Aladdin Sane am 21.07.04 - 13:08:23
So sieht der Code aus:

Dim s As New NotesSession
Dim uiwk As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
   
uidoc = uiwk.ComposeDocument("","","Form")

Call uidoc.FieldSetText("Feld","sowieso")
...


Wenn ich keinen Zielrahmen für das zu erstellende Dokument definiere,
läuft das auch...
Titel: Re:UIdoc im Frame erstellen
Beitrag von: Aladdin Sane am 21.07.04 - 13:43:33

Wenn ich nach dem Erstellen und vor dem Versuch ein Feld zu beschreiben
den EditMode aus dem uidoc auslese, ist dieser False.

Setze ich ihn auf true, folgt die o.g. Fehlermeldung...
Titel: Re:UIdoc im Frame erstellen
Beitrag von: Aladdin Sane am 21.07.04 - 13:53:07

Ich habe langsam den Verdacht, dass keine Eigenschaften und Methoden auf
das UIDOC anwendbar sind - "Document Command not available" auch bei
uidoc.refresh...

Gruß
pASCAL
Titel: Re:UIdoc im Frame erstellen
Beitrag von: Aladdin Sane am 21.07.04 - 14:12:30
Jetzt habe ich mal folgendes probiert:

Dokument wird über Formel erstellt:
@Command([Compose];"FORM")

Das Dokument wird genauso erzeugt, wie ich es will.
Darstellung erfolgt auch im editmode.

Jetzt habe ich einen Agenten (LS), der aus dem UIWK das aktuelle Dokument
nimmt (mit uidoc=uiwk.CurrentDocument) und die Felder editiert.

Aufruf des Agenten dann direkt nach dem @Compose:
Sieht dann so aus:
@Command([Compose];"FORM");
@Command([ToolsRunMacro];"EDIT_FORM")

Und was passiert?
Wieder der gleiche Fehler:
"Sie müssen im Editmode sein..."


Titel: Re:UIdoc im Frame erstellen
Beitrag von: Driri am 21.07.04 - 14:21:52
Ich muß erstmal passen, hab leider auch nicht die Zeit, das mal auszuprobieren.