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

#1 10. 2. 2017 09:36:00

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

Univerzální použití makra v různých formulářích - VYŘEŠENÝ

Mám soubor Base, který obsahuje několik formulářů. V jednom z formulářů používám makro na otevření odkazu, který je uložen v tabulce databáze.


Sub PathRun
  dim oForm1, oForm2 as object
  dim sPathRun as string
  oForm1=ThisComponent.Drawpage.Forms.getByName("FiltrForm")
  oForm2=oForm1.getByName("SubForm")
  sPathRun=oForm2.getByName("Path").text 'Načte hodnotu odkazu z pole databáze'
  oForm2.getByName("Button_odkaz").targeturl = sPathRun 'uloží tuto hodnotu do tlačítka - odkaz pro otevření URL'
End Sub


Odkaz potom otevírám klepnutím na tlačítko pomocí akce Open dokument/web page


Nyní bych toto (podobné) makro chtěl použít v dalších asi 5 různých formulářích. Funkce bude stejná, ale prvky na ostatních formulářích se jmenují pokaždé jinak (jedná se o jména "FiltrForm", "SubForm", "Path", "Button_odkaz"). Přejmenovávat jednotlivé formuláře a prvky se mi nechce - má to vazbu i na jiná makra a celé by se mi to rozházelo a sesypalo. Existuje nějaké jiná možnost, jak výše uvedené makro udělat univerzální, nebo musím napsat pět identických maker, které se budou lišit jenom jmény odkazovaných prvků?

Editoval hdplot (13. 2. 2017 08:47:44)

Offline

#2 10. 2. 2017 11:44:36

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

Re: Univerzální použití makra v různých formulářích - VYŘEŠENÝ

Je možné například místo tlačítka dát prvek seznam (roletku) a spouštět kliknutím na položku. Může to být i celé rozbalené bez posuvníků.


Jinou možností je spustit nejdříve dotaz - vytvořit do Popup výběr, nebo vytvořit specializovaný form kde se nabídnou jednotlivá tlačítka. Možností je mnoho počínaje zaškrtávacími tlačítky ....

Také je možná jednoduchá iterace pomocí MsgBoxu. To by bylo celkem nejsnadnější úpravou. Napište co by se Vám líbilo. Ono jde o to jestli to bude obsluhovat ještě někdo další - pak by to mělo být sofistikovanější třeba tím formem, ale formů máte asi plno a je to nejpracnější postup.


PS : - Možná jste měl na mysli jednoduchost úpravy makra - dopíše se jenom cyklus s adresami které je nutno nějak určit - vybrat - píšete 5 jiných - já tipnu + 10 řádků k tomu stávajícímu makru. Výběr se dosadí jako proměnná do volacích sekvencí.

Editoval neutr (10. 2. 2017 11:50:10)


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É

Online

#3 10. 2. 2017 12:09:57

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

Re: Univerzální použití makra v různých formulářích - VYŘEŠENÝ

No jde o to, že formů je několik a zobrazují různá data z různých tabulek. Jednou se tedy jedná např. Form A který kouká do tabulky A (výkresy) a zobrazuje odkaz na soubor výkresu. Podruhé se jedná o Form B, který kouká do tabulky B (účetnictví) a zobrazuje odkaz na soubor faktury. Potřetí pak třeba o Form C, který kouká do tabulky C (zákazníci) a zobrazuje odkaz na web zákazníka. Podle výběru konkrétního řádku z tabulky v daném konkrétním formu se mi nabídne konkrétní výkres (nebo faktura atd.) k otevření. Tento odkaz zpracuje makro a tlačítkem se odkaz otevře. Ale form pro výkresy kromě odkazu zobrazuje i jiné údaje vztahující se k výkresu. Totéž form pro zákazníky a podobně. Nelze je tedy nijak slučovat do jednoho formu.


Tedy z pohledu spouštěných odkazů se jedná o zcela nezávislé tabulky i formuláře. Jde jen o to, že PRINCIP SPOUŠTĚNÍ odkazu je vždy stejný - tedy použité makro je prakticky stejné, jenom názvy prvků formuláře se mění, protože se jedná o různé nezávislé formuláře. Na každém z formů je vždy jen ten jeden typ odkazu a jenom to jedno tlačítko, které to otevírá. Jestli jsem tedy dobře pochopil vaši odpověď, tak by to tak nešlo, protože v rozbalovacím menu nelze nabízet jednou výkres a jednou fakturu - jedná se o dvě rozdílné věci a dva rozdílné formuláře.


ANO - to P.S. by asi bylo řešení. Mít na každém formuláři nějaký rozlišovač, o jaký form se jedná (třeba skrytý Label). Ten načíst a pak v makru podle tohoto přiřadit správné jména prvků, které by byly v makru připravené jako konstanty

Editoval hdplot (10. 2. 2017 12:20:33)

Offline

#4 10. 2. 2017 12:59:52

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

Re: Univerzální použití makra v různých formulářích - VYŘEŠENÝ

To jsme si zase celkem neporozuměli. Myslel jsem nový form - třeba jen s pěti tlačítky který není navázaný na databázi - ale tlačítka z něj ano. Takže po výběru se deaktivuje a spustí vybraný form.


Podobně přidané zaškrtávátka, nebo roletky na každém formu. Na formu "A" může být "přejít" - volba na B,C,D,E. - u formu "B" bude možnost jen A,C,D,E.... Aktivací se zavře stávající a otevře vybraný.

U toho iterování jsem myslel cca tohle :

Sub PathRun
Dim iVar as integer
Dim sVar1, sVar2, sVar3 as string
For i = 1 To 5
Select Case i
Case 1
iVar = MsgBox("Pokud chcete plán A stiskněte ANO",4,"Výběr A")
IF iVar = 6 Then
sVar1 = "FiltrForm"
sVar2 = "SubForm"
sVar3 = "Path"
GoTo Endes2
Else
GoTo Endes
End If
Case 2
iVar = MsgBox("Pokud chcete plán B stiskněte ANO",4,"Výběr B")
IF iVar = 6 Then
sVar1 = "FiltrForm2"
sVar2 = "SubForm2"
sVar3 = "Path2"
GoTo Endes2
Else
GoTo Endes
End If
Case 3
iVar = MsgBox("Pokud chcete plán C stiskněte ANO",4,"Výběr C")
IF iVar = 6 Then
sVar1 = "FiltrForm3"
sVar2 = "SubForm3"
sVar3 = "Path3"
GoTo Endes2
Else
GoTo Endes
End If
Case 4
' Podobně
Case 5
'podobně
End Select
Endes:
Next i
Endes2:
  dim oForm1, oForm2 as object
  dim sPathRun as string
  oForm1=ThisComponent.Drawpage.Forms.getByName(sVar1)
  oForm2=oForm1.getByName(sVar2)
  sPathRun=oForm2.getByName(sVar3).text 'Načte hodnotu odkazu z pole databáze'
  oForm2.getByName("Button_odkaz").targeturl = sPathRun 'uloží tuto hodnotu do tlačítka - odkaz pro otevření URL'
End Sub

     Píšu to z hlavy tak to otestujte - možná to vyhodí nějakou chybu. Ale měl byste vidět ten postup nabídek. Dá se to ještě vylepšit ale tohle je základ. Když si s tím neporadíte napište proměnné pro Select_Case

Editoval neutr (10. 2. 2017 13:05:29)


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É

Online

#5 13. 2. 2017 08:54:50

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

Re: Univerzální použití makra v různých formulářích - VYŘEŠENÝ

Ano - toto je v zásadě to, co jsem chtěl. Jenom jsem vyhodil tem MsgBox a rozhodování ponechávám na makru podle jiné podmínky. Díky za radu

Offline

Zápatí