Dijalog
|
|
|||
Poštovanje,
Pravi jedan dijalog i želim da, kada je diajlog (prozor) otvoren, da mogu i da radim na listu (Calc). Trenutno mogu samo da radim sa dijalogom, a ne paralelno sa listom, kada je dijalog otvoren. Sada ga otvaram sa sledećim kodom: Dim Dlg As Object DialogLibraries.LoadLibrary("MAKROI") Dlg = CreateUnoDialog(DialogLibraries.MAKROI.Dialog1) Dlg.Execute() Na jednom sajtu mi je sugerisano da umesto Dlg.Execute pokušavm sa *Dlg.setVisible(True) * međutim, tada se dijalog samo na milisekund otvori i odamh zatvori. Da li zna neko rešenje za ovo? -- Srdačan pozdrav, Stevanović Vladislav |
|||
|
|||
Ovo naprimer:
Global g_Dlg, g_Stop as Boolean Sub Main ... REM test status every second: do until gStop wait 1000 loop g_Dlg.setVisible(False) ... Sub someEvent() g_Stop = True End Sub Ljubomir Vladislav Stevanovic wrote: > Poštovanje, > Pravi jedan dijalog i želim da, kada je diajlog (prozor) otvoren, > da mogu i da radim na listu (Calc). Trenutno mogu samo da radim > sa dijalogom, a ne paralelno sa listom, kada je dijalog otvoren. > > Sada ga otvaram sa sledećim kodom: > Dim Dlg As Object > DialogLibraries.LoadLibrary("MAKROI") > Dlg = CreateUnoDialog(DialogLibraries.MAKROI.Dialog1) > Dlg.Execute() > > Na jednom sajtu mi je sugerisano da umesto Dlg.Execute > pokušavm sa *Dlg.setVisible(True) * > međutim, tada se dijalog samo na milisekund otvori i > odamh zatvori. Da li zna neko rešenje za ovo? > |
|||
|
|||
Primenio sam taj kod i radio je lepo prvi put. Sledeći put kad sam hteo da
otvorim dijalog otvorio se samo za časak. Možda treba da se drugačije formuliše akcija za isključivanje dijaloga. Možda sa if petljom? 2010/9/30 Ljubomir Ljubojevic <office@plcomputers.net> > Ovo naprimer: > > > Global g_Dlg, g_Stop as Boolean > Sub Main > ... > REM test status every second: > do until gStop > wait 1000 > loop > g_Dlg.setVisible(False) > ... > > Sub someEvent() > g_Stop = True > End Sub > > > Ljubomir > > > Vladislav Stevanovic wrote: > >> Poštovanje, >> Pravi jedan dijalog i želim da, kada je diajlog (prozor) otvoren, >> da mogu i da radim na listu (Calc). Trenutno mogu samo da radim >> sa dijalogom, a ne paralelno sa listom, kada je dijalog otvoren. >> >> Sada ga otvaram sa sledećim kodom: >> Dim Dlg As Object >> DialogLibraries.LoadLibrary("MAKROI") >> Dlg = CreateUnoDialog(DialogLibraries.MAKROI.Dialog1) >> Dlg.Execute() >> >> Na jednom sajtu mi je sugerisano da umesto Dlg.Execute >> pokušavm sa *Dlg.setVisible(True) * >> međutim, tada se dijalog samo na milisekund otvori i >> odamh zatvori. Da li zna neko rešenje za ovo? >> >> > -- Srdačan pozdrav, Stevanović Vladislav |
|||
|
|||
Ne, nema to veze. Verovatno je potrebno vratiti g_Dlg na ono sto je bilo
na pocetku. Posto ne programiram macro-e u OOo, ne znam gde sta tacno treba, ali je programerska praksa da se sve varijable na pocetku inicijalizuju sa pocetnom vrednoscu. Naprimer: funkcija pocetak prikazi=1 if i=1 then .. .... prikazi= 0 ... ... kraj funkcije e sada, ako se ponovo pokrene funkcija, varijabla "prikazi" ce na pocetku UVEK biti = 1. Ako se to ne uradi, inicijalizacija, varijabla "prikazi" moze da bude i 1 i 0 i da se dobiju nepredvideni rezultati. znaci pre pokretanja dijaloga, obavezno postaviti setVisible na zeljenu vrednost, da li na pocetku funkcije ili neposredno pre pozivanja funkcije. Vladislav Stevanovic wrote: > Primenio sam taj kod i radio je lepo prvi put. Sledeći put kad sam hteo da > otvorim dijalog otvorio se samo za časak. Možda treba da se drugačije > formuliše akcija za isključivanje dijaloga. Možda sa if petljom? > > 2010/9/30 Ljubomir Ljubojevic <office@plcomputers.net> > >> Ovo naprimer: >> >> >> Global g_Dlg, g_Stop as Boolean >> Sub Main >> ... >> REM test status every second: >> do until gStop >> wait 1000 >> loop >> g_Dlg.setVisible(False) >> ... >> >> Sub someEvent() >> g_Stop = True >> End Sub >> >> >> Ljubomir >> >> >> Vladislav Stevanovic wrote: >> >>> Poštovanje, >>> Pravi jedan dijalog i želim da, kada je diajlog (prozor) otvoren, >>> da mogu i da radim na listu (Calc). Trenutno mogu samo da radim >>> sa dijalogom, a ne paralelno sa listom, kada je dijalog otvoren. >>> >>> Sada ga otvaram sa sledećim kodom: >>> Dim Dlg As Object >>> DialogLibraries.LoadLibrary("MAKROI") >>> Dlg = CreateUnoDialog(DialogLibraries.MAKROI.Dialog1) >>> Dlg.Execute() >>> >>> Na jednom sajtu mi je sugerisano da umesto Dlg.Execute >>> pokušavm sa *Dlg.setVisible(True) * >>> međutim, tada se dijalog samo na milisekund otvori i >>> odamh zatvori. Da li zna neko rešenje za ovo? >>> >>> > > |
|||
|
|||
Našao sam na nekom forumu da se isključivanje dijaloga mora obaviti preko
toggle button-a. Samo da mi neko pojasni kakvo je to dugme. |
|||
|
|||
Malo sam ispitivao kako radi dijalog u ne-modalnom stanju
kada se izvršavaju neki makroa aktivirani u listu. Makro koji sam aktivirao sa lista (za to vreme je uključen dijalog u ne-modalnom stanju) radi tako da se poništava čekanje (wait) ukoliko postoji u kodu makroa sa lista. Hteo sam da proverim da li će prestati da se izvršava i makro sa lista ako za to vreme želim da isključim dijalog, jer sam u muci oko isključivanja dijaloga to rešio sa Sub stopMacro Stop End sub Stavio sam wait 5000 u makro sa lista, da bih imao vremena da kad pokrenem makro sa lista da kurzorom aktiviram isključivanje dijaloga. Međutim, makro sa lista je odradio kao lud (čak mi se čini da je radio brže nego obično!). Kada sam ugasio dijalog, pustio sam u rad isti makro sa lista i onda je opcija wait funkcionisala. E sad da li ovo treba prijavljivati kao problem... 2010/10/1 Vladislav Stevanovic <stevanovicvladislav@gmail.com> > Našao sam na nekom forumu da se isključivanje dijaloga mora obaviti preko > toggle button-a. Samo da mi neko pojasni kakvo je to dugme. > -- Srdačan pozdrav, Stevanović Vladislav |
|||
|
|||
2010/9/30 Vladislav Stevanovic <stevanovicvladislav@gmail.com>
> Poštovanje, > Pravi jedan dijalog i želim da, kada je diajlog (prozor) otvoren, > da mogu i da radim na listu (Calc). Trenutno mogu samo da radim > sa dijalogom, a ne paralelno sa listom, kada je dijalog otvoren. > ... Poštovani, Dugo nisam zavirio u OOoBasic ali možete pogledati kako je ovo rešeno u OOoTranslit-u kako za Pisac, tako i za Račun → http://oootranslit.info/ Pozdrav, Aleksandar Urošević http://urosevic.net Vežbanka za školarce :: http://www.vezbanka.com |
|||
|
|||
Hvala Aleksandre, konačno rešeno, zahvaljujući vama.
Za one koji bi hteli recept, on glasi: Sub OpenDialog lFinished = False version = " 0.1" DialogLibraries.LoadLibrary("Standard") oDlg = createUnoDialog(DialogLibraries.Standard.Dialog1) oDlg.Title = "OVO BRE RADI" & version oDlg.setVisible( True ) oListener = CreateUnoListener("oDlg_", "com.sun.star.awt.XTopWindowListener") oDlg.addTopWindowListener(oListener) While Not lFinished Wait 100 Wend oDlg.setVisible( False ) End Sub Srdačan pozdrav, Stevanović Vladislav |
|||
|
|||
Mislim da sam poranio sa veseljem. KAda sam ponovo
uključio komp i pokušao da pokrenem dijalog pojavio mi se prozor koji me obaveštava da argument nije nađen &(ARG1) Kada sam hteo da odem na ooTranslit da vidim kod, onda je i makro proradio u vezi mog dijaloga! Dakle, nešto nedostaje u kod za otvaranje i zatvaranje mog dijaloga što se pojavi kada uđem u kod ooTranslite. Čupavo... 2010/10/2 Vladislav Stevanovic <stevanovicvladislav@gmail.com> > Hvala Aleksandre, konačno rešeno, zahvaljujući vama. > Za one koji bi hteli recept, on glasi: > > Sub OpenDialog > lFinished = False > version = " 0.1" > DialogLibraries.LoadLibrary("Standard") > oDlg = createUnoDialog(DialogLibraries.Standard.Dialog1) > oDlg.Title = "OVO BRE RADI" & version > oDlg.setVisible( True ) > oListener = CreateUnoListener("oDlg_", > "com.sun.star.awt.XTopWindowListener") > oDlg.addTopWindowListener(oListener) > > While Not lFinished > Wait 100 > Wend > oDlg.setVisible( False ) > End Sub > > Srdačan pozdrav, > Stevanović Vladislav > -- Srdačan pozdrav, Stevanović Vladislav |
|||
|
|||
ok , pronašao sam.
treba u kod ubaciti: Sub oDlg_windowActivated(oEv) End Sub Sub oDlg_windowDeactivated(oEv) End Sub Sub oDlg_windowOpened(oEv) End Sub Sub oDlg_windowClosing(oEv) CloseDialog() End Sub Sub oDlg_windowClosed(oEv) End Sub Sub oDlg_windowMinimized(oEv) End Sub Sub oDlg_windowNormalized(oEv) End Sub Sub oDlg_disposing(oEv) End Sub 2010/10/3 Vladislav Stevanovic <stevanovicvladislav@gmail.com> > Mislim da sam poranio sa veseljem. KAda sam ponovo > uključio komp i pokušao da pokrenem dijalog pojavio mi > se prozor koji me obaveštava da argument nije nađen &(ARG1) > Kada sam hteo da odem na ooTranslit da vidim kod, onda je > i makro proradio u vezi mog dijaloga! > Dakle, nešto nedostaje u kod za otvaranje i zatvaranje mog > dijaloga što se pojavi kada uđem u kod ooTranslite. Čupavo... > > 2010/10/2 Vladislav Stevanovic <stevanovicvladislav@gmail.com> > > Hvala Aleksandre, konačno rešeno, zahvaljujući vama. >> Za one koji bi hteli recept, on glasi: >> >> Sub OpenDialog >> lFinished = False >> version = " 0.1" >> DialogLibraries.LoadLibrary("Standard") >> oDlg = createUnoDialog(DialogLibraries.Standard.Dialog1) >> oDlg.Title = "OVO BRE RADI" & version >> oDlg.setVisible( True ) >> oListener = CreateUnoListener("oDlg_", >> "com.sun.star.awt.XTopWindowListener") >> oDlg.addTopWindowListener(oListener) >> >> While Not lFinished >> Wait 100 >> Wend >> oDlg.setVisible( False ) >> End Sub >> >> Srdačan pozdrav, >> Stevanović Vladislav >> > > > > -- > Srdačan pozdrav, > Stevanović Vladislav > -- Srdačan pozdrav, Stevanović Vladislav |
|||