Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 8. 11. 2019 08:01:56

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 115

Programové ovládání prvku formuláře - VYŘEŠENO

Mám databázový rozmulář s makry. Na formuláři je tlačítko a makrem ovládám text zobrazený na tlačítku. Příkaz vypadá takto:


ThisComponent.Drawpage.Forms.getByName("Form1").Button1.Label = "ABCD"


a způsobí, že příslušnému tlačítku "Button1" na formuláři "Form1" se změní zobrazený text na ABCD. Vše funguje jak má. Pokud ale chci stejným postupem změnit nějakou jinou vlastnost (např. šířku tlačítka) a napíšu obdobný příkaz:


ThisComponent.Drawpage.Forms.getByName("Form1").Button1.Width = 5


dostanu chybovou hlašku:


BASIC runtime error.
Property or method not found:Width


Ukázku s chybou Width jsem zvolil záměrně, protože Label i Width se vyskytují v editačním formuláři prvku a předpokládal jsem, že tak, jak jsou označené, tak se také interně volají (Label ano, Width bohužel ne). Ve skutečnosti ale nechci měnit ani Label, ani Width, ale barvu tlačítka, která je v editačním formuláři označená jako Background color, Zde jsem zkoušel .....("Form1").Button1.bgcolor.... a jiné podobné varianty, ale vše neúspěšně.


Možnosti jsou dvě: Buďto lze programově měnit pouze některé vlastnosti prvků formuláře (a s tím nic nenadělám), nebo je chyba v zápisu a klíčové slovo Width neexistuje (obdobně bgcolor atd) ale správně tam patří nějaké jiné klíčové slovo. ??? jaké ???


Kde lze seznam těchto příkazů najít ?
Díky za radu

Editoval hdplot (8. 11. 2019 13:48:12)

Offline

#2 8. 11. 2019 10:20:20

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 368

Re: Programové ovládání prvku formuláře - VYŘEŠENO

Doplňek Xray. https://berma.pagesperso-orange.fr/index2.html stáhněte třeba verzi 6.0, je to dokument ODT který má na 5. stránce tlačítko Install jež vám to nainstaluje.

Pak stačí v Basicu v Katalogu objektů (kdyžtak Zobrazit/Katalog objektů) rozkliknout knihovnu XRayTool aby se načetla do paměti a do vašeho kódu do místa kde chcete zobrazit vlastnosti proměnné napsat
xray promenna.


Ve vašem případě by to tedy bylo
xray ThisComponent.Drawpage.Forms.getByName("Form1").Button1

Offline

#3 8. 11. 2019 13:49:10

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 115

Re: Programové ovládání prvku formuláře - VYŘEŠENO

Nainstalováno, zprovozněno, funguje.


Díky

Offline

#4 8. 11. 2019 15:46:25

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 368

Re: Programové ovládání prvku formuláře - VYŘEŠENO

Ještě jsem si vzpomněl na to, že základní výpis vlastností se vlastně dá udělat přes msgbox a .dbg_properties pro vlastnosti; nebo .dbg_methods pro metody; či .dbg_interfaces pro rozhraní. Mělo by tedy fungovat i

msgbox ThisComponent.Drawpage.Forms.getByName("Form1").Button1.dbg_properties

případně

o=ThisComponent.Drawpage.Forms.getByName("Form1").Button1
msgbox o.dbg_properties

Ale s XRayem se ten základní výpis nedá srovnat :-).

Offline

Zápatí