Zmiana modelu ControlTree (OO się wywala)
: wt kwie 16, 2013 12:39 pm
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: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.
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
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.