Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: koehlerbv am 22.10.03 - 11:36:47

Titel: Programmatisch Name Rahmengruppe austauschen
Beitrag von: koehlerbv am 22.10.03 - 11:36:47
Hallo zusammen,
ich komme mal wieder mit einer meiner bescheidenen Fragen ;-)

Ist es möglich, in Datenbanken mit verstecktem Design den Namen der beim Start zu öffnenden Rahmengruppe zu ändern (API, DBDesign Class, ... ?).

Jeder Vorschlag ist wie immer willkommen.
Danke im Voraus,
Bernhard
Titel: Re:Porgrammatisch Name Rahmengruppe austauschen
Beitrag von: Semeaphoros am 22.10.03 - 11:41:56
Hm, müsste jetzt nachschauen, aber da ich grad aus dem Haus muss ....

Ist das in den DB-Eigenschaften auch gesperrt in dem Falle? Möglichkeiten gibt es da schon, bin mir aber nicht im Klaren über Nebenwirkungen, und bevor ich nicht die "Packungsbeilage" gelesen habe, werd ich das Rezept nicht bekannt geben. Ich schau dann mal heute nachmittag ....
Titel: Re:Porgrammatisch Name Rahmengruppe austauschen
Beitrag von: Glombi am 22.10.03 - 11:43:09
Hast Du schon versucht, das Design wieder als "Semi hidden" herzustellen. Da gibt es ein Flag, was gesetzt werden muss. Irgendwo hier im Forum gab es einen Thread, wie das geht. Damit sind dann die einzelnen Designelemente wieder sichtbar, man kommt aber dennoch nicht an die Formeln und Scripts heran. Die Startoption müsste aber damit wählbar sein.

Andreas
Titel: Re:Porgrammatisch Name Rahmengruppe austauschen
Beitrag von: Driri am 22.10.03 - 11:45:42
Zur Not gabs da noch ne ganz brutale Methode, man konnte (wenn ich mich recht entsinne) die DB im HExeditor öffnen und da an einer Adresse rumdrehen, dann war das Design wieder offen.
Müßte ich zur Not mal nach suchen, welche Adresse und was geändert werden muß.
Titel: Re:Porgrammatisch Name Rahmengruppe austauschen
Beitrag von: Glombi am 22.10.03 - 11:48:14
Stimmt, man bekommt aber immer nur das Semi Design (so nenne ich es, weil die Scripts und Formel nicht mehr hergestellt werden können).

Es gibt ab R5 keine Möglichkeit, die Gestaltung inkl. der Scripts und Formeln wieder herzustellen, wenn man nicht ein Template mit Design hat.
Aber das nur am Rande.

Andreas
Titel: Re:Programmatisch Name Rahmengruppe austauschen
Beitrag von: koehlerbv am 22.10.03 - 11:54:23
Obicht, bevor wir uns jetzt mißverstehen:
Das DBDesign verstecken wir. Je nach Einsatzzweck soll nun aber von aussen (bei Erstinstallation) eine andere zu öffnende Rahmengruppe eingestellt werden.
Oder es gibt doch eine funktionierende Methode für's Datenbankscript, die ZUVERLÄSSIG genau das gleiche macht wie die Angabe in den DBProperties ...

Ciao,
Bernhard
Titel: Re:Programmatisch Name Rahmengruppe austauschen
Beitrag von: Glombi am 22.10.03 - 11:59:13
Man kann im Postopen des Datenbankscript dochj einfach folgendes eintragen:

@Command( [OpenFrameset] ; "Rahmengruppe" )

das "Rahmengruppe" könnte man sich aus einem Profildokument holen.

Andreas
Titel: Re:Programmatisch Name Rahmengruppe austauschen
Beitrag von: koehlerbv am 22.10.03 - 12:26:52
Im PostOpen ist die DB ja aber schon offen (mit einem anderen Frameset oder im R4-ViewNavigator mit About-Document oder ...). OpenFrameset macht dann ja eine weitere Instanz auf (durchaus korrekt) - also ist die DB zweimal offen ...

Ciao & danke,
Bernhard
Titel: Re:Programmatisch Name Rahmengruppe austauschen
Beitrag von: Driri am 22.10.03 - 12:39:42
Hi,

nur ne Idee :

- der benötigte Aufbau wird in einem Profildokument abgelegt
- keine Gliederung verwenden, sondern Navigatoren
- die Navigatoren kann man per Formel auf einer Seite darstellen, d.h. Formel basiert auf dem Profildokument
- die "berechnete" Seite baut man in ein Frameset ein, welches man standardmäßig öffnet
Titel: Re:Programmatisch Name Rahmengruppe austauschen
Beitrag von: koehlerbv am 22.10.03 - 12:44:11
Navigatoren sind leider zu statisch für den gewünschten Zweck (keine private folder usw.).

Aber danke für Deinen Vorschlag !

Bernhard
Titel: Re:Programmatisch Name Rahmengruppe austauschen
Beitrag von: eknori am 22.10.03 - 12:57:57
die Frameset Information ist im Datenbanksymbol abgelegt.
wenn du dir die Eigenschaften von "Symbol" anzeigen lässt, siehst du im Feld $defaultFrameSet den eingestellten Wert als Ascii text.

Da kannst ja auch Designelemente wie Dokumente ansprechen und dann den Wert entsprechend ändern.
Ich muß mal suchen, da gab es was mit GetSpecialNoteID o.ä.

eknori
Titel: Re:Programmatisch Name Rahmengruppe austauschen
Beitrag von: eknori am 22.10.03 - 13:00:42
soo, hier ist der Code

Dim icon as NotesDocument
                             Set icon = db.GetDocumentByID("FFFF0010") ' special Note ID for Icon doc
                             icon.~$DefaultFrameset = "Rhubarb" ' set launch frameset
                             icon.~$Flags = icon.~$Flags(0) & "4" ' allow soft deletions
                             icon.~$SoftDeleteExpireHours = 8 ' set soft deletion expiry
                             icon.Save True, False
Titel: Re:Programmatisch Name Rahmengruppe austauschen
Beitrag von: koehlerbv am 22.10.03 - 13:02:10
Ha, das klingt doch schon sehr vielversprechend !
Schon vorab herzlichen Dank (im Namen meines Kollegen, den dieses Problem mit OpenFrameset seit längerem plagt).

Bernhard

PS: Kopfschmerzen von gestern abend scheinst Du ja nicht zu haben ;-)
Titel: Re:Programmatisch Name Rahmengruppe austauschen
Beitrag von: koehlerbv am 22.10.03 - 13:55:54
VIELEN DANK, Ulrich !
Das funktioniert wie geschmiert - sogar mit verstecktem Design !

Bernhard
Titel: Re:Programmatisch Name Rahmengruppe austauschen
Beitrag von: eknori am 22.10.03 - 14:02:05
dann habt ihr ja jetzt nichts mehr zu tun, also schönen feierabend dann...  ;D
Titel: Re:Programmatisch Name Rahmengruppe austauschen
Beitrag von: koehlerbv am 22.10.03 - 14:18:31
Schön wär's ...

By the way: Ich habe aber noch eine andere Variante gefunden, die sogar das Austauschen von docDatabaseIcon.~$DefaultFrameset ersparen könnte:

- Im DatabaseScript.Postopen OpenFrameset mit einem Framenamen laut Setup-Dokument.
- Das dumme ist jetzt ja: DB ist schon offen (mit anderem Frameset oder ViewNavigator)
- A-Bär: Das Initialize wird vor PostOpen ausgeführt. Wenn man dort zwangsweise zwangsweise über nnotesws.dll das Fenster zuwirft, öffnet in der Tat nur der geforderte Frameset.

Funktioniert hervorragend auf den ersten Blick, aber das Datenbank-Script hat ja durchaus noch Risiken und Nebenwirkungen, so daß ich noch etwas unschlüssig bin, was ich meinem Kollegen raten soll ...

Ciao,
Bernhard
Titel: Re:Programmatisch Name Rahmengruppe austauschen
Beitrag von: Glombi am 22.10.03 - 14:31:55
Man kann das bereits geöffnete überschreiben (wenn es nicht gerade das About-Dokument ist):

@SetTargetFrame("_top");
@Command( [OpenFrameset] ; "Rahmengruppe" )

Andreas