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

#1 10. 6. 2014 09:19:19

csert
Člen
Registrace: 27. 2. 2014
Příspěvků: 28

Jak neukládat tlačítko v calcu

Hledám možnost jak zamezit uložení tlačítka ( ovládací prvky formuláře ) při uložení sešitu v calcu.
Jediná možnost ve vlastnostech tlačítka je tisknout/netisknout. Bohužel nic o ukládání.
Nemáte někdo radu?
dík

Offline

#2 10. 6. 2014 11:59:08

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

Re: Jak neukládat tlačítko v calcu

Já jsem Vám dokonce posílal makro, které tlačítko maže i s popisem. Když si najdete na Vašem předchozím příspěvku toto makro (které uvádím dále). Tak si to můžete odzkoušet.

sub uloz_do_zavreneho(ByVal adresa as string)
Dim arg(0) As New com.sun.star.beans.PropertyValue
arg(0).Name = "Hidden" ' otevřeme jako skrytý
arg(0).Value = True
cilovy_dok = stardesktop.loadComponentFromUrl(adresa,"_blank",0,arg())
list_cile = cilovy_dok.sheets(0)
RangeToClear = list_cile.getCellRangeByPosition(0,0,1023,1048575)
'RangeToClear.clearContents(23) 'Maže obsah sešitu - hodnoty, čísla a vzorce
'RangeToClear.clearContents(64) 'Maže styly
RangeToClear.clearContents(128)'Maže grafické objekty (tedy také tlačítko)
cilovy_dok.store()
cilovy_dok.close(True)
'msgbox "Nový sešit uložen jako prázdný",0,"NOVÝ DOKUMENT ULOŽEN"
end sub 

     Když si toto makro zabudujete do makra, které vytvořil rejze, tak Vám to smaže jen tlačítko. Stačí jen na správném místě napsat volání :
sub uloz_do_zavreneho(URL)
Pochopitelně soubor už musí být uložený a zavřený.

Editoval neutr (10. 6. 2014 12:00:28)


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

Offline

#3 11. 6. 2014 05:50:57

csert
Člen
Registrace: 27. 2. 2014
Příspěvků: 28

Re: Jak neukládat tlačítko v calcu

Děkuji za kód. Jenom nechápu jak pozná jaký dokument má otevřít? Kodu snad trochu rozumím, ale stejně  mě nechce " mazat"

Editoval csert (11. 6. 2014 06:25:05)

Offline

#4 11. 6. 2014 09:27:48

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

Re: Jak neukládat tlačítko v calcu

To je to přenášené "URL". URL je cesta, název i koncovka. Takže když ho zavoláte

sub uloz_do_zavreneho(URL)

On si to načte tak, že nesená URL = Adresa v deklaraci volaného makra (ByVal adresa as string).
Je to rotéž jako "1. makrem posílám 2. makru string" - "Makro 2 přijímá string". Je celkem jedno, že
makro 1 posílá string pod názvem URL a 2.makro ho čte jako adresa. Je to jako když němec posílá "kartofeln" slovákovi, který přijímá "zemiaky". Oba vědí co to je.
     Nevím co jste s tím makrem udělal, jestli jste mu dal správnou adresu. Makro je teď nastaveno jen na mazání pouze tlačítka. Jestli chcete mazat všechno, tak musíte umazat ty jednoduché uvozovky před kódem. Raději to posílám bez nich. Jednoduchá uvozovka - ' - je totéž co REM.

sub uloz_do_zavreneho(ByVal adresa as string)
Dim arg(0) As New com.sun.star.beans.PropertyValue
arg(0).Name = "Hidden" ' otevřeme jako skrytý
arg(0).Value = True
cilovy_dok = stardesktop.loadComponentFromUrl(adresa,"_blank",0,arg())
list_cile = cilovy_dok.sheets(0)
RangeToClear = list_cile.getCellRangeByPosition(0,0,1023,1048575)
RangeToClear.clearContents(23) 'Maže obsah sešitu - hodnoty, čísla a vzorce
RangeToClear.clearContents(64) 'Maže styly
RangeToClear.clearContents(128)'Maže grafické objekty (tedy také tlačítko)
cilovy_dok.store()
cilovy_dok.close(True)
msgbox "Nový sešit uložen jako prázdný",0,"NOVÝ DOKUMENT ULOŽEN"
end sub 

     Vím, že jsem slíbil rozšíření. Dělám na tom. Jenže nedávno jsem slíbil vnukovi, že až budou Cassanovské slavnosti, tak na ně půjdeme a bude u mne (3 dny). Já na to samozřejmě zapoměl, ale miláček ne :-)
     Dělám na tom od neděle a když jsem si přečetl, že "vyřešeno" - přestal jsem pospíchat začal to brousit. Nyní mi to chodí asi na 80%. To co používáte mám hotové už dávno. Hotové je také automatizované ukládání podle seznamu. - Vložíte seznam (jmen, nebo adres - kamkoliv), zvolíte vstupní buňky a můžete jít na pivo. Zvládne to i stovku tisíc úloh aniž byste na to musel sahat. Umí se to průběžně zálohovat (šablona) - výstupy jsou její kopie a ani je nevidíte. 1 uložení cca do sekundy. Nyní dělám dávkové spouštění maker. Postavíte svá makra nahráním (záznamníkem) (až 9 různých), a ta se provedou "bez Vás" pokud je zadáte. Takže každý výstup může mít něco jiného atd...
    Tohle dodělám, a pak ještě automatický iterátor (pro pokročilé), který se nastavuje podobně jako PLC (programovatelný automat - takový ty autonomní minipočítače). Tam už se dají nastavit i protokoly a ukládání jen na podmínku aj. Nakonec to musím zformovat na ".oxt". Tedy rozšíření které nainstalujete přes správce rozšíření a vše bude tam kde to má být. Šablona v šablonách, makra v "moje Standard", možnost posílat v každém výstupu předem určená makra - každý výstup může mít jiná. (automatické generování tlačítek je samozřejmost ap.).
    Největší pracnost je s manuály a instrukcemi. Ovšem jestli potřebujete honem něco dělat, tak Vám pošlu hned polotovar který umí jen "jednotlivě ukládat", nebo automatem "SEZNAM" - a ten ještě bez maker.

Editoval neutr (11. 6. 2014 09:35:47)


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

Offline

#5 11. 6. 2014 11:47:56

csert
Člen
Registrace: 27. 2. 2014
Příspěvků: 28

Re: Jak neukládat tlačítko v calcu

Jak můžu samostatně volat :  sub uloz_do_zavreneho(URL)
když: sub uloz_do_zavreneho(ByVal adresa as string) je už jednou voláno ? yikes((
Pane neutr už mě zase trápíte yikes(((.
cit.:
Stačí jen na správném místě napsat volání :
sub uloz_do_zavreneho(URL)

Offline

#6 11. 6. 2014 16:39:31

rejze
Člen
Registrace: 9. 1. 2013
Příspěvků: 51

Re: Jak neukládat tlačítko v calcu

To by melo zajistit (ByVal adresa as string) adresa je promenna obsahující adresu (cestu) kterou předáte při volání toho makra od "neutr". Pardon odpovídal jsem na neaktualizovanou stránku. Jinak na ukládání bez otevírání,se v nejbližší době vrhnu abych se ho naučil používat. To problikávání sešitů je protivný a pomalý. Jistě se p. "neutr" budu muset na pár věcí vyptat a nebo poprosit o kus kódu,který to používá k rozpitvání. To je obvykle nejlepší na pochopení.

Editoval rejze (11. 6. 2014 16:49:24)

Offline

#7 12. 6. 2014 09:25:57

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

Re: Jak neukládat tlačítko v calcu

Vydržte ještě - já momentálně nemohu používat svoje knihovny, kde mám vzorová a testovací makra. Musel jsem je dočasně odstranit, abych zabránil nechtěné duplicitě maker. Ta šablona co dělám potřebuje například testy jestli makro které volám existuje, nebo typicky vzor "uloz_do_skryteho" mám definovaný obecněji jako vzor s možnostmi a když ho zavolám tak dochází k zavolání toho nesprávného. Zase když bych je všechny přejmenoval, tak se v tom budu špatně orientovat ap.


      Včera jsem ještě před smazáním svých maker na chvíli koukal na kódy které uvádíte. Podle mne ani jeden z nich nemohl nikdy chodit správně. Je velká chyba v podmínce :
if
not .hasLocation) or .isReadOnly
then'
.storeAsURL(ConvertToURL(cesta), Array()) ' ulozit jako
else

Podívejte se v sešitě jak takový dotaz dopadne (i když je to jiné IF)
=IF(False or False;"ANO";"NE")
=IF(0 or 0;"ANO";"NE")
=IF(1 or 1;"ANO";"NE")
=IF(1 or 0;"ANO";"NE")
fungovalo by to pod jinými podmínkami
=TRUE()
=FALSE()
Správně se tam musí doplnit :
if
not .hasLocation)= FALSE or .isReadOnly =FALSE
then'
.storeAsURL(ConvertToURL(cesta), Array()) ' ulozit jako
else

      Ale ono je toho zřejmě víc. Pro CSERT-a : Mám dojem, že jste svou šablonu nespouštěl ze šablon. Když soubor ".ots" spouštíte z jiného, nežli z adresáře šablon, tak vám nemusí fungovat jako šablona. Když opravdu jako šablona funguje, tak otevírá jen například "Bez názvu (číslo)".
      Když se takto otevře, tak se kopie "Bez názvu X" chová naprosto jinak, nežli když se otevře šablona k editaci. Když budete šablonu otevírat z nabídky "Poslední soubory" - budete šablonu editovat. Když ji ale otevřete z adresáře (například ikona "otevřít"), nebo obecně otevřít složku,
tak se otevře jako Bez názvu(X).
      Je to logické až teprve když se podíváte do správce šablon. "SOUBOR" > "NOVÝ" > ŠABLONY. Dialog Vám nabídne možnost importovat, nebo pokud tam nějaké jsou tak také vybrat. Když kliknete na existující šablonu, dostanete několik možností : editovat, otevřít, nebo také NASTAVIT JAKO VÝCHOZÍ a další možnosti. Pak je teprve zřejmé, že se šablony dají otevírat dvěma způsoby. Když tedy otevřete šablonu k editaci, tak byste měl upravovat její obsah a vlastnosti. Pokud však ji chcete použít k vygenerování kopie (logicky nového sešitu - vždyť ho můžete nastavit jako výchozí a všechny Calcy budou kopií šablony), tak se otevře "Bez názvu X". A ten se chová maličko jinak nežli byste čekal.
       V každém případě když budete mít Vaši šablonu nastavenou jako výchozí (třeba jen na krátkou chvíli), tak místo zpětného volání stačí "otevřít nový" - třeba ikonou z calcu. Je to sice o 1 kliknutí více (uložit + nový sešit), ale o problematické makro méně.

       Když vystačíte jen s programovou nabídkou místo tlačítka, tak nemusíte ani nic mazat. prostě místo tlačítka dáte příkaz někam viditelně, nebo naopak skrytě do hlavní nabídky, ato nehovořím o tom, že makro můžete spouštět klávesovou zkratkou - žádný ovládací prvek nepotřebujete.


       Myslím si, že můžete na koncepci svého makra klidně zapomenout. Představte si maličkost :
1. Sešit ve kterém pracujete uložíte pod jiným jménem (ale jste v něm). Jak makro může zavolat otevření svého otevřeného sešitu? - Aby se mohl sám zavřít?
2. Když už něco otevře, myslíte že chod makra může do tohoto sešitu přehodit a sebe sama vypnout? jen pro představu jak asi chcete aby vypadala koncepce :
----------------------------------------------------------------------------
Zdrojové makro (knihovna Moje Standard)   
↓   
→ odbočka → Start Makro_1
    běh makra  (načíst nový název jako proměnnou Zdrojovému makru)
← návrat  ← End Makro_1
↓   
nějaký kód zdrojového makra   
↓   
→ odbočka → Start Makro_2
    běh makra  (uložit sešit XYZ pod novým názvem, uložit a zavřít)
← návrat  ← End Makro_2
↓   
nějaký kód zdrojového makra   
↓   
→ odbočka → Start Makro_1
    běh makra  (načíst nový název jako proměnnou Zdrojovému makru)
← návrat  ← End Makro_1
↓   
nějaký kód zdrojového makra (opakování)   
↓   
konec Zdrojové makro   
----------------------------------------------------------------------------
To je "snad" životachopná koncepce, ale asi ne moc podobná koncepcím uváděným výše. Nebylo by lepší jiné koncepčí řešení? Určitě je jich více možných, ale například :
----------------------------------------------
Start Zdrojové Makro (schematická verze)
běh makra  (uložit stávající název A2 – schematická verze)
běh makra  (uložit pod novým názvem A1 – schematická verze)
End zdrojové makro (schematická verze)

----------------------------------------------
pokračování v nezávislé práci

Start Zdrojové Makro (realistická verze)
běh makra (upravit soubor s původním názvem (A2) jako zavřený pod podmínkou ?File Exist?)
běh makra (uložit stávající názevA2 = A1)
běh makra (uložit pod novým názvem A1)
End zdrojové makro (realistická verze)

pokračování v nezávislé práci

----------------------------------------------------------------------------
      Vždyť když uložíte pod novým názvem, tak starý soubor (původní název) zůstává tam kde byl. Jde jen asi o to, aby se pod svým vlastním názvem uložil tak, aby měl vše až do okamžiku přejmenování. Jakmile ho přejmenujete, je hned bez dalšího "zavřený".
      Nově uložený seěit obsahuje vše, a může tedy obsahovat jak původná název, tak ten pod kterým je pojmenovaný. Na to ani hnedle makro není potřeba - jenom přehodit názvy - nový za starý, vygenerovat budoucí (nový), načít do paměti, otevřít dialog uložit jako: - Následně do kolonky název Ctrl+v a stisknou Enter. - Celkem tedy 3 úkony - zavolat makro, vložit název a Entrovat. To nahrajete záznamníkem a uložíte nejlépe do Moje makra Standard.


      Prostě je to tak, že rád pomůžu, ale zde mi to prostě připadá málo účelné. Zvládnete asi něco z oblasti programování, ale prakticky byste měl zjistit, že tudy vede křivolaká ulička a při tom existují cestičky mnohem efektivnějí a snadnější.
      Pracuji dost intenzivně na šabloně, která toto dělá maličko jinak, ale má mnohostranné užití. Až to budu mít hotové, vrátím se k opravě toho Vámi vybraného kódu.

Editoval neutr (12. 6. 2014 09:57:34)


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

Offline

#8 12. 6. 2014 11:36:11

csert
Člen
Registrace: 27. 2. 2014
Příspěvků: 28

Re: Jak neukládat tlačítko v calcu

pro "neutr"
Děkuji za rozbor používání šablon. Je to poučné.
Ale "moje" verze šablony, její otevírání ( jednoduše ze složky/otevři soubor ) editace a tlačítkem ulož jako soubor opravdu funguje. Přesně splňuje moje požadavky.Je to rychlé a uživatelsky přívětivé. Jediná vada na kráse je uložené nefunkční tlačítko. Pokud toto neodstraním budu muset napsat java utilitu na dávkovou konverzi do pdf a hidden tisk do acrobatu. Je to krok navíc, ale v dávce to půjde snadno. Teď pátrám, jestli by toto nešlo napsat makrem v calcu.

Offline

Zápatí