Calc, ListBox Jak odczytać pozycję?

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
krzys59
Posty: 79
Rejestracja: pt cze 19, 2009 2:59 pm

Calc, ListBox Jak odczytać pozycję?

Post autor: krzys59 »

Mam w calc pole listy o nazwie MojListBox, mam makro wczytujące dane do listboxa z komórek calc, potrafię odczytać wskazaną wartość, ale nie wiem jak odczytać numer wybranej pozycji na liście

Kod Makra:

Kod: Zaznacz cały

Sub Main 
'zrobić w Arkusz1 list box o nazwie "MojListBox"

oDoc = ThisComponent 
oSheet = oDoc.getSheets.getByName("Arkusz1") 
oForm = oSheet.DrawPage.Forms.getByIndex(0) 
oMojListBox = oForm.getByName("MojListBox") 

'pętla tworząca pole listy na 5 pozycji
With oMojListBox 
      .LineCount = 5 
End With 

'zaznacza zakres komórek do pobrania wartosci do pola listy c4:c9
dim RangeAddr as  new com.sun.star.table.CellRangeAddress 
RangeAddr.EndColumn = 2 
RangeAddr.EndRow = 8 
RangeAddr.Sheet = 0 
RangeAddr.StartColumn = 2 
RangeAddr.StartRow = 3 

'pobranie wartości do pola listy
dim initParam(0) as new com.sun.star.beans.NamedValue 
initParam(0).Name="CellRange" 
initParam(0).value = RangeAddr 
CellRangeListSource=oDoc.createInstanceWithArguments("com.sun.star.table.CellRangeListSource", initParam ) 
oMojListBox.setListEntrySource CellRangeListSource 

'pobiera wartość z ListBox
z_listy = oMojListBox.CurrentValue
Msgbox z_listy

End Sub 
Czy może mi ktoś podpowiedzieć jak odczytać aktywną pozycję na liście? Zupełnie nie mam pojęcia jak to zrobić.
A drugie pytanie, czy można wstawić dane do ListBox z wewnętrznej tablicy, umieszczonej w kodzie makra. Konkretnie, żeby nie używać odczytywania wartości z komórek tylko pozyskać je z tablicy obliczanej wewnątrz makra? Nie całokiem czuję przedstawiony powyżej kod, stąd może głupie pytanie :oops:

Pozdrawiam
Krzysiek
Załączniki
ListBox.ods
(9.53 KiB) Pobrany 454 razy
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Calc, ListBox Jak odczytać pozycję?

Post autor: belstar »

Kod: Zaznacz cały

Sub WypelnijListBox
	Dim oDoc As Object
	Dim oSheet As Object
	Dim oForm As Object
	Dim oListBoxModdel As Object
	Dim oListBoxView As Object
	Dim sLista(0 to 2) as String
	
	'Wypełnienie tablicy danymi
  	sLista(0) = "A" + Str(1)
	sLista(1) = "B" + Str(2)
	sLista(2) = "C" + Str(3)
   
   oDoc=ThisComponent
   oSheet=oDoc.Sheets(0)
   oForm=oSheet.DrawPage.Forms(0)
   oListBoxModel=oForm.getByName("ListBox1")
   oListBoxView=oDoc.CurrentController.getControl(oListBoxModel)
   
   'Dodaj tablice sLista do ListBoxa1 i zaznacz pierwszą pozycje
   olistboxview.additems(sLista(),0)
   olistboxview.selectitempos(2,true)
  
'	print olistboxview.getSelectedItem 
'	print olistboxview.getSelectedItemPos
'	olistboxview.removeItems(2,1)
'	print olistboxview.getItemCount
'	oListboxview.removeItems(inputbox("Podaj pozycje do usunięcia:","USUŃ"),1)
	
	Dim Lista(oListBoxView.getItemCount - 1) as string
	for x = 0 to ubound(Lista)
		oListBoxView.selectitempos(x,true)
		lista(x) = "Wartość to: " + oListBoxView.getSelectedItem + " A wpis jest na pozycji " + olistboxview.getSelectedItemPos 	
		print lista(x)	
	next
	olistboxview.additem(inputbox("Wpisz dane:","Podany string wpisany będzie jako ostatni:"),x)
End Sub 
LibreOffice 5.1.2.2 Ubuntu 16 LTS
ODPOWIEDZ