dialog der eine datei einliest wird nicht ausgeführt

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: dialog der eine datei einliest wird nicht ausgeführt

von ykcim » Mi, 15.02.2006 14:03

Sorry, ich dachte Du würdest mit dem kurzen Hinweis klarkommen.

Code: Alles auswählen

    odoc=stardesktop.currentComponent
    odoc.close(true)   
    
    Jetzt Dein Dialog....

    arg(0).name = "FilterName"
    arg(0).value = "dBase"
    arg(1).name = "FilterOptions"
    arg(1).value = "0"  
    odoc=starDesktop.loadComponentFromURL(sDatei, "_blank", 0, arg())
Wenn das Makro in OO steht und nicht im Dokument sollte es gehen.

mfg
Michael

von kannenklaus » Mi, 15.02.2006 09:02

hallo michael

zuallerst danke für deinen tipp.
odoc=load.
odoc kann weder als odoc=loadcomponentURL noch als odoc.oadcomponentURL übergeben werden. :?

wo wäre odoc.close(true) anzuwenden? in dem makro das den dialog aufruft?

freue mich auf deine anwort.

grüsse

klaus

von ykcim » Di, 14.02.2006 09:47

Wenn du auf "_self" verzichtest und das aktuelle Dokument selber schliesst und dann mit odoc=load... die dbase-datei öffnest, läuft dein Makro.

mfg
Michael

von kannenklaus » Mo, 13.02.2006 20:41

hallo thomas,
warum willst du eigentlich die neue Datei in den gleichen Frame einlesen?
weil man so die gewünschte funktionalität in einem dialog unterbringen kann. schade, dass sich die controller im weg sind.

danke für deinen hinweis.

beste grüße

klaus

von Toxitom » Mo, 13.02.2006 19:36

Hallo Klaus,

warum willst du eigentlich die neue Datei in den gleichen Frame einlesen?

Das ist ja auch die Frage im anderen Thread. Wenn ich mir diesen Code hier betrachte, dann gibt es einfach Kollisionen zwischen den jeweiligen Controllern.
Wenn du über eine Schaltfläche das Makro "Sub SuErImpDBF " startest, so hast du hier eine Umgebung (Controller). In dem Makro rufst du eine anderes auf - ok. Solange wartet jetzt dieses Makro, bis der Rücksprung erfolgt - und arbeitet dann weiter - in deinem Fall beendet es sich dann erst!!
Im neunen Makro aber willst du ein neues Dokument mit einem eigenen Controller in deine Umgebung laden - und somit den alten Controller - der ja noch auf Signale wartet - rausschmeissen.

Das geht schief.....

Anders sieht es aus, wenn du das Marko über die eigene Basic-Umgebung startest - dann gibt es keine Controllerwidersprüche.

Also, ich denke, da kannst du nur ein neues Dokument laden und abschliessend das aktuelle schliessen.

Gruss
Thomas

dialog der eine datei einliest wird nicht ausgeführt

von kannenklaus » Mo, 13.02.2006 17:08

hallo

schon wieder habe ich ein kleines problem. ein von mir entworfener dialog hat eine schaltfläche zum öffnen einer datei mit der bindung an das entsprechende makro.

das problem ist, dass entweder der dialog stehen bleibt und kein import stattfindet oder bei oDlg.dispose() der ladevorgang gestartet wird, das makro aber dann mit haut und haaren abschmiert (also mit openoffice).

wird das makro alleine über extras>>makros>>makro ausführen gestartet klappt alles.

der mit der schaltfläche verknüpfte code lautet wie folgt:

Code: Alles auswählen

Sub SuErImpDBF

freue mich auf eine antwort

beste grüße

klaus

	call [mdlImport].ImpDbfInAktivesDokument
'	oDlg.dispose()


End sub
der code ImpDbfInAktivesDokument sieht so aus:

Code: Alles auswählen

Sub ImpDbfInAktivesDokument
	Dim vDateiDialog 
	Dim vDateiZugang
	dim i as integer
	dim sPfad as string	 		'Startverezichnis der Dialoge
	Dim sDatei as String        'nimmt den Pfad und den Dateinamen auf
	Dim sFrame as String
	

	vDateiDialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")'Datei Öffnen-Dialog wird erstellt
	vDateiZugang = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")'Dateizugang wird erstellt
'	sFrame = "lbp_"
'hier wird der Standardpfad festgelegt und in die URL-Schreibweise umgewandelt	
	sPfad = ConvertToUrl("x:\446\GIS\pfa21\gauss\lbp_mass")
	
'prüft ob der angegebene Pfad vorhanden ist.	
	if vDateiZugang.Exists(sPfad) Then
	   vDateiDialog.SetDisplayDirectory(sPfad)
	else
	msgbox ("Der gewählte Pfadname existiert nicht!" + Chr(13)+"Die Routine wird beendet.",0+64,"dBase-Import Fehler")
	exit sub
	End if
	
'Titel des Öffnen-Dialogs wird festgelegt
	vDateiDialog.setTitle("B+P :::dBase-Import:::")
	
'Öffnen Dialog wird auf dBase gestellt
	vDateiDialog.appendfilter("dBase","*.dbf")

'der Variablen i wird der Dateidialog zugewiesen und die if-Abfrage vorbereitet
	i = vDateiDialog.Execute()

'der Variablen sDatei wird der kpl. Dateipfad übergeben	
	If i = 1  then
	  sDatei = vDateiDialog.Files(0)
	end if	
	vDateiDialog.dispose()
	
'Hier findet der eigentliche Import statt
'arg (1)=Array mit 2 Argumenten definieren für den Filter und die Filteroptionen
Dim oFrame as Object
Dim arg(1) as new com.sun.star.beans.PropertyValue
	arg(0).name = "FilterName" 
	arg(0).value = "dBase" 
	arg(1).name = "FilterOptions"
	arg(1).value = "0"   'System Character Set Umlaute werden richtig wiedergegeben
	oFrame = StarDesktop.CurrentComponent.CurrentController.Frame 
'if-Abfrage prüft, ob ein Dateiname übergeben worden ist.
	if vDateiZugang.Exists(sDatei) Then
	oFrame.loadComponentFromURL(sDatei, "_self", 0, arg())
	else
		msgbox ("Es wurde keine dbf-Datei ausgewählt!"+ Chr(13)+"Die Routine wird beendet.",0+64,"dBase-Import Fehler")
		exit sub
	end if
End Sub

Nach oben