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

#1 27. 3. 2011 23:06:10

Sladecek
Člen
Registrace: 4. 11. 2008
Příspěvků: 55

Oddělovač tisíců v textu - VYŘEŠENO

Dobrý den,
Nevíte někdo, zda je možné pro psaní delších čísel v textu jednoduše předvolit používání oddělení tisíců mezerou, třeba pomocí nastavení automatických oprav nebo volbou stylu. Příklad toho, co bych potřeboval: 5 254 355,00. V tabulce to jde, ale v textu to umím jen se zadáváním mezery.

Dík za radu.

Offline

#2 28. 3. 2011 22:53:28

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Oddělovač tisíců v textu - VYŘEŠENO

Automaticky to asi nepůjde tak asi jedině makrem. Použít makro pana Pastierika na označení posledního napsaného textu, přidat funkci na formátování čísla s vložením nezalomitelných mezer a spojit s klávesovou zkratkou. Záleží na tom, jak často to potřebujete a zda není lepší používat CTRL+SPACE a vkládat mezery sám. Nakonec jde jen o zvyk při psaní.


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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 8. 4. 2011 15:26:30

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Oddělovač tisíců v textu - VYŘEŠENO

Tak takhle by to šlo, jen uložit a spojit s klávesovou zkratkou. Je to kompletně přepsané makro p. Pastierika na přepis čísla slovy, jen s minimální úpravou na formát čísla.


Nedostatek - formát čísla musíte provést před desetinou čárkou (rozumějte kurzor musí být ihned za číslem a před desetinou čárkou).

Přesto mi přijde tento postup zbytečně komplikovaný a jen jsem si to uložil za domácí úkol ;o). Možná, by ale stálo za úvahu mít možnost takového formátování čísel v některém z rozšíření? Pak by se upravoval již napsaný text zpětně v celém dokumentu.

sub formatuj_cislo
dim kurzor, doc as object
dim cislo as long
dim scislo as string
doc=ThisComponent.CurrentController
kurzor=doc.getViewCursor() ' Aktuálna pozícia kurzora
scislo=posledne_slovo(kurzor)

if trim(str(val(scislo)))=scislo then
scislo=format(scislo,"###,###,###,###,###,###")
kurzor.SetString(scislo) ' označené číslo prepíšeme novým formátem
end if
kurzor.goright(len(scislo),false) ' nakoniec odznačíme blok (zostal označený aj po vložení textu)
end sub

function posledne_slovo(kurzor as object) as string
' funkcia vráti posledne napísané slovo a zároveň ho označí do bloku
dim poms as string
dim slovo as boolean
dim OddelovaceSlov as string
OddelovaceSlov=" "+chr(&HA0)+chr(&H09)+chr(&H0A)+chr(&H0D)
OddelovaceSlov=OddelovaceSlov+"-/.,!?;…"
OddelovaceSlov=OddelovaceSlov+"()[]{}"
DesettinaCarka=","
poms=""
slovo=false
do while (not kurzor.isAtStartOfLine) and (not slovo)
' pokiaľ nie sme na začiatku riadku a nie sme ešte na začiatku slova
' tak sa presunieme o jeden znak doľava s tým, že označíme tento znak do bloku

kurzor.goleft(1,true)
' označené slovo si uložíme do pomocnej premennej
poms=kurzor.getstring
' ak sme našli oddeľovač slov, tak sme na začiatku slova
slovo=instr(OddelovaceSlov,left(poms,1))
loop

if slovo and (len(poms)>1) then
' ak sme boli na začiatku slova (a ak sme vôbec niečo označili)
' tak musíme tento oddeľujúci znak z nájdeného slova vylúčiť, t.j.
' vrátime sa o krok späť
kurzor.goright(1,true)
poms=kurzor.getstring
end if
posledne_slovo=poms
end function

Pastierik forever lol

Editoval sedlacekdan (8. 4. 2011 15:28:53)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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

#4 8. 4. 2011 18:01:38

j-pastierik
Člen
Registrace: 15. 11. 2004
Příspěvků: 761

Re: Oddělovač tisíců v textu - VYŘEŠENO

Niečo možno vymyslím do rozšírenia pre typografiu.

Offline

#5 13. 4. 2011 16:04:03

j-pastierik
Člen
Registrace: 15. 11. 2004
Příspěvků: 761

Re: Oddělovač tisíců v textu - VYŘEŠENO

Urobil som rozšírenie - automaticky naformátuje čísla v celom dokumente, zaslal som ho do redakcie, zverejnenie teraz závisí od nej.

Editoval j-pastierik (13. 4. 2011 16:04:22)

Offline

#6 13. 4. 2011 17:11:50

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Oddělovač tisíců v textu - VYŘEŠENO

už se těším,
;o)

Editoval sedlacekdan (13. 4. 2011 19:14:58)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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

#7 13. 4. 2011 19:16:02

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Oddělovač tisíců v textu - VYŘEŠENO

Ukojte prosím mou zvědavost - je to nějak takto?
Díky ;o)


sub format_cisla 'formátuje do bilionu 
doc=thisComponent
formcisla=doc.CreateReplaceDescriptor
formcisla.searchstring = "[:digit:]{4,}"
formcisla.SearchRegularExpression = true
pocet=doc.findAll(formcisla)
for n = 0 to pocet.count - 1
 formatuj_vse = pocet(n)
 oznaccislo = formatuj_vse.Text.createTextCursorByRange(formatuj_vse)
 kformatovani=oznaccislo.getString
 if trim(str(val(kformatovani)))= kformatovani then
    kformatovani=format(kformatovani, "###,###,###,###,###")
    formatuj_vse.SetString(kformatovani)
 end if
next n
end sub

Linux Mint 16 Petra - Apache OpenOffice 4.0.1
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 14. 4. 2011 05:51:47

j-pastierik
Člen
Registrace: 15. 11. 2004
Příspěvků: 761

Re: Oddělovač tisíců v textu - VYŘEŠENO

Zdrojový text vyjde v rámci seriálu o programovaní makier na inet.sk 27.4.2011. Pre upokojenie zvedavosti niektoré príkazy:

oHladaj.searchString="[:digit:]*(,|\.|[:digit:])[:digit:]*"
...
sCela=trim(format(val(sCela), "#"+chr$(&HA0)+"##0"))

Navyše je tam oddeľovanie celej časti od desatinnej - formátuje sa iba celá časť, cyklus hľadania je trochu iný. V podstate ste to však vystihli.

Offline

#9 15. 4. 2011 21:59:23

PetrValach
Člen
Registrace: 24. 5. 2007
Příspěvků: 557

Re: Oddělovač tisíců v textu - VYŘEŠENO

Přátelé... v porovnání s Vámi jsem naprostý... KO.OT. Závidím Vám a gratuluji.


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

#10 17. 8. 2011 18:36:08

Sladecek
Člen
Registrace: 4. 11. 2008
Příspěvků: 55

Re: Oddělovač tisíců v textu - VYŘEŠENO

Díky, je to co jsem potřeboval.

VYŘEŠENO

Editoval Sladecek (17. 8. 2011 18:37:05)

Offline

Zápatí