Hallo,
ich habe folgendes Problem:
in einem Dialog befinden sich eine Textbox und eine Befehlsschaltfläche.
Ein Klick auf die Befehlsschaltfläche startet einen Verzeichnisauswahl-Dialog. Nach Auswahl des Pfades soll das Ergebnis in der Textbox dargestellt werden.
Folgende Prozedur ist an das Auslöse-Ereignis der Befehlsschaltfläche gebunden:
[code]Sub DiaTemplatePath
Dim sTemplatePath As String
Dim oDialog As Object
Dim oTemplateControl As Object
Dim oFolderPicker As Object
DialogLibraries.LoadLibrary("Standard")
oDialog = CreateUnoDialog(DialogLibraries.Standard.diaSettings)
oTemplateControl = oDialog.GetControl("txtTemplate")
oFolderPicker = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
oFolderPicker.execute
sTemplatePath = ConvertFromUrl(oFolderPicker.directory)
msgbox(sTemplatePath) 'Pfad ist vorhanden und wird ausgegeben
'1.Versuch:
oTemplateControl.Model.Text = sTemplatePath
msgbox(oTemplateControl.text) 'Pfad wird ausgegeben, in der Textbox ist nichts zu sehen
'2.Versuch:
oTemplateControl.text = sTemplatePath
msgbox(oTemplateControl.text) 'Pfad wird ausgegeben, in der Textbox ist nichts zu sehen
'3.Versuch
oTemplateControl.SetText(sTemplatePath)
msgbox(oTemplateControl.text) 'Pfad wird ausgegeben, in der Textbox ist nichts zu sehen
End Sub
[/code]
Nun das Problem:
Der Text wird nicht in der Textbox dargestellt, kann aber wie gezeigt abgefragt werden. Nur zu Sehen ist nichts.
Dialog, Textbox befüllen
Moderator: Moderatoren
-
- **
- Beiträge: 37
- Registriert: Mo, 13.02.2006 23:55
- Wohnort: Deutschland
Hallöle,
ich habe mal den wesentlichen Teil Deines Codes in meinen Bastel-Dialog eingefügt, den ich immer benutze um Sachen zu versuchen, spielen sozusagen.
Ich habe ein einfaches Textfeld (Text1) im Dialog. (oDlg ist mein Dialog)
Die eingefügten Zeilen:
dim oFolderPicker as object
dim sTemplatePath as string
oFolderPicker = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
oFolderPicker.execute
sTemplatePath = ConvertFromUrl(oFolderPicker.directory)
oDlg.getControl("Text1").model.text = sTemplatePath
Läuft absolut prima! Da ich "createUnoService("com.sun.star.ui.dialogs.FolderPicker")" bisher noch nicht kannte, habe ich gleich noch was gelernt - Danke
So - und nun eine Frage, aber bitte nicht falsch verstehen, ich möchte Dich keinesfalls ärgern, auch wenn es fast so klingt, aber:
Hast Du im Eigenschaftendialog zum Textfeld unter Schrift/Schrifteffekt evtl. versehentlich die Textfarbe auf Weiß gestellt?
Habe ich nämlich auch schon mal gemacht, sollte eigentlich rötlich sein, einfach daneben geklickt und jede Menge graue Haare bekommen.
Gruß
Ralf
[edit]Ach ja, bei mir läuft OOo auf XP. Könnte das bei Linux anders sein?[/edit]
ich habe mal den wesentlichen Teil Deines Codes in meinen Bastel-Dialog eingefügt, den ich immer benutze um Sachen zu versuchen, spielen sozusagen.
Ich habe ein einfaches Textfeld (Text1) im Dialog. (oDlg ist mein Dialog)
Die eingefügten Zeilen:
dim oFolderPicker as object
dim sTemplatePath as string
oFolderPicker = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
oFolderPicker.execute
sTemplatePath = ConvertFromUrl(oFolderPicker.directory)
oDlg.getControl("Text1").model.text = sTemplatePath
Läuft absolut prima! Da ich "createUnoService("com.sun.star.ui.dialogs.FolderPicker")" bisher noch nicht kannte, habe ich gleich noch was gelernt - Danke

So - und nun eine Frage, aber bitte nicht falsch verstehen, ich möchte Dich keinesfalls ärgern, auch wenn es fast so klingt, aber:
Hast Du im Eigenschaftendialog zum Textfeld unter Schrift/Schrifteffekt evtl. versehentlich die Textfarbe auf Weiß gestellt?
Habe ich nämlich auch schon mal gemacht, sollte eigentlich rötlich sein, einfach daneben geklickt und jede Menge graue Haare bekommen.
Gruß
Ralf
[edit]Ach ja, bei mir läuft OOo auf XP. Könnte das bei Linux anders sein?[/edit]
Hey rbanerjee,
also, dein Code ist korrekt und sollte in allen Fällen funktionieren
Warum bei dir nichts zu sehen ist - keine Ahnung. Vielleicht stimmt der Tipp von Ralf, vielleicht ist der Text zu lang und umgebrochen, vielleicht, vielleicht....
Gib uns noch mal deine Systemumgebugsvariablen an: Betriebssystem, OOo Version, und was dir sonst noch so einfällt.
Notfalls musst du uns deine Datei mal zur Verfügung stellen - vielleicht finden wir dann den Fehler?
Gruss
Thomas
also, dein Code ist korrekt und sollte in allen Fällen funktionieren

Warum bei dir nichts zu sehen ist - keine Ahnung. Vielleicht stimmt der Tipp von Ralf, vielleicht ist der Text zu lang und umgebrochen, vielleicht, vielleicht....
Gib uns noch mal deine Systemumgebugsvariablen an: Betriebssystem, OOo Version, und was dir sonst noch so einfällt.
Notfalls musst du uns deine Datei mal zur Verfügung stellen - vielleicht finden wir dann den Fehler?
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Der Code ist nicht OK.
Das Makro ist an einen Button des Dialoges verknüpft, in dem Makro erzeugt er aber ein neues Objekt für einen Dialog. In diesem setzt er den Text.
Er muß das Dialogobjekt von außerhalb des Makros verwenden.
mfg
Michael
Das Makro ist an einen Button des Dialoges verknüpft, in dem Makro erzeugt er aber ein neues Objekt für einen Dialog. In diesem setzt er den Text.
Er muß das Dialogobjekt von außerhalb des Makros verwenden.
Code: Alles auswählen
Public odialog as object
Sub StartDialog
DialogLibraries.LoadLibrary("Standard")
oDialog = CreateUnoDialog(DialogLibraries.Standard.diaSettings)
odialog.execute
end sub
Sub DiaTemplatePath
Dim sTemplatePath As String
Dim oTemplateControl As Object
Dim oFolderPicker As Object
oTemplateControl = oDialog.GetControl("txtTemplate")
oFolderPicker = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
oFolderPicker.execute
sTemplatePath = ConvertFromUrl(oFolderPicker.directory)
msgbox(sTemplatePath) 'Pfad ist vorhanden und wird ausgegeben
'1.Versuch:
oTemplateControl.Model.Text = sTemplatePath
End Sub
mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
FAQ zu Starbasic -> http://www.starbasicfaq.de
-
- **
- Beiträge: 37
- Registriert: Mo, 13.02.2006 23:55
- Wohnort: Deutschland
ykcim hat geschrieben:Der Code ist nicht OK.
Das Makro ist an einen Button des Dialoges verknüpft, in dem Makro erzeugt er aber ein neues Objekt für einen Dialog. In diesem setzt er den Text.
Er muß das Dialogobjekt von außerhalb des Makros verwenden.
...

Du hast Recht. Ich hatte den Code (ohne Button !) nur in meiner 'Sub Main' versucht und da war's OK.
rbanerjee erzeugt in der "Button-Sub" offenkundig einen neuen Dialog ...
Das hab ich mal versucht nachzubauen. Ist sicher nicht das, was rbanerjee wollte und ist vermutlich auch Quatsch. Aber es verleitet mich doch zu der Frage: "Warum geht das eigentlich nicht?"
Code: Alles auswählen
dim oDlg as object
'dim oDlgBeschreibung as object
sub Main
dim oFolderPicker as object
dim sTemplatePath as string
'oDlgBeschreibung = DialogLibraries.RNI_TEST.Dialog1
'oDlg = CreateUnoDialog(oDlgBeschreibung)
oDlg = CreateUnoDialog(DialogLibraries.Test.Dialog_Test)
oFolderPicker = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
oFolderPicker.execute
sTemplatePath = ConvertFromUrl(oFolderPicker.directory)
oDlg.getControl("Text1").model.text = sTemplatePath
'oDlg.getControl("Box1").AddItem(sTemplatePath, 0)
oDlg.execute()
End Sub
sub cmd1
Dim sTemplatePath As String
Dim oDialog As Object
Dim oTemplateControl As Object
Dim oFolderPicker As Object
DialogLibraries.LoadLibrary("Standard")
oDialog = CreateUnoDialog(DialogLibraries.Standard.diaSettings)
oTemplateControl = oDialog.GetControl("txtTemplate")
oFolderPicker = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
oFolderPicker.execute
sTemplatePath = ConvertFromUrl(oFolderPicker.directory)
oTemplateControl.model.text = sTemplatePath
msgbox(sTemplatePath) 'Pfad ist vorhanden und wird ausgegeben
oDialog.execute()
end sub
und der 'folderpicker' gestartet und das Ergebnis in die Vari sTemplatePath verfrachtet; dann in das Textfeld "Text1" des Dialogs geschoben.
Nun Dialog anzeigen und das Textfeld ist gefüllt. Pima.

Der im Dialog 'oDlg' enthaltene Button 'cmd1' startet nun bei Betätigung die 'Sub cmd1' .
Hier passiert eigentlich absolut genau das Gleiche, 2. Dialog erschaffen ....
Das in diesem 2. Dialog enthaltene Textfeld 'txtTemplate' ist nachdem dieser 2. Dialog angezeigt wird (oDialog.execute()) absolut LEER !
2 x der gleiche Code - einmal in der Sub Main für den Dialog oDlg
und ein weiteres Mal in der Sub cmd1 für den weiteren Dialog oDialog.
Im 2. Dialog funzt der Code nicht. Und Warum?
Liegt das evtl. daran, dass OOo nicht 2 Dialoge gleichzeitig verwalten kann? Oder weil Dialoge in OOo 'modal' sind?
Eine Fehlermeldung gibt es jedenfalls nicht.
Gruß
Ralf
Kann ich nicht nachvollziehen. Bei mir tritt mit Deinem Code kein Fehler auf.
OO 2.0.3
mfg
Michael
OO 2.0.3
mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
FAQ zu Starbasic -> http://www.starbasicfaq.de