Makro-ban billentyűzet kezelés

Táblázatkezelő

Makro-ban billentyűzet kezelés

HozzászólásSzerző: Kriszi » 2020. március 7., szombat 0:46

Üdvözletem Minden Fórumozónak.

1. A ciklikus makró futását tetszőleges billentyűzet megnyomásával szeretném léptetni {lassítás}.
A leírásokban bemutatott billentyűztet kezelő modult {awt.key} a LO-4 nem találja:
A " Variable=CreateUnoServices("com.sun.star.awt.Key")-re " adott válasz:
Hiba történt a BASIC-program futtatása közben.
Aleljárás vagy függvényeljárás nincsen definiálva.

- Hol találhatók ezek a modulok a sajátgépen?
- Lehet-e a hiányzókat Net-ről beépíteni / telepíteni?

2. Az alábbi subrutin 3. sorát sem értem.
A KeyPressed ugyan definiálja az Event változót, de mi a garancia arra, hogy a 3. sor szerint KeyCode tartalma/része is lesz,
ami utána pl a RETURN kódja, hogy teljesüljön a 4.sor?

Sub KeyPressed(Event As Object)
Dim Msg As String
Select Case Event.KeyCode
Case com.sun.star.awt.Key.RETURN
Msg = "Return pressed"
Case com.sun.star.awt.Key.TAB
Msg = "Tab pressed"
...
End Select
End Sub

A segítséget köszönettel: Krisztián
Libre Office 4 Win 7
Kriszi
 
Hozzászólások: 7
Csatlakozott: 2020. február 11., kedd 22:19

Re: Makro-ban billentyűzet kezelés

HozzászólásSzerző: Zizi64 » 2020. március 7., szombat 10:06

Milyen ciklikus makrófutást akarsz lassítani? Iterálni kell valami számítást, és látni akarod, hogy hol tart?

A beépített StarBasic nem igazán arra való, hogy "folyamatosan" az működjön/"uralkodjon" a program saját ciklusai "fölött". A StarBasic+API makró kiszámol/végrehajt valamit, aztán csöndben csücsül a következő szólításáig (eseményig), ami lehet - cellafüggvény esetében - a bemenő paraméter megváltozása (ekkor a Calc újra meghívja a te függvényedet); vagy egyéb makró rutin esetében más változás által kiváltott esemény.

Ha iterálni kell, akkor arra képes maga a Calc is. Be kell kapcsolni hozzá a körkörös iteratív hivatkozások opciót, és beállítani a maximális ciklusszámot, és/vagy az elérendő eltérés értékét.

Kellene példafájl, és a makrókód, hogy legalább a dolog lényegét ki tudjuk bogozni...
Sok sikert!
Kovács Tibor (Win10x64Prof/W7x64P: LO6.1.6-6.2.8;
winPenPack/PortableApps: LO3.3.1-6.4.0, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3565
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Makro-ban billentyűzet kezelés

HozzászólásSzerző: Zizi64 » 2020. március 7., szombat 11:13

2. Az alábbi subrutin 3. sorát sem értem.
A KeyPressed ugyan definiálja az Event változót, de mi a garancia arra, hogy a 3. sor szerint KeyCode tartalma/része is lesz,
ami utána pl a RETURN kódja, hogy teljesüljön a 4.sor?

Kód: Egész kijelölése   KinyitásÖsszecsukás
Sub KeyPressed(Event As Object)
Dim Msg As String
Select Case Event.KeyCode
Case com.sun.star.awt.Key.RETURN
Msg = "Return pressed"
Case com.sun.star.awt.Key.TAB
Msg = "Tab pressed"
...
End Select
End Sub


(Használd te is a Code TAG-et a programrészletek megjelenítésére itt a fórumban.)

A paraméterként átadott Event objektum azt jelenti, hogy az ESEMÉNY indította el magát a KeyPressed rutint, és a rutinon belül az esemény által átadott paraméterként rendelkezésedre áll maga az esemény-objektum, amit aztán az elágazásokhoz fel tudsz használni. A paraméterként átadott esemény objektumnak rengeteg tulajdonsága lehet. Ezek közül csak egy a ".KeyCode". Annak az értéke szerint ágazik el a rutinod "com.sun.star.awt.Key.RETURN" irányba, vagy "Case com.sun.star.awt.Key.TAB" irányba.
Nyilván ahhoz, hogy a paraméterként átadott ESEMÉNY biztosan egy "keypressed" esemény legyen, ahhoz az kell, hogy AHHOZ rendeld hozzá a makródat, és ne más eseményhez.

Használsz objektum vizsgálót (XrayTool-t, vagy MRI-t)? Elengedhetetlen, ha sokféle objektummal dolgozol. Egy élet kevés arra, hogy a LibreOffice összes objektumának az összes tulajdonságát és metódusát megismerd. Ezek a kis eszközök kilistázzák neked az adott objektum összes tulajdonságát, metódusát, interfészét, stb. Így legalább azt megtudod, hogy mije van és mije nincs...
Sok sikert!
Kovács Tibor (Win10x64Prof/W7x64P: LO6.1.6-6.2.8;
winPenPack/PortableApps: LO3.3.1-6.4.0, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3565
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Makro-ban billentyűzet kezelés

HozzászólásSzerző: Zizi64 » 2020. március 7., szombat 14:56

- Lehet-e a hiányzókat Net-ről beépíteni / telepíteni?


A LibreOffice telepítőfájlok (beleértve az aktuális verzió SDK-ját is) MINDENT tartalmaznak, amit a programozáshoz felhasználhatsz.
Nem tudok további (hivatalos) kiegészítőkről.
Esetleg a beállítások közt a "kísérleti funkciók engedélyezése" opciót bekapcsolhatod - ha nincs bekapcsolva- de nem gondolom, hogy a te problémád azzal összefügg.
Sok sikert!
Kovács Tibor (Win10x64Prof/W7x64P: LO6.1.6-6.2.8;
winPenPack/PortableApps: LO3.3.1-6.4.0, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3565
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Makro-ban billentyűzet kezelés

HozzászólásSzerző: Zizi64 » 2020. március 7., szombat 19:42

Andrew Pitonyak ingyenes makró-könyveiben rengeteg hasznos példát találsz:

http://www.pitonyak.org/oo.php
Sok sikert!
Kovács Tibor (Win10x64Prof/W7x64P: LO6.1.6-6.2.8;
winPenPack/PortableApps: LO3.3.1-6.4.0, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3565
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Makro-ban billentyűzet kezelés

HozzászólásSzerző: Kriszi » 2020. március 8., vasárnap 2:29

Andrew Pitonyak könyvei megvannak, abból szereztem eddigi ismereteim.
Abban utal billentyűzet lekérdezésre többféle formában, de mindig az awt.Key-t használva. { : után a nálam fellépő Hibaüzenet }
1. Variable=CreateUnoServices("com.sun.star.awt.Key") : Aleljárás vagy függvényeljárás nincsen definiálva.
2. variale.supportsServices("com.sun.star.awt.Key") : Az objektumváltozó nincs beállítva.
3. Variable = com.sun.star.awt.Key.Return : A tulajdonság vagy metódus nem található: Return.
Lehet, hogy csak azért van hiba mert nem történt meg az esemény? Bár a hibaüzenetek ekkor kicsit félrevezezőek.

A Makro-m billentyűparancsra pl <Ctrl><P> vagy új [gomb]-ra indul.
Egy fixen kijelölt cella-tartományban {mintha egy kis képernyő lenne} max 80 lépéses mozgássort mutat be {adatsorban lévő dx, dy koordináták változtatásával}.
Ezt a mozgássort a Delay utasítással, cellából megparaméterezve {1..9 fokozatban} lassítom, hogy a mozgássor ne rohanjon végig, lehessen memorizálni.
Tökéletesen működik, csak szeretném, hogy a leglassabb fokozatban billentyűnyomásra lépjen tovább a következő pozícióba, ne Delay fékkel.
A delay helyett kell egy Basic-ből/Pascal-ból ismert "Repeat Until not Keypressed", amiből most itt a Keypressed-et nem tudom kicsiholni.
Az előzményekből következtetve:
Lehet, hogy a max 80 ciklusú subrutinon belül kellene minden ciklusban egy keypressed eseményű subrutint hívni? És ez engedné tovább a ciklust ?

XRayTool:
{Egyenlőre a Változó figyelővel vizsgáltam az Obj típusú változók struktúráját, az XRayTool-t olvastam, de nem használtam/mélyedtem bele.}
Libre Office 4 Win 7
Kriszi
 
Hozzászólások: 7
Csatlakozott: 2020. február 11., kedd 22:19

Re: Makro-ban billentyűzet kezelés

HozzászólásSzerző: Zizi64 » 2020. március 8., vasárnap 7:57

Makrókódot egy mintafájlba ágyazva töltsél fel ide, légy szíves. Anélkül lehetetlen konkrétabban segíteni.
Arra viszont ügyelj, hogy Andrew Pitonyak makrói mind az OpenOffice API-jához készültek. A LibreOffice az összehasonlíthatatlanul intenzívebb fejlesztés következtében egy-két ponton már eltér attól. Fogalmam sincs, hogy az érintett részterületen mi a helyzet ebből a szempontból. De a mintafájloddal majd ki tudom próbálni...

Az XrayToolt meg töltsd le, telepítsd, ismerd meg és használd. Saját magaddal tolsz ki, ha nem teszed.


Csak egy ötlet: Egy jó helyre beszúrt sima
Kód: Egész kijelölése   KinyitásÖsszecsukás
Print "OK a továbblépéshez"


vagy egy
Kód: Egész kijelölése   KinyitásÖsszecsukás
MsgBox(...paraméterek...)


parancs pont úgy megállítja a makró működését, mint ha billentyűleütésre várnál.
Sok sikert!
Kovács Tibor (Win10x64Prof/W7x64P: LO6.1.6-6.2.8;
winPenPack/PortableApps: LO3.3.1-6.4.0, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3565
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Makro-ban billentyűzet kezelés

HozzászólásSzerző: Kriszi » 2020. március 17., kedd 22:39

- Kerestem XRay-Tool-t, 5.2-es változat, 2006-nov. Ez a legfisebb?
- Feltelepítettem. Nem a Standard könyvtárba tette magát, hanem egy újonnan létrehozott XRay-Tool-ba,
de ennek ellenére {korábbi infóval ellentétben {?}} betöltődik, mert a Makrószervezőben sárga hátterű a mappa jele.
Átfutottam az SXW doc-ot, de nem jöttem rá, mit kell tenni, hogy előhívjam/használjam... Nincs Esemény, amire elinduljon. Az XRay Main-t futtatva pedig hibaüzenetet adott...

- Összeütöttem, egy egyszerű programstruktúrát {nem működik}, amin a problémámat lehetne megoldani. Mellékelve.
Feladata: billentyűnyomásra az adott cella ASCII/CHR tartalmát 1-el növelje 40..128.
Két dolgot hiányolok ahhoz hogy továbblépjek:
1.{az előzőekben is írtam már} az "awt.Key"-t semmilyen formában nem találja.
A cégnél AOO4 van, nálam LO4, közben ott is kipróbáltam, az AOO4is ugyanúgy hiányolja.
2.Ha csak Eseményként kezeli a billentyűnyomást, azaz hívódhat meg a Sub, akkor miért nincs az Eseménylistán?
{Az EseményListán többségében a DOC nyitása/bezárása szerepel.}

A Print és MsgBox működik, de nem elég nívós, mert feldob egy ablakot.
Az MsgBox Sub-ot kellene talán megkeresnem és kiveséznem...
Köszönettel:
Csatolmányok
0000_Névtelen 1.ods
(10.25 KiB) 2 alkalommal.
Libre Office 4 Win 7
Kriszi
 
Hozzászólások: 7
Csatlakozott: 2020. február 11., kedd 22:19

Re: Makro-ban billentyűzet kezelés

HozzászólásSzerző: Zizi64 » 2020. március 17., kedd 23:03

- Kerestem XRay-Tool-t, 5.2-es változat, 2006-nov. Ez a legfisebb?

Nem, a 6.0 a legfrissebb. https://berma.pagesperso-orange.fr/index2.html


- Feltelepítettem. Nem a Standard könyvtárba tette magát, hanem egy újonnan létrehozott XRay-Tool-ba,
de ennek ellenére {korábbi infóval ellentétben {?}} betöltődik, mert a Makrószervezőben sárga hátterű a mappa jele.

Persze. Mikor feltelepíted, be is töltődik. De nézd majd meg a gép újraindítása után (a 6.0 legalábbis nem töltődik be).


Átfutottam az SXW doc-ot, de nem jöttem rá, mit kell tenni, hogy előhívjam/használjam... Nincs Esemény, amire elinduljon. Az XRay Main-t futtatva pedig hibaüzenetet adott...

Ezt kell beírni a makrókódodba amikor odaér a makró el fogja indítani az XrayTool-t és megvizsgálja a paraméterként átadott objektumot. Az XrayTool-on belül te még navigálhatsz "beljebb", az objektum szintén objektumtípusú tulajdonságaiba:
Kód: Egész kijelölése   KinyitásÖsszecsukás
Xray objektum_neve



A Print és MsgBox működik, de nem elég nívós, mert feldob egy ablakot.

Igen, lehet; bár nem árt tájékoztatni a felhasználót, hogy mi történt, és hogyan mehet tovább.


2.Ha csak Eseményként kezeli a billentyűnyomást, azaz hívódhat meg a Sub, akkor miért nincs az Eseménylistán?
{Az EseményListán többségében a DOC nyitása/bezárása szerepel.}

Te csak azt írtad meg, hogy mi történjen azután, ha az esemény bekövetkezett. De olyan előre megírt esemény figyelő nincs, ami neked kéne, azt is neked kell megírni. A "Listener" szóra keress rá Pitonyak könyveiben. Egy Listenert kell írnod.
Sok sikert!
Kovács Tibor (Win10x64Prof/W7x64P: LO6.1.6-6.2.8;
winPenPack/PortableApps: LO3.3.1-6.4.0, AOO4.1.6
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 3565
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest


Vissza: Calc

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég