Listbox im Formular: Einträge hinzufügen und löschen?
Verfasst: Mo, 26.06.2006 15:36
Hallo zusammen,
wie die Überschrift schon sagt: Ich habe in einem Formular eine Listbox in die die ich per Makro Einträge hinzufügen und auch wieder entfernen will. Komischerweise scheint diese Listbox nicht vollständig die gleichen Eigenschaften / Methoden zu haben, wie eine Listbox in einem Dialog. So habe ich z.B. addItem() und removeItem() nicht gefunden. Prinzipiell habe ich eine etwas umständliche andrere Möglichkeit gefunden das zu lösen, allerdings gelingt es mir nicht den letzten Eintrag in der Listbox wieder zu löschen. Weiß jemand von Euch Rat?
Danke für Eure Hilfe,
Steffan.
wie die Überschrift schon sagt: Ich habe in einem Formular eine Listbox in die die ich per Makro Einträge hinzufügen und auch wieder entfernen will. Komischerweise scheint diese Listbox nicht vollständig die gleichen Eigenschaften / Methoden zu haben, wie eine Listbox in einem Dialog. So habe ich z.B. addItem() und removeItem() nicht gefunden. Prinzipiell habe ich eine etwas umständliche andrere Möglichkeit gefunden das zu lösen, allerdings gelingt es mir nicht den letzten Eintrag in der Listbox wieder zu löschen. Weiß jemand von Euch Rat?
Danke für Eure Hilfe,
Steffan.
Code: Alles auswählen
dim arr()
dim iAdr() as integer
Sub addToDock
oForm = ThisComponent.drawpage.forms.getbyName("frmAdr")
'Werte aus Formular lesen
iID= oForm.Columns(0).getInt
sCo= oForm.Columns(1).getString
sNa= oForm.Columns(5).getString
if sNa="" then sNa=sCo
'Zugriff auf Listbox
oLstDock=oForm.getbyname("lstDock")
iMax=ubound(oLstDock.stringitemlist)
'Vorhandene Einträge in Array lesen
arr()=oLstDock.stringitemlist
'Array redimensionieren
redim preserve arr(iMax+1)
redim Preserve iAdr(iMax+1)
'Werte (ID, Name) in Arrays schreiben
arr(iMax+1)=sNa:iAdr(iMax+1)=iID
'Array der Listbox als Werteliste zuweisen
oLstDock.stringitemlist=arr()
End Sub
Sub removeFromDock
oForm = ThisComponent.drawpage.forms.getbyName("frmAdr")
oLstDock=oForm.getbyname("lstDock")
'Selektierte Zeile ermitteln
iSel=oLStDock.selectedItems
'nichts ausgewählt -> Abbruch
if ubound(iSel)=-1 then exit sub
'Vorhandene Einträge in Array lesen
arr()=oLstDock.stringitemlist
iMax=uBound(arr())
'Folgewerte nachrücken
if iSel(0)<iMax then
for i=iSel(0) to iMax-1
arr(i)=arr(i+1)
iAdr(i)=iAdr(i)+1
next i
endif
'Arrays redimensionieren / Löschen
if iMax>0 then
redim preserve arr(iMax-1)
redim Preserve iAdr(iMax+1)
oLstDock.stringitemlist=arr()
else
erase arr
erase iAdr
oLstDock.stringitemlist=arr() '<- Fehler hier beim zuweisen eines leeren Arrays
endif
end sub