Caixa de Listagem - Sem Dialog

Pessoal, estou tentando recuperar os valores de um grupo de células (variável a altura) para uma Caixa de Listagem não associada a um dialog, ou seja, direto na planilha.

Segue até onde cheguei para os testes. (já tentei com additem tbm)

Sub CarregarListBox (oEvent)

	Dim oForm, oPlan, ListBox
	
	oPlan = ThisComponent.Sheets.getByName( "Planilha6" )
	oForm = oPlan.DrawPage.Forms.getByName( "Formulário" )
	
	oListBox = oForm.getByName("cxListagem2")
	
	oListbox.listitem = oPlan.getCellByPosition( 3,15 ).String
	
End Sub

Boa noite,

O método AddItem() irá funcionar com o seguinte código:

Sub CarregarListBox
   Dim oDoc, oForm, oPlan, oListBox
    
    oDoc = ThisComponent
    oPlan = oDoc.Sheets.getByName( "Planilha6" )
    oForm = oPlan.DrawPage.Forms.getByName( "Formulário" )

    oListBoxModel = oForm.getByName("cxListagem2") 'Model do ListBox'
    oListBox = oDoc.CurrentController.getControl(oListBoxModel) 'View do ListBox'
    
    oListBoxModel.removeAllItems 'Este método está no Model'
    oListBox.AddItem( oPlan.getCellByPosition( 3,15 ).String,0 ) 'Método no view'
End Sub

O Libreoffice utiliza uma arquitetura que separa as propriedades e os métodos de seus objetos em dois “locais”: Model e View. Quando se acessa o controle a partir do Dialogo, é obtido primeiro o seu View. A partir de um formulário (conteiner invisível sobre a planilha/documento) chega-se ao seu Model antes. O método AddItem() fica no view do controle ListBox, então no formulário é preciso do “passo a mais” do código acima.

Atte,

@Grafeno , Agora entendi como funciona a diferença entre eles. Estava lendo as referências mas pelo jeito não havia entendido. O procedimento de certo. Obrigado mais uma vez.

@Conras, o seu codigo

oListbox.listitem = oPln.getCellByPosition( 3,15 ).String

nao bate com a Variavel

  • oPlan

Obrigado @joaorochaj, foi erro de digitação apenas. Mas mesmo assim ele retorna erro de propriedade ou método não encontrado.