Pergunte aqui
2

Como utilizar controle de tabela no formulário Calc

perguntadas 2018-08-10 16:16:25 +0200

imagem do gravatar de Júnio Vieira

updated 2019-06-05 20:26:52 +0200

Bom dia,

Alguém sabe como utilizar o controle de tabela em um formulário no calc? Ele aparece nas ferramentas, mas não fica disponível apenas se utilizá-lo na planilha ao invés do formulário.

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

4

respondidas 2018-08-12 22:40:53 +0200

imagem do gravatar de Grafeno

updated 2019-06-08 22:52:17 +0200

Boa tarde,

Acredito que por formulário você esteja se referindo às caixas de diálogo do LibreOffice Basic. Nesse caso, os controles de tabela infelizmente não são acessíveis pela interface, apenas por código.

Abaixo coloco um exemplo de controle de tabela em diálogo:


Código:

REM  *****  BASIC  *****

Dim oDialogo As Object
Dim oTabela As Object

Sub IniciarDialogo
   DialogLibraries.LoadLibrary("Standard")
   'Usando a variável declarada no começo do módulo'
   oDialogo = CreateUnoDialog( DialogLibraries.Standard.getByName("Dialogo1") )

   'Criar controle tabela'
   oTabela = oDialogo.Model.createInstance("com.sun.star.awt.grid.UnoControlGridModel")
   with oTabela
     .PositionX = 10
     .PositionY = 10
     .Width = 171
     .Height = 85
   end with

   'Adicionar as colunas'
   oDoc = ThisComponent
   oPlan = oDoc.Sheets(0)

   oColunas = oTabela.ColumnModel
   oCol = oColunas.createColumn()
   oCol.Title = oPlan.getCellRangeByName("A1").String
   oCol.ColumnWidth = 20 'Definir largura'
   oCol.Flexibility = False 'Para fixar largura'
   oColunas.addColumn(oCol)

   oCol = oColunas.createColumn()
   oCol.Title = oPlan.getCellRangeByName("B1").String
   oColunas.addColumn(oCol)

   oCol = oColunas.createColumn()
   oCol.Title = oPlan.getCellRangeByName("C1").String
   oColunas.addColumn(oCol)

   oCol = oColunas.createColumn()
   oCol.Title = oPlan.getCellRangeByName("D1").String
   oCol.ColumnWidth = 30 'Definir largura'
   oCol.Flexibility = False 'Para fixar largura ao iniciar'
   oColunas.addColumn(oCol)

   'Inserir o controle tabela no diálogo'
   oDialogo.Model.insertByName("Tabela", oTabela)

   'Carregar'
   oDialogo.Execute()
   oDialogo.Dispose()
End Sub

Sub CarregarDados
   oDoc = ThisComponent
   oPlan = oDoc.Sheets(0)
   oIntervalo = oPlan.getCellRangeByPosition(0,1,3,UltimaLinha(oPlan))

   oTabela = oDialogo.getControl("Tabela").Model
   oDadosTab = oTabela.GridDataModel
   oDadosTab.removeAllRows
   mDados = oIntervalo.DataArray

   For i= 0 to UBound(mDados)
      oDadosTab.addRow("", mDados(i))
   Next i
End Sub

Function UltimaLinha( oPlan )
   oCursor = oPlan.createCursor
   oCursor.gotoEndOfUsedArea(True)
   UltimaLinha = oCursor.Rows.Count-1
End Function


Atte,

editar assinalar como ofensivo Excluir Link mais

Comentários

1

Bom dia Grafeno, cada vez me surpreendo mais com o que se pode fazer via programação com o libreoffice. Obrigado!

imagem do gravatar de Júnio VieiraJúnio Vieira ( 2018-08-14 14:59:00 +0200 )editar
1

Posso parecer chato, mas gostaria que o amigo @Grafeno postasse a macro na resposta além do arquivo, por dois motivos: 1) A simples leitura do código já pode dar a luz na solução, 2) não corremos o risco de macro com problema ao baixar. Obrigado.

imagem do gravatar de OlivierOlivier ( 2019-06-08 16:08:16 +0200 )editar
1

@Olivier, chato de maneira alguma. Em 99% das minhas postagens (com macro), coloco o código no corpo da resposta porque acho mais direto e também pelo motivos apresentados. Neste caso específico, como iria ficar um pouco grande, e estava com pressa, deixei sem. Ademais, retificado agora! Valeu!

imagem do gravatar de GrafenoGrafeno ( 2019-06-08 22:33:53 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2018-08-10 16:16:25 +0200

Lidas: 98 vezes

Última atualização: Jun 08