Strona 1 z 1

Zmiana modelu ControlTree (OO się wywala)

: wt kwie 16, 2013 12:39 pm
autor: JackK
Cześć.
Mam dialog zawierający ControlTree. Pierwsze uzupełnienie jego modelu i wyświetlanie działa bez zarzutów, jednak gdy chcę zmienić model na inny, OpenOffice się zamyka z powodu jakiegoś błędu.
Mam kod:

Kod: Zaznacz cały

Dim dlgQH
Dim oFileSel
Dim oTree As Object
Dim oListener
Dim xml

Sub CreateTree
   	oTreeModel = oTree.Model

	oMutableTreeDataModel = createUnoService("com.sun.star.awt.tree.MutableTreeDataModel")

	bonsai = DimArray(0,0)
	bonsai_size = -1

	Dim looped As Integer
	Do
		XMLp = nextXMLtag(xml, XMLp)    ' ZWRACA TAG xml Z CZYTANEGO PLIKU
		if XMLp=0 then
			Exit Do
		end if

		if nextXMLtag_type = "openoffice_hint" then
			oRootNode = oMutableTreeDataModel.createNode("Całość", true)
			oMutableTreeDataModel.setRoot(oRootNode)
		elseif nextXMLtag_type = "mod" then
		   	oModNode = oMutableTreeDataModel.createNode("nazwa_mod", true)
            oModNode.setCollapsedGraphicURL("file:///C:/module.png")
            oModNode.setExpandedGraphicURL("file:///C:/module.png")
		   	oRootNode.appendChild(oModNode)
		elseif nextXMLtag_type = "qg" then
		   	oGroupNode = oMutableTreeDataModel.createNode("nazwa_qg", true)
            oGroupNode.setCollapsedGraphicURL("file:///C:/group.png")
            oGroupNode.setExpandedGraphicURL("file:///C:/group.png")
		   	oModNode.appendChild(oGroupNode)
		end if
		looped = looped + 1
	Loop

	oTreeModel.DataModel = oMutableTreeDataModel
   	oTree.DefaultExpandedGraphicURL = "file:///C:/xml.gif"
   	oTree.DefaultCollapsedGraphicURL = "file:///C:/xml.gif"

	oListener = createUnoListener("Select_","com.sun.star.view.XSelectionChangeListener")
	oTree.addSelectionChangeListener(oListener)
End Sub

Sub ChangeXML
	FileName = oFileSel.getText()
	'if FileName = "" then
	'	FileName = "C:\OOhint.xml"
	'end if
	if FileName <> "" then
		' odczytanie pliku XML do zmiennej "xml"
		sf = createUnoService("com.sun.star.ucb.SimpleFileAccess")
		myFilePath = convertToURL(FileName)
		fileStream = sf.openFileRead(myFilePath)
		myTextFile = createUnoService("com.sun.star.io.TextInputStream")
		myTextFile.InputStream = fileStream
		myTextFile.Encoding = "ISO-8859-2"
		Do while not myTextFile.IsEOF
			aLineOfText = myTextFile.readLine
			xml = xml + aLineOfText
		Loop
		fileStream.closeInput
		myTextFile.closeInput 
		CreateTree
	end if
End Sub

Sub ShowDialog_qH
   	DialogLibraries.loadLibrary("Standard")
   	libStandard = DialogLibraries.getByName("Standard")
   	libDialog = libStandard.getByName("queryHint_Dialog")
   	dlgQH = CreateUnoDialog(libDialog)

   	oFileSel = dlgQH.getControl("FileSelect")
   	oTree = dlgQH.getControl("drzewo")

	ChangeXML()

	dlgQH.execute()
	oTree.removeSelectionChangeListener(oListener)
	dlgQH.dispose()
End Sub 'ShowDialog_qH
Pominąłem tu funkcję listener'a.
By wyświetlić dialog wywołuję makro ShowDialog_qH. Pod przyciskiem oFileSel (na dialogu) wybierającym plik z dysku mam podczepione makro ChangeXML. Czy przed zmianą modelu trzeba wcześniejszy "zabić" w jakiś sposób?
Proszę o pomoc.

Re: Zmiana modelu ControlTree (OO się wywala)

: wt kwie 16, 2013 7:16 pm
autor: Jan_J
Piszesz o rzeczach, które chyba mało kto umie robić w UNO. Łatwiej znaleźć takich, co rzeźbią w WinForms, Qt albo GTK.
Ale jeśli chcesz, by ktoś przyjrzał się Twoim problemom, załącz działający przykład. Tj. nie działający wskutek Twojego problemu -- bo ja np. nie mam pojęcia, na czym polega Twój queryHint_Dialog, ani czym jest widget drzewo. Bez biblioteki nie rozbierzesz, a i instalować cudzej biblioteki do testów mi się nie uśmiecha.

Re: Zmiana modelu ControlTree (OO się wywala)

: śr kwie 17, 2013 9:34 am
autor: JackK
Dzięki za odpowiedź.
Załączam plik ODT oraz przykładowy plik XML, którym będzie uzupełniane drzewko.
Należy po wywołaniu makra ShowDialog_qH kliknąć na dialogu przycisk "Przeglądaj" i wybrać załączony plik TXT. By sprawdzić, że się OpenOffice wywala, trzeba jeszcze raz użyć "Przeglądaj".
Plik ODT w kolejnym poście, bo tutaj dodał mi się bez makr.

Pozdrawiam.

Re: Zmiana modelu ControlTree (OO się wywala)

: czw kwie 18, 2013 8:27 am
autor: JackK
Dodaję poprawiony dokument, bo poprzedni nie zawiera makr.