Seite 1 von 1
filepicker funktioniert unter win7 nicht mehr
Verfasst: Mo, 17.05.2010 23:02
von erikafuchs
Hallo ihr Lieben,
ich hoffe, Ihr könnt mir wieder mal helfen:
Ich habe ein (sehr umfangreiches) Makro geschrieben, mit dem meine Schüler Mathe üben müssen. Am Anfang müssen sie ihre Namen eingeben und dann einen Speicherort für ihre Datei suchen. Bei diesem Programmteil, in dem das Dateiauswahlfenster angezeigt wird, hat mir irgendwann mal jemand in diesem Forum geholfen. Unter XP geht das prima, unter win7 wird es nicht mehr ausgeführt (ohne Fehlermeldung). Hier der Code:
Code: Alles auswählen
Sub SpeichernUnter
Dim speicherDialog as Object
Dim datei, kPfad As String
Dim DialogTyp(0)
Dim arg()
Dim antwort
Dim args1(0) as new com.sun.star.beans.PropertyValue
kPfad = ThisComponent.URL
version=dSheet.getCellByPosition(6,1).string
testJahrg=dSheet.getCellByPosition(7,0).value
arg = Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION)
speicherDialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
With speicherDialog
.Initialize(arg())
.SetMultiselectionMode(False)
.setDisplayDirectory(ConvertToURL(kPfad()))
.setDefaultName(Speichername)
.SetTitle("Wähle den Ordner in dem du deine Datei speichern willst (Dateiname bitte nicht ändern)")
.SetValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_AUTOEXTENSION, 0, true)
End With
antwort = speicherDialog.execute()
If antwort = 1 Then
datei = speicherDialog.Files(0)
Thiscomponent.storeAsUrl(datei, args1())
End If
End Sub
Kann mir jemand sagen, was ich ändern kann oder wie ich oO unter win7 dazu bringe den "filepicker" (heißt der so?) anzuzeigen.
Viele Grüße
Pit
Re: filepicker funktioniert unter win7 nicht mehr
Verfasst: Di, 18.05.2010 19:40
von DPunch
Aloha
Versuch mal, ob es geht, wenn Du unter
Extras -> Optionen -> OpenOffice.org -> Allgemein
das Häkchen bei "OpenOffice.org-Dialoge verwenden" setzt.
Re: filepicker funktioniert unter win7 nicht mehr
Verfasst: Fr, 21.05.2010 17:06
von erikafuchs
Hurra, es geht! Vielen Dank. Ich hatte schon Ängste ich müsse in den Tiefen bohren.
Jetzt ist es so, dass hunderte von Schülern mit dem Programm arbeiten und immer mehr von ihnen Windows 7 installieren. Denen muss ich jetzt eine Gebrauchsanweisung schreiben - oder kann man diese Einstellung per Makro ändern?
Viele Grüße
Pit
PS.: Für meine Schüler war der "alte" Filepicker übersichtlicher, weil sie links ihren USB Stick oder ein Laufwerk wählen konnten. In Windows 7 habe ich mich noch nicht so eingearbeitet, hier muss man sich ja anscheinend Schritt für Schritt in der Ordnerstruktur zuerst zurück und dann wieder in den gewünschten Ordner hangeln - oder mache ich da etwas verkehrt?
Re: filepicker funktioniert unter win7 nicht mehr
Verfasst: Fr, 21.05.2010 17:45
von DPunch
Aloha
Wenn ich das richtig verstanden habe, funktioniert unter Windows Vista (und dann vermutlich auch unter Windows 7) der FolderPicker immer noch als Windows-Dialog.
Da ich noch mit XP arbeite, kann dazu nichts sagen, aber wenn dem so sein sollte, kannst Du ja einfach mit einem FolderPicker arbeiten, zumal der Dateiname ja sowieso nicht geändert werden soll - das wäre mit einem Folderpicker auch gar nicht mehr möglich.
Du musst halt mal schauen, ob Du, bzw eher Deine Schüler, mit dem Windows-FolderPicker-Dialog besser zurechtkommen als mit dem OpenOffice.org-FilePicker-Dialog.
Häkchen wieder weg bei OOo-Dialoge verwenden und das Makro mal ausführen:
Code: Alles auswählen
Sub FolderPickerTest
Dim speicherDialog as Object
speicherDialog = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
speicherDialog.execute()
End Sub
Re: filepicker funktioniert unter win7 nicht mehr
Verfasst: Fr, 21.05.2010 18:48
von erikafuchs
Hey. das sieht gut aus!
Kannst du mir dann auch noch mit dem store Befehl helfen, der funktioniert so jetzt nicht mehr? Meine Schüler geben beim Programmstart ihren Namen ein und die Datei soll dann "Rechentrainer Vorname Nachname.ods" heißen.Der Dateiname wird in einem anderen Programmteil mit:
Code: Alles auswählen
Speichername="Rechentrainer " & vorname & " " & nachname & ".ods"
erzeugt. So habe ich jetzt die Speicherroutine umgebaut:
Code: Alles auswählen
Sub SpeichernUnter
Dim speicherDialog as Object
Dim kPfad As String
Dim arg()
kPfad = ThisComponent.URL
arg = Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION)
speicherDialog = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
speicherDialog.execute()
Thiscomponent.storeAsUrl(datei, arg())
End Sub
Ich nehme an, ich muss jetzt noch ein Pfad angeben. Kannst du mir da nochmal helfen?
Grüße
Pit
Re: filepicker funktioniert unter win7 nicht mehr
Verfasst: Fr, 21.05.2010 19:46
von turtle47
Hallo Pit,
erikafuchs hat geschrieben:
Kann mir jemand sagen, was ich ändern kann oder wie ich oO unter win7 dazu bringe den "filepicker" (heißt der so?) anzuzeigen.
Gebe dem Dialog den "appendFilter" mit dann sollte der Speichern-Dialog auch unter WIN7 funktionieren:
Code: Alles auswählen
With speicherDialog
.Initialize(arg())
.appendFilter("OpenDocument Tabellendokument (.ods)", "*.ods")
....
Viel Erfolg.
Jürgen
Re: filepicker funktioniert unter win7 nicht mehr
Verfasst: Fr, 21.05.2010 22:25
von erikafuchs
Lieber DPunch,
wenn ich das richtig verstanden habe, dann gibt es zwei verschiedene "FilePicker" oder "Folderpicker", eines von Windows und eines von oO. So weit habe ich das ausprobiert. Ich kenne jetzt das von XP und oO, das von Win7 funktioniert wohl nicht wie gewünscht. Jetzt habe ich aber keine Ahnung wie ich den mit dem FolderPicker Dialog gewählten Pfad wieder auslese, mit dem Dateiname verbinde und in den Befehl Thiscomponent.storeAsUrl() einsetze.
Grüße
Pit
PS.: Woher wisst Ihr das alles? Wo kann man das Nachlesen?
Re: filepicker funktioniert unter win7 nicht mehr
Verfasst: Di, 25.05.2010 16:43
von DPunch
Aloha
Versuch am besten erstmal die Variante von turtle47 - ich habe wie gesagt kein Windows 7 und dementsprechend auch keine Ahnung von derartigen Kniffen.
Sollte sein Vorschlag wider Erwarten nicht das gewünschte Ergebnis bringen, versuch mal folgenden Code:
Code: Alles auswählen
Sub SpeichernUnter
Dim speicherDialog as Object
Dim oFileAccess as Object
Dim kPfad As String
Dim sFilename as String
Dim bSave as Boolean
If NOT thisComponent.hasLocation Then
Exit Sub
End If
If NOT Globalscope.BasicLibraries.isLibraryLoaded("Tools") Then
Globalscope.BasicLibraries.loadLibrary("Tools")
End If
speicherDialog = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
sFilename = FilenameOutOfPath(thisComponent.URL)
If speicherDialog.execute() = 1 Then
kPfad = speicherDialog.Directory
If Right(kPfad,1) = "/" Then
kPfad = kPfad & sFilename
Else
kPfad = kPfad & "/" & sFilename
End If
End If
bSave = True
oFileAccess = createUnoService( "com.sun.star.ucb.SimpleFileAccess" )
If oFileAccess.exists(kPfad) Then
If MsgBox("Datei existiert bereits" & Chr(13) & "Überschreiben?", 49, "Datei existiert bereits") = 2 Then
bSave = False
End If
End If
If bSave Then
Thiscomponent.storeasUrl(kPfad, Array())
End If
End Sub
Re: filepicker funktioniert unter win7 nicht mehr
Verfasst: Sa, 29.05.2010 13:55
von erikafuchs
turtle47 hat geschrieben:Hallo Pit,
Gebe dem Dialog den "appendFilter" mit dann sollte der Speichern-Dialog auch unter WIN7 funktionieren:
Lieber Jürgen,
das geht prima, danke!
Zunächst hat das nicht geklappt, da ich die Zeile mit dem FolderPicker statt dem FilePicker probiert habe und da klappt das nicht. Ansonsten hätte mir das mit dem FolderPicker, den ich bei DPunch neu kennengelernt habe, ja schon gut gefallen, weil da meine Schüler nicht den Dateinamen ändern können.
Vielen Dank
Pit
PS1.: Nochmal die Frage: Woher wisst ihr das alles, kann man das nachlesen oder muss man das mühsam ausprobieren?
PS2.: Entschuldigt, dass ich noch nicht früher reagiert habe, ich hatte ziemlich viel zu tun.