Plánař | Rámec nebo okno ? |
| Dobrý den, prosím, potřebuji, aby tlačítko se scriptem v jazyce vzorců v dokumentu dělalo malinko rozdílnou akci. Ten rozdíl by určovalo to, zda-li je dokument otevřen v samostatném okně nebo v rámci. Když jsem to posledně řešil, tak jsem to obešel, nyní to nejde. Je nějaká funkce @..., která by to zjistila.
Děkuji |
VZ | 2 tlačítka a skrývání jednoho z nich |
29.01.2023 18:04:13
ID: 3761.1
| Ve vlastnostech tlačítka jsou na 5. záložce možnosti skrývání. V části "Hide paragraf when document is " jsou 2 možnosti Previewed for ... a 2 možnosti Opened for ...
Při Previewed for ... bývá dokument obvykle v náhledu v rámci, který by se měl jmenovat NotesPreview, a při Opened for ... bývá otevřen v samostatném okně.
Takže by šlo udělat 2 řádky (tedy odstavce), a na každém z nich jedno tlačítko s jiným zaškrtnutím skrývání. Jedno tlačítko by tak mohlo být schování při náhledu v rámci, a to druhé při otevřeném dokumentu, takže by se lišil i kód podle způsobu zobrazení. A samozřejmě by šlo v obou případech ještě při skrývání rozlišit, jestli je dokument otevřený jen pro čtení anebo pro úpravy. |
Plánař | Poděkování |
30.01.2023 07:58:14
ID: 3761.2
| Dobrý den,
omlouvám se, právě takto to nefunguje. Jde o preview pomocí rámců, nikoliv pomocí preview pohledu. I ve skrývání bych potřeboval nějakou tu funkci nebo jinou fintu k rozlišení.
Děkuji
|
VZ | Vlastnost třídy NotesUIDocument |
30.01.2023 10:29:56
ID: 3761.3
| Šlo by využít Lotus Script - vlastnost NotesUIDocument.inPreviewPane? Viz např. link1
Podle Designer Helpu ke starší verzi 8.5.1 je k inPreviewPane podobný příkaz @Command( [ShowHidePreviewPane] ; showOrHide ) . Jenže ten nezjišťuje stav, ale jen přepíná náhled, takže jestli neexistuje nějaký jiný nedokumentovaný @příkaz, tak asi jen přes ten skript? |
Plánař | vlastnost NotesUIDocument.inPreviewPane |
31.01.2023 12:49:21
ID: 3761.4
| Dobrý den,
vyzkoušeno. Vlastnost NotesUIDocument.inPreviewPane to taky neumí.
Probral jsem všechny funkce jazyka vzorců. Projedu ještě vlastnosti LotusScriptu. |
mpistora | JavaScript |
31.01.2023 22:14:16
ID: 3761.5
| JavaScript, i ten spouštěný v Notes klientu, to zjistí snadno. Když se dá např. do formuláře do onLoad - Client - JavaScript alert(window.top.frames.length); Tak v normálním okně vypíše 0, ve framesetu počet rámců.
Fatální problém je v tom, že svět JavaScriptu moc nemůže s těmi světy LotusScriptů a formulí komunikovat. Z JavaScriptu jde třeba dle názvu referovat tlačítko a vyvolat klik (což naopak z těch běžných světů nejde). |
VZ | Z JS do notes.ini? |
01.02.2023 15:17:32
ID: 3761.6
| Snad by šlo tu informaci o Frame z JS zapsat třeba do notes.ini pomocí metody session.setEnvironmentVar, a pak si ji v kódu tlačítka načíst přes @Environment. Jen by to chtělo nějak zajistit její aktualizaci, tedy při jakém eventu by se měla zase vymazat. A ohlídat, aby si ji jednotlivé dokumenty navzájem nepřepisovaly, pokud by jich bylo otevřených více současně, některé ve framesetu a jiné bez něj. |
Plánař | Děkuji |
03.02.2023 12:47:19
ID: 3761.7
| Děkuji za příspěvky.
Požádal jsem AI o spolupráci.
Úžasná komunikace (nemyslím to ironicky).
Jen to řešení asi není ono nebo jsem ho nepochopil (zhruba toto):
@Command([IsDocumentBeingEdited];ID)="0" ....Rámec @Command([IsDocumentBeingEdited];ID)="1" ....Vlastní okno |
VZ | AI si asi vymýšlí neexistující příkazy |
03.02.2023 21:59:58
ID: 3761.8
| Nelze použít něco, co nějaký jazykový rádoby AI robot asi poskládá z dostupné obecné dokumentace jako příkazy, které v daném prostředí nikdy neexistovaly.
Je to možné detekovat tím způsobem přes JS. Ve formuláři najít událost onLoad, a v ní to přepnout v políčku "Run" z "Web" na "Client". Když se tam pak dá ten alert(window.top.frames.length);, tak by měl vyskočit při otevření dokumentu dialog, kde bude buď 0 anebo počet rámců. Pokud to jde takto zobrazit, tak by ten počet měl jít zapsat tím JS třeba i do nějaké proměnné v notes.ini přes setEnvironmenVar. Jakmile to bude zapsáno v notes.ini, tak už by se to mělo načíst přes funkci @Environment v tom původním tlačítku, a podle toho se v tom tlačítku rozhodnout. Ovšem je třeba dořešit, jak tu proměnnou pro @Environment nazvat. Kdyby bylo současně v LN klientovi otevřeno více takových dokumentů, tak by měl mít každý svou vlastní proměnnou. Tzn. dávat do názvu proměnné nějaký jednoznačný identifikátor. Možná tedy k názvu přidat @DocumentUniqueID , což by šlo snad zjistit i v JS přes getUniversalID(). A doufat, že nikdo neotevře stejný dokument v LN klientovi vícekrát současně, což jde třeba z pohledu přes klávesovou zkratku Ctrl+E.
Důležité bude také ty proměnné z notes.ini vyčistit, tzn. třeba před zavřením dokumentu v eventu QueryClose by to snad šlo zase použitím @Environment, pokud se to přepne z LotusScript na Formula. |
VZ | Ještě jedna možnost |
05.02.2023 08:30:34
ID: 3761.9
| Pokud to tlačítko má něco dělat jen u dokumentu, který je v režimu editace (@IsDocBeingEdited), možná by ten počet rámců z události onLoad šlo v JS uložit do nějakého pole v dokumentu. Podle toho pole by se pak rozhodl ten kód v tlačítku. Nemusel by se tedy používat notes.ini a řešit identifikátory. Také by to řešilo editaci nových dosud neuložených dokumentů, protože každý dokument by si nesl svou informaci o počtu rámců. |
Plánař | Poděkování |
22.02.2023 10:14:06
ID: 3761.10
| Dobrý den,
určitě zkusím, co mi radíte. Z nedostatku času jsem to zatím vyřešil pomocí vypočítávaných polí. Preview v jiném rámci to stíhá jinak, než dokument v samostatném okně.
Děkuji
|