Como escrever uma macro para obter palavras selecionadas uma marca de ênfase?

0

Como posso escrever uma macro para o OpenOffice writer, que obtém as palavras / caracteres que eu selecionei com o mouse uma marca de ênfase como ponto sobre as palavras / caracteres?

Eu tentei gravar a macro, mas falhei.

Espero que alguém aqui possa me ajudar

Estou tentando escrever uma macro para o OpenOffice Writer e o LibreOffice Writer. Essa macro adicionará uma barra de ferramentas no Writer, semelhante à barra de ferramentas de pontuação chinesa na versão chinesa do MS Word. Os botões da barra de ferramentas são sinais de pontuação chineses. Um dos botões será a marca de ênfase usada em chinês simplificado na China. A marca de ênfase é um ponto sob o caractere chinês que é enfatizado quando a direção do texto é horizontal, um ponto à direita do caractere enfatizado quando a direção do texto é vertical.

Não conheço o OpenOffice Basic ou outros idiomas usados para escrever programas de computador, mas sei que o gravador de macro do Writer pode gravar alguns códigos que podem ser usados para gravar a macro de que preciso. E eu continuo googling para encontrar mais informações e aprender a escrever a macro. Para a maioria dos sinais de pontuação, os códigos são simples.

Por exemplo, para inserir uma marca de parada, os códigos são:

rem U+3002
sub cp01
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Text"
args1(0).Value = "。"
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
end sub

Mas o gravador de macro do LibreOffice 3.4 não conseguiu gravar uma macro viável para a marca de ênfase. Na verdade, a gravadora fechou inesperadamente assim que mudei a marca de ênfase de "(sem)" para "ponto" na caixa de diálogo "Efeitos de fonte da caixa de diálogo de caracteres" do gravador. Fui forçado a baixar e instalar o OpenOffice.org 3.3 e 3.4.

O gravador de macro do OpenOffice.org 3.3 também não pode gravar, mas o do 3.4 o fez. A macro é:

sub Test20120206_1
rem --------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem -------------------------------
dispatcher.executeDispatch(document, ".uno:EmphasisMark", "", 0, Array())
end sub

Esta macro não funciona.

    
por Tim 07.02.2012 / 13:49

1 resposta

1

Eu encontrei a página da web: link

Uma macro do FJCC me deixou muito feliz porque é curta e sobre como aplicar um efeito a caracteres selecionados, isso poderia ser o que eu preciso.

Doc = ThisComponent
Selections = Doc.CurrentSelection
FirstSelection = Selections.getByIndex(0)
TextString = FirstSelection.String
UCaseStr = UCase(TextString)
FirstSelection.String = UCaseStr

Em seguida, recombinei esse código com as macros do MS Word, o japonês e o Pitonyak A. e encontrei um viável:

sub EmphasisMark
Doc = ThisComponent
Selections = Doc.CurrentSelection
FirstSelection = Selections.getByIndex(0)
  If  FirstSelection.CharEmphasis = com.sun.star.text.FontEmphasis.NONE Then
      FirstSelection.CharEmphasis = com.sun.star.text.FontEmphasis.DOT_BELOW
  Else
      FirstSelection.CharEmphasis = com.sun.star.text.FontEmphasis.NONE
  End If
end sub

Isso é o que eu preciso. Finalmente ...

    
por 08.02.2012 / 16:00