Dne 4.2.2011 10:12, Zbyněk Burget napsal(a):
Jj, to je už skoro úplně to, co jsem hledal. Experimentoval jsem s kde
čím, ale funkci RefreshFormControl jsem neobjevil. Existuje někde
rozumný popis toho UNO nebo API nebo jak to správně nazvat? Neskutečně
v tom bloudím. Kdysi, za dob accessu jsem byl schopný napsat ve VBA
skoro cokoli. Popis API byl přímo v accessu, při psaní se metody a
propertiies nabízely samy. V OOo je to alespoň pro mne absolutní chaos.
Na něco se dá odkazovat přímo např. přes
ThisComponent.CurrentController.XXX.YYY.ZZZ na něco přes
"DispatchHelper"... Nečekám, že bude dokumentace v češtině, ale já ji
nenašel ani v angličtině. Google mi najde vždycky akorát nějaké
diskuze na fórech, kde se řeší nějaký konkrétní problém. Neznám
strukturu objektů a tak mi možná i celá logika programového přístupu k
API připadá chaotická.
To makro jsem si nechal nahrát tím kouzelným tlačítkem... ;)
Jinak funkce volané přes DispatchHelper slouží právě pro nahraná makra a
většina se jich dá volat elegantněji i bez něj. K celému API existuje
automaticky generovaná dokumentace (aktuální verze je vždy na webu,
verze k určité verzi OOo je v příslušném SDK). Je sice kompletní, ale
člověk se z ní nedozví, k čemu dané funkce či objekty slouží.
Nejvíce použitelné dokumentace jsem našel na stránkách StarOffice
(včetně vysvětlení logiky celého API). Dále vřele doporučuji
"http://www.pitonyak.org/". Najdete tam obsáhlý dokument se sbírkou
všemožných maker, z nichž se dá ledacos vyspekulovat.
V návrhovém režimu formuláře vyberte sloupec, pro kterého se obnovení
seznamu týká a v seznamu událostí navažte toto makro na událost "Při
zaměření".
tady jsem to udělal trošičku jinam - navázal jsem na událost formuláře
"Po změně záznamu" - netrpí to tak problémem s uložením záznamu. Tady
už bych k tomu měl jen vyloženě kosmetické připomínky. Položky v
seznam ovládacího prvku přepočítají. To funguje bezvadně při přidávání
nového záznamu - okamžitě se v seznamu objeví a můžu jej použít. Pokud
záznam nepřidávám, ale měním, položky v seznamu se sice přepočítají,
ale v řádích, kde už byly použité se nezmění. Musím na seznam kliknout
a hodnota se okamžitě změní na novou. Tohle bych ale možná už
považoval za chybu Base. Zabere ruční refresh formuláře, nicméně -
tohle nepotřebuju řešit - je to kosmetická chyba a při reálné práci se
na ni snad ani nenarazí. Možná by se to ale mohlo někam nahlásit, aby
se na to někdo z programátorů kouknul, pokud bude mít náladu.
Tak tohle jsem zkoušel a rozhodně mi to nefungovalo. Funkce
RefreshFormControl pracuje, jedině pokud je dané pole aktivní. Pokusy s
navázáním makra na uložení řádku nebo na přechod na jiný řádek mi
nefungovaly. Ale zkoušel jsem to na vestavěné databázi, ne na
PostgreSQL. Určitě existuje možnost obnovení zdroje konkrétního seznamu
přímým voláním, ale také to v tom API neumím najít :-( .
Díky za všechny přínosné rady. Base má sice ještě hodně nedostatků
(občas záhadně padá), ale řekl bych, že začíná být reálně použitelný.
Teď jsem po něm chtěl i celkem nestandardní věci a zvládl to.
Brousím okolo Base od okamžiku, co se v OOo objevila, a ze začátku to
bylo spíše pro dobrodruhy. Její současný stav hodnotím, že se dostala na
solidní beta verzi. Teď už začínám věřit, že časem dospěje na úroveň
ostatních částí balíku.
J. S.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]