Seite 1 von 1

[erledigt]FolderPicker im Dialog den Abbrechen-Button abfrag

Verfasst: Di, 19.11.2013 10:38
von balu
Hallo liebe Gemeinde,

ich versteh und seh nix mehr. Krieg noch nen Rappelanfall.

In einem ganz simpel gehaltenen Dialog habe ich einen Button eingefügt, der per Knopfdruck den FolderPicker-Dialog aufruft, also den Dialog zur Vezeichnisauswahl.

Theoretisch funktioniert das auch. Aber da ich den Abbrechen-Button im FolderPicker-Dialog abfragen möchte, taucht da jetzt ein Problem auf. Doch zu erstmal der dementsprechende Code für den FolderPicker.

Code: Alles auswählen

Sub ZielPfadAuswaehlen

	FolderDialog = createunoservice("com.sun.star.ui.dialogs.FolderPicker")
	FolderDialog.execute

		if FolderDialog.execute = 0 then exit sub

		oZielPfad.Model.Label = "Zielpfad ist gewählt"
		oZielPfad.Enable = False	
End Sub
Wenn ich jetzt also den Abbrechen-Button drücke, dann verschwindet für den Bruchteil einer Sekunde der FolderPicker-Dialog um erneut zu erscheinen. Und erst beim zweiten druck auf den Button verschwindet der FolderPicker-Dialog. Das gleiche gilt auch für den Auswählen-Button.

Ohne die IF-Abfrage habe ich nicht das Problem. Ich versteh also nicht was da schief läuft. Denn ja, ich hatte die Suchfunktion bemüht und auch Beispiele mit so einer IF-Abfrage gefunden, die dort auch funktionieren.

Hier mal der gesamte Code.

Code: Alles auswählen

	Public oHauptDlg as Object, oZielPfad as Object, FolderDialog as Object
'
'##########################################################################
'
Sub HauptDialog	

	If NOT Globalscope.BasicLibraries.isLibraryLoaded("Tools") Then
		Globalscope.BasicLibraries.loadLibrary("Tools")
	End If
       
	DialogLibraries.loadLibrary("Standard")
	oHauptDlg = CreateUnoDialog(DialogLibraries.Standard.DlgHaupt)

	oZielPfad = oHauptDlg.getControl("CommandButton1")
	
	oHauptDlg.Model.Step = 1
	oHauptDlg.execute
end Sub
'
'##########################################################################
'
Sub ZielPfadAuswaehlen

	FolderDialog = createunoservice("com.sun.star.ui.dialogs.FolderPicker")
	FolderDialog.execute

		if FolderDialog.execute = 0 then 'exit sub
			goto raus
		end if
		raus:
		oZielPfad.Model.Label = "Zielpfad ist gewählt"
		oZielPfad.Enable = False	
End Sub
Keine Angst das ihr etwas nachbauen müsst, denn im Anhang ist die Beispieldatei.

Jetzt ist da aber noch ein Problem im "Hauptdialog" welches mit dem Button für den FolderPicker zu tun hat. Denn hin und wieder funktioniert dieser nicht, soll heißen, beim drücken des Buttons geschieht gar nichts. Erst wenn ich die Datei neu Lade funktioniert er wieder. Ist auch komisch. Da ich mir jetzt nicht sicher bin ob beide Probleme irgendwie zusammenhängen, hab ich mir die Frechheit erlaubt und das noch mit hier rein genommen. Wenn es sein muss, mach ich deswegen auch noch einen weiteren Thread auf.


Ich frage jetzt Euch
-> Warum verschwindet der FolderPicker-Dialog nicht beim ersten druck auf den Button?
-> Wie müsste die IF-Abfrage umgeschrieben werden, damit es wie gewünscht funktioniert?
-> Wie könnte ich noch den Status des Abbrechen-Button abfragen? Viele Möglichkeiten habe ich weder mit xray, noch mit der Suchfunktion hier gefunden.
-> Hängt mein zweites Problem mit dem ersten irgendwie zusammen?
-> Könnt ihr mir überhaupt helfen?

Ach ja, beinahe vergessen.
WinXP
OOo 3.2.1 & 3.3.0
AOO 4.0.1
In allen genannten Office Versionen das selbe Problem.



Gruß
balu

Re: FolderPicker im Dialog den Abbrechen-Button abfragen.

Verfasst: Di, 19.11.2013 10:59
von Karolus
Hallo

Du führst FolderDialog.execute zweimal hintereinander aus:

Code: Alles auswählen

   FolderDialog.execute ' das erste mal

      if FolderDialog.execute = 0 then exit sub' das zweite mal

mach das besser so:

Code: Alles auswählen

  dial = FolderDialog.execute

      if dial = 0 then exit sub
Karolus

Re: FolderPicker im Dialog den Abbrechen-Button abfragen.

Verfasst: Di, 19.11.2013 11:17
von balu
Hallo Karolus,
Du führst FolderDialog.execute zweimal hintereinander aus:
Ja siehste, hatte ich doch Recht gehabt:
balu hat geschrieben: ich versteh und seh nix mehr.
Und zwar mit beiden, sehen und verstehen.

Ich hatte in einer gefundenen Beispieldatei die Bäume vor lauter Wald nicht mehr gesehen. Denn die Lösung stand da drin, nur ich war einfach zu Blind um es zu sehen. Peinlich, peinlich.

Dein Vorschlag lässt sich auch noch etwas verkürzen. Und somit sieht die betroffene Sub wie folgt aus.

Code: Alles auswählen

Sub ZielPfadAuswaehlen

	FolderDialog = createunoservice("com.sun.star.ui.dialogs.FolderPicker")
      
		if FolderDialog.execute = 0 then exit sub

		oZielPfad.Model.Label = "Zielpfad ist gewählt"
		oZielPfad.Enable = False	
End Sub
Ich Danke dir vielmals das Du mir die Augen wieder geöffnet hast :D.



Gruß
balu

Re: FolderPicker im Dialog den Abbrechen-Button abfragen.

Verfasst: Mi, 20.11.2013 10:39
von balu
Ergänzung zu der vorgenomenen Änderung.
balu hat geschrieben: Jetzt ist da aber noch ein Problem im "Hauptdialog" welches mit dem Button für den FolderPicker zu tun hat. Denn hin und wieder funktioniert dieser nicht
Und das hat sich jetzt mit der Änderung auch erledigt, er reagiert wieder sofort. Eigentlich ganz logisch, wenn man es weiß und den Fehler kennt. Denn so bald das Makro gestartet wird, wird es ja überprüft ob so weit alles richtig ist. Und dabei stieß es auf das doppelte Ausführen des FolderPicker-Dialog, welches dann zum Problem wurde. So im groben und ganzen.



Gruß
balu