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

#1 18. 7. 2013 09:42:05

bullyk
Člen
Registrace: 18. 7. 2013
Příspěvků: 1

Problémy ovládacích tlačítek pro rychlé spouštění maker

zdravím přátelé,

nejprve objasním situaci, pak popíši problém. V mém souboru mám vícero záložek (sheetů), a mezi nima přepínám pomocí tlačítek (v nichž jsou nadefinovaná makra) umístěných v buňkách.

A nyní problémy -
1) Ne vždy se zadaří ukotvit toto tlačítko do patřičné buňky, i když je tlačítko menší než rozměry buňky. Někdy to zafunguje, ale někdy si calc tvrdošijně ukotví tlačítko k jiné buňce, nejčastěji k buňce nad tou správnou. Jak donutím officy, aby kotvily tlačítka správně? Zkoušel jsem hýbat s rozměry tlačítek, posouvat s nimi, ale zdá se, jakoby byla někde tajně nadefinovaná nějaká minimální vzdálenost či co. Nemáte s tím někdo zkušenosti?

2) když měním rozměry řádků v záložce, či přidávám/ odebírám řádek, nebo provádím filtraci obsahu tam a zpět, tak se běžně stává, že se deformují rozměry tlačítek a navíc se mění postupně i jejich poloha na záložce, bez ohledu na ukotvení k buňce. Nemáte nějakou radu, jak zabránit tomuto nežádoucímu efektu

Tyto problémy jsem pro svoji potřebu sice vyřešil předěláním všech tlačitek na běžně hyperlinkové odkazy, ale toto není globální řešení. Rád bych věděl, jak zacházet s tlačítky, aby vše fungovalo jak má.

Děkuji za odpovědi
Standa

Offline

#2 18. 7. 2013 14:05:34

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Problémy ovládacích tlačítek pro rychlé spouštění maker

Předělat tlačítka na hypertextové odkazy je správná cesta, ale při zadávání musíte zvolit místo "text", - "tlačítko". Tam je toto tlačítko vázáno na buňku a její rozměry. Ovšem zjistíte, že se chová prakticky stejně jako když ho zadáte z panelů ovládacích prvků. Exituje ještě jiný typ makrem generovaného tlačítka, a tohle tlačítko opravdu sedí jen a jen v té buňce, do které ho dáte.
- Tlačítko vložené jako "ovládací prvek" se dá UKOTVIT buď ke stránce. Když je to ukotveno ke stránce, tak to jsou absolutní souřadnice. Ovšem i zde dochází k určitým posunům. Těmto se bráníme tak, že spojíme více prvků dohromady, pak se navzájem neposouvají. Samozřejmá je volba zamknout umístění ap.



- To zmiňované generované tlačítko vypadá jako zápis takto:

=HYPERLINK("vnd.sun.star.script:Standard.Ram1.Barvy?language=Basic&location=document&address="&ADDRESS(1;9;4;1;thissheet);" BARVY ")&T(STYLE("button"))

při tom "RAM1" je knihovna kterou načítá a spouští. "Barvy" je nejprve název makra, a podruhé název tlačítka. Zápis toho "location - address: není pro funkci důležitý, ale pohrajte si s tím.
Posílám nahrávané makro, kterým se spouští proces vygenerování tlačítka. Takže by to mělo být dost zřejmé co to dělá:

sub ButtonBarvy
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "A3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "StringName"
args3(0).Value = "=HYPERLINK("+CHR$(34)+"vnd.sun.star.script:Standard.Ram1.Barvy?language=Basic&location=document&address="+CHR$(34)+"&ADDRESS(1;9;4;1;ThisSheet);"+CHR$(34)+" BARVY "+CHR$(34)+")&T(STYLE("+CHR$(34)+"button"+CHR$(34)+"))"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "A3:A4"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0, Array())
rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ToPoint"
args6(0).Value = "A3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())
rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "Color"
args9(0).Value = -1
dispatcher.executeDispatch(document, ".uno:Color", "", 0, args9())
rem ----------------------------------------------------------------------
dim args10(4) as new com.sun.star.beans.PropertyValue
args10(0).Name = "BackgroundPattern.Transparent"
args10(0).Value = false
args10(1).Name = "BackgroundPattern.BackColor"
args10(1).Value = 15132415
args10(2).Name = "BackgroundPattern.URL"
args10(2).Value = ""
args10(3).Name = "BackgroundPattern.Filtername"
args10(3).Value = ""
args10(4).Name = "BackgroundPattern.Position"
args10(4).Value = com.sun.star.style.GraphicLocation.NONE
dispatcher.executeDispatch(document, ".uno:BackgroundPattern", "", 0, args10())
rem ----------------------------------------------------------------------
end sub

    Jde o to, že funkční tlačítko můžete za určitých předpokladů jen kopírovat. Já ale generji asi 15 různých tlačítek, takže vlastní generování dělám zase makrem (dialog - vybrat) a vygenerovat včatně pozice, kde stojí kurzor. To je samozřejmě trochu složitější, ale měl by jste na to přijít sám, pokud máte trošku zájem.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí