Strona 1 z 1

Calc, ListBox Jak odczytać pozycję?

: czw gru 22, 2011 10:53 pm
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

Re: Calc, ListBox Jak odczytać pozycję?

: pn gru 26, 2011 1:39 pm
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