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

#1 13. 4. 2014 17:25:55

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 711

Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-)

Dobrý den

našel jsem takové makro tuším od Hanuse na nastavení pozice kurzoru. Chtěl bych se zeptat zda to nejde i jednodušeji a která z těch nastavení změnit aby buňka skončila jako neoznačená? :-) tedy jen s pozicí kurzoru. Zde je to makro:

kontroler = dokument.getCurrentController()
vyber = dokument.currentselection	
list = dokument.sheets(vyber.rangeaddress.sheet)
bunka = list.getCellRangeByName("B2")
kontroler.Select(bunka) 

Editoval ludviktrnka (15. 4. 2014 20:51:52)


LibreOffice 5.4.

Offline

#2 13. 4. 2014 20:33:52

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 844

Re: Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-)

Myslím, že prvním zdrojem informaci o makrech jsou články Dana Sedláčka:

http://www.openoffice.cz/doplnky/pohyb- … ci-kurzoru

Offline

#3 13. 4. 2014 20:39:17

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 711

Re: Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-)

No jo to jsem zkoušel, ale to je jakýsi "imaginární kurzor", já tuto dávku chci dát na konec makra, aby uživatel měl skutečný fyzický kurzor na dané buňce.

Editoval ludviktrnka (13. 4. 2014 20:39:55)


LibreOffice 5.4.

Offline

#4 14. 4. 2014 00:35:12

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 844

Re: Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-)

Nějak nechápu, co to má vlastně dělat.

doc = thisComponent				' dokument
list = doc.Sheets.getByName("List3")		' list
bunka = list.getCellRangeByName("C8")		' a bunka
kurzor = doc.getCurrentController()		' kurzor
kurzor.Select(bunka)				' vybrat	

a velký zjednodušení mne taky nenapadlo

Offline

#5 14. 4. 2014 01:07:04

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

Re: Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-)

Vyzkoušejte toto:

 Sub start
Doc = thisComponent
vyber = doc.Sheets(0).getCellRangeByName("A1:C1")
doc.CurrentController.select(vyber)
End sub

Funguje to stejně na 1 buňku jako na celý úsek.


     Jinak doporučuji nahrát si UNO - to bez "kurzoru" neudělá ani ránu - např :

sub Start
rem ----------------------------------------------------------------------
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
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 = "ToPoint"
args1(0).Value = "$List2.$A$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
End Sub

Editoval neutr (14. 4. 2014 01:09:59)


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

#6 14. 4. 2014 07:06:44

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 711

Re: Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-)

neutr napsal(a)

Vyzkoušejte toto:

 Sub start
Doc = thisComponent
vyber = doc.Sheets(0).getCellRangeByName("A1:C1")
doc.CurrentController.select(vyber)
End sub

Funguje to stejně na 1 buňku jako na celý úsek.

Supr, z pěti řádků na dva řádky a ze čtyř proměnných na jednu, to se mi moc líbí, já jsem tušil že to může být mnohem jednoduší. Díky moc. Sice to tedy stále provádí výběr nikoli pouze přesun, ale to zas tak nevadí. To UNO jsem si zkoušel nahrát, to samozřejmě funguje, ale vypadá to hrozně vošklivě :-(

Nevíte tedy ještě jestli metoda CurrentController nemá ještě nějakou fukci "nastavit" tedy nikoli vybrat ale jen to tam prostě "přesunout". (možná se ptám hloupě, tak se předem omlouvám - už několik let jdu na ta makra furt jaksi odzadu, stále nechápu základní obecnou strukturu programu)

Dík moc.


LibreOffice 5.4.

Offline

#7 14. 4. 2014 07:09:29

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 711

Re: Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-)

lp. napsal(a)

Nějak nechápu, co to má vlastně dělat.

V podstatě nic, jen na závěr jakéhosi makra to má přesunout kurzor na určenou pozici.


LibreOffice 5.4.

Offline

#8 14. 4. 2014 09:12:55

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 844

Re: Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-)

ludviktrnka napsal(a)

Supr, z pěti řádků na dva řádky a ze čtyř proměnných na jednu, to se mi moc líbí, já jsem tušil že to může být mnohem jednoduší.

O tom, co se komu líbí se obvykle nepřu. Ovšem v tomto případě udělám výjimku. Tento řádek udělá totéž co předchozích 5, nepotřebuje žádnou proměnnou, ale mně se nelíbí:

thisComponent.CurrentController.Select(thisComponent.Sheets.getByName("List1").getCellRangeByName("C8"))

Pokud opakovaně pracujete s nějakým objektem, je obvykle dobré zvážit jeho uložení do proměnné.
Obdobně složitější výraz je často dobré rozdělit do několika jednodušších (s pomocí další proměnné).

Offline

#9 14. 4. 2014 09:33:26

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 711

Re: Nastavit pozici kurzoru makrem VYŘEŠENO 90% :-)

... jo jasný, šlo mi o to že nějak tuším že takový celkem jednoduchý úkon bude mít jednoduché řešení, kterému budu schopen porozumět. U toho makra na začátku jsem prostě nechápal co se to tam všechno nastavuje, u makra

vyber = doc.Sheets(0).getCellRangeByName("A1:C1")
doc.CurrentController.select(vyber)

už nic nepochopitelného není. Vynechává se zde i procedura "getcurrentcontroller" ... Asi jsem se špatně vyjádřil nešlo mi o délku jako takovou ale o celkem zbytečnou složitost, kterou jsem prostě nechápal a nevěděl jsem co z toho je nutné a co zbytečné. Teď už to tedy jakž takž vím. Samozřejmě že thiscomponent i Sheet s nímž pracuji mám už definované na začátku.

... no a k tomu dispečeru - je to prostě úplně jiný zápis a musel bych ho přebrat tak jak je včetně definice proměných, kombinace s "normálním" makrem je taková "divná" (Pardon, používám taková citová vyjádření, možná to sem nepatří)

Velmi si vážím vašich odpovědí.

Editoval ludviktrnka (14. 4. 2014 09:34:02)


LibreOffice 5.4.

Offline

Zápatí