[Résolu][Writer] Récupérer sélection dans une zone de liste

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
martinbrait
InconditiOOnnel
InconditiOOnnel
Messages : 753
Inscription : 09 avr. 2013 07:15
Localisation : T'as pas dit bonjour, merci et à bientot !

[Résolu][Writer] Récupérer sélection dans une zone de liste

Message par martinbrait »

Bonjour,

Projet :
Le combobox de la boîte de dialogue apporte une information suite à recherche dans une source de données.
Le document répercute l'information recherchée sur le curseur de la souris.
liste_choix.PNG
Un combobox (1) permet à l'utilisateur de rechercher une ligne d'enregistrements dans une source de données.
Une fois la recherche effectuée dans la combobox,
des propositions s'affichent dans une listbox à sélection multiple (2)
C'est la liste de tous les résultats en relation avec la recherche lancée depuis la combobox (1).
Je suis vraiment débutant :
sourcer le combobox avec un recordset issu d'une source de données (base) ?
retourner le contenu d'un textbox de la boîte de dialogue actuellement ouverte ?
retourner le contenu d'un combobox de la boîte de dialogue actuellement ouverte ?
retourner la valeur sélectionnée depuis une listbox à choix multiple ?
retourner le résultat d'une source de données, dans un contrôle de boîte de dialogue ?

Je cherche à récupérer ensuite par macro, la valeur double-cliquée, dans un contrôle listbox, à sélection multiple,
lui-même déployé dans un contrôle boîte de dialogue, afin d'en diffuser le contenu à la position du curseur de souris
dans le document ouvert actif.

Avez-vous une idée sur la manière d'écrire celà !

J'ai beau parcourir les sujets :
h**p//openoffice-libreoffice.developpez.com/faq/?page=Les-zones-de-liste-ListBox#Comment-remplir-une-ListBox-a-partir-d-un-tableau

Je n'arrive même pas à faire référence la boîte de dialogue que je viens de créer pour l'occasion, dans mon document en cours. :(

Merci beaucoup pour votre aide !
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice version 5.4.7.2.M6 (x64)
Windows 10
+
LibreOffice version 5.4.7.2.M6 (x64)
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0

Locale : fr-FR (fr_FR)

Obligation de version


Bonjour, merci et à bientôt !
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Writer] Récupérer sélection dans un listbox

Message par Piaf »

Bonsoir
Je pensais que les règles du Forum stipulaient de ne poser qu'une question par fil :roll:
martinbrait a écrit :Projet :
Après pour ce qui est des projets, le Forum dispose d'une section dédiée Projets.
Ensuite, pas d'informations sur la base de données, pas d'informations sur ce qu'est censé faire le fameux ComboBox, etc...
À la lecture de ce que tu écris, cela ressemble beaucoup à du publipostage, quel est l'intérêt de coder cela à partir d'un document Writer avec un dialogue ?
Après on peut toujours jouer (à tester)
Fun.gif

Code : Tout sélectionner

Option Explicit
Dim oDlg As Object,maConnexion as Object, maTable as Object
Sub Main
Dim oSelection() as String, listeCandidats as String, i as Integer
Dim maSource As Object, dbContexte As Object
Dim oCol() as Variant, strSQL as String
Dim oDoc as Object, oTexte as Object, CurseurVisible as Object
	DialogLibraries.LoadLibrary("Standard")
	oDlg = CreateUnoDialog(DialogLibraries.Standard.SelectionCandidats)
	dbContexte = CreateUnoService("com.sun.star.sdb.DatabaseContext")
	maSource = dbContexte.getByName("Bibliography")
	maConnexion = maSource.getConnection("","")
	maTable = maConnexion.Tables.getByName("biblio")
	oCol = Array(0,4,17,20,25,30)
	For i = 0 To UBound(oCol)
		oDlg.getControl("lstChamps").addItem(maTable.Columns.getByIndex(oCol(i)).Name,i)
	Next i
	oDoc = ThisComponent
	oTexte = oDoc.Text
	curseurVisible = oDoc.CurrentController.ViewCursor	
	Select Case oDlg.Execute() 
		Case 1
			oSelection = oDlg.getControl("lstCandidats").SelectedItems
			If UBound(oSelection) < 0 Then
				MsgBox "Aucun candidat sélectionné"
			Else
				listeCandidats = ""
				For i = 0 To UBound(oSelection)
					listeCandidats = listeCandidats & oSelection(i) & Chr(13)
				Next i
			End If	
			oTexte.insertString(curseurVisible, listeCandidats, False)
		Case 0
	End Select
	maConnexion.close
	maConnexion.dispose
	oDlg.Dispose
End Sub

Sub oChamp(oEv as Object)
Dim stmt as Object, resultat as Object
Dim strSQL as String, Candidat() as String, x as Integer
	strSQL = "SELECT """ & oEv.Source.SelectedItem & """ FROM """ & matable.Name & """"
	stmt = maConnexion.createStatement
	resultat = stmt.executeQuery(strSQL)
	While resultat.Next
		If resultat.Columns(0).String <> "" Then
			reDim preserve candidat(x)
			candidat(x) = resultat.Columns(0).String
			x = x + 1
		End If	
	Wend
        Candidat = SortedList(Candidat, true)
	oDlg.getControl("lstCandidats").Model.StringItemList = Candidat()
End Sub
Bon courage :)
Tout le code vient des réponses apportées à différentes questions sur ce Forum,
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64