0

Je rencontre un problème avec le contrôle OpenOffice.org ListBox Form. J'ai construit un petit formulaire (pas de dialogue) qui contient une zone de texte et ListBox et 2 boutons.Comment ajouter ou supprimer par programme des éléments dans le contrôle ListBox FORM

Sous AddToList_ButtonClicked()

Dim oThisDoc As Object 
Dim oForms as Object 
Dim oForm as Object 

oThisDoc = thisComponent.getDrawPage() 
oForms = oThisDoc.getForms() 
oForm = oForms.getByName("SimpleForm") 

Dim oTextBox As Object 
Dim oListBox As Object 

oListBox = oForm.getByName("simpleListBox") 
oTextBox = oForm.getByName("simpleTextBox").Text 
oListBox.stringitemlist() = Array("One", "Two", "Three") '<--- Only possible way to add items to the ListBox Form Control :(

End Sub

Sous RemoveFromList_ButtonClicked()

Dim oThisDoc As Object 
Dim oForms as Object 
Dim oForm as Object 

oThisDoc = thisComponent.getDrawPage() 
oForms = oThisDoc.getForms() 
oForm = oForms.getByName("SimpleForm") 

Dim oListBox As Object 

oListBox = oForm.getByName("simpleListBox") 

oListBox.stringitemlist() '<--- contains array of items 
oListBox.SelectedItems '<--- contains items selected for removal 

End Sub

Je totalement apprécier toute solution à ce problème !.

+0

Il ressemble à un fichier Word est votre formulaire - est-ce correct? Y a-t-il un fichier Base connecté? Comme vous l'avez constaté, le contenu du tableau de listbox est clunky; il est en fait plus facile de travailler avec si le formulaire est connecté à un fichier de base et le contenu de la liste est déterminé par une chaîne SQL. S'il y a une connexion de base, il serait probablement préférable d'avoir votre liste d'éléments dans une table de base, les marquer comme indiqué par l'entrée de l'utilisateur du formulaire, puis 'oListBox.refresh' pour l'obtenir pour afficher la liste mise à jour. Si vous voulez seulement cela dans Word - il semble que votre code fonctionne, quelle est exactement la question? – Lyrl

Répondre

0

Est-ce ce que vous cherchez?

' Add items. 
oListBox.StringItemList() = Array("One", "Two", "Three") 
oListBox.insertItemText(oListBox.ItemCount, "Four") ' This works even if oListBox starts out empty. 
oListBox.insertItemText(oListBox.ItemCount, "Five") 

' Remove the last item in the list. 
oListBox.removeItem(oListBox.ItemCount - 1) 

XrayTool montre que oListBox implémente XItemList.

Le formulaire que j'ai utilisé pour tester ce code était en Writer, sans aucune connexion à Base.