Beim Sichern Warnungsfenster verhindern

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: Beim Sichern Warnungsfenster verhindern

von Toxitom » Di, 14.12.2004 12:52

Hey Hago,
Woher erfährt man eigentlich solche Details, wenn nicht im Forum?
Tia, gute Frage... zum Beispiel in meinem Buch, dass hoffentlich im April zur 2.0 auch erscheinen wird - OOo Basic :wink:
Ansosnten - selbst ausprobieren, Foren befragen (gibt auch englischsprachige), API lesen, Kommunikation mit anderen Community-Mitgliedern,
Workshop des Projektes besuchen (z.B. 5./6. 2. 05 im Linuxhotel in Essen) und so weiter. Ist viel Arbeit und Erfahrung...

Aber dein Weg ist schon gut.

Gruss
Thomas

von Hago » Di, 14.12.2004 12:35

Hallo Thomas,

danke, klappt.

Woher erfährt man eigentlich solche Details, wenn nicht im Forum?
Ich habe schon erst in der DevelopersGuide und auf einigen deutschen Hilfeseiten unter "print" und "close" nachgeschaut, aber nichts gefunden.

Gruß, Hago

von Toxitom » Di, 14.12.2004 11:22

Hey Hago,
Kann mir jemand sagen, was ich ändern muss?
Die Problematiik liegt in der Verwendung des Print-Befehls und des Close Befehls. Der Printbefehl bewirkt eine neue funktion, die Zeit benötigt. Der Programminterpreter wartet aber nicht, bis die Druckfunktion abgeschlossen ist, sondern geht sofort zur nächsten Zeile um den dort folgenden Code auszuführen. Da aber der Controller noch benötigt wird (zum Drucken) kann das Dokument - noch - nicht geschlossen werden. Der Befehl bewirkt eine Fehlermeldung, der Interpreter geht zur nächsten Zeile.
Die Lösung: Tia, entweder eine Wait() Zeile einbauen, oder besser, du gibst eine zusätzliche Option dem Print-Befehl, dass er erst die Kontrolle an den Interpreter zurückgibt, wenn er fertig ist. Also so etwas wie

Code: Alles auswählen

args4(3).name = "Wait"
args4(3) = true
Du musst natürlich den Array entsprechend anpassen. Jetzt wartet der Interpreter, bis der Drucker fertig gedruckt hat und führt erst dann die nächste Zeile - also den Close befehl - aus. Jetzt sollte es funktionieren.

Gruss
Thomas

von Hago » Di, 14.12.2004 09:45

Hallo,

ich habe jetzt versucht "dokument.close(false)" nach print() zu benützen.
Seltsamerweise funktioniert der Befehl da nicht.

Code: Alles auswählen

sub Druck

dim document   as object
dim dispatcher as object

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$D$4"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())

Dok   = ThisComponent
Controller = Dok.CurrentController 
Blatt = Controller.ActiveSheet 
Zelle = Blatt.getCellRangeByName("$D$3") 
Wert = Zelle.Value 

dim args3(2) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Copies"
args3(0).Value = Wert
args3(1).Name = "RangeText"
args3(1).Value = "1-2"
args3(2).Name = "Collate"
args3(2).Value = false

Dok.print(args3())
Dok.close(false)
Erst kommt eine Fehlermeldung:

BASIC-Laufzeitfehler.
Es ist eine Exception aufgetreten
Type:com.sun.star.util.CloseVetoException
Message: Controller disagree ...

dann wird gedruckt, aber geschlossen wird nicht.

Übrigens: den Dispatcher benütze ich, weil sonst nach dem Eintrag in das Tabellenfeld D3 der Fokus auf dem Tabellenfeld bleibt und der Wert nicht zur Verfügung steht.

Kann mir jemand sagen, was ich ändern muss?

Gruss, Hago

von Hago » Mo, 13.12.2004 13:46

Hallo Charly,

danke, es funktioniert.

Das war ja einfach.
Ich habe es mir viel trickreicher vorgestellt.

Gruß, Hago

von Charly » Mo, 13.12.2004 13:22

Hallo!

Jetzt sollte sich das OO-Fenster nur noch selbst schließen.
Gibt es da 'ne Möglichkeit?
Versuch es mit dem Befehl:

Code: Alles auswählen

dokument.storeAsURL(sUrl1$, args7()) 
Shell.......
dokument.close(false)
gruß
Charly

von Hago » Mo, 13.12.2004 10:17

...jedoch wird der anschließende Shell- Aufruf nicht mehr ausgeführt...
Stimmt nicht, alles klappt - war nur ein Tippfehler.

Jetzt sollte sich das OO-Fenster nur noch selbst schließen.
Gibt es da 'ne Möglichkeit?

Hago

von Hago » Mo, 13.12.2004 09:39

Hallo Thomas,

danke,
so ähnlich wie Du schreibst, habe ich es inzwischen gemacht (ich habe eine zwar kleine aber verständliche Doku gefunden, sogar auf deutsch).

Seit der Dispatcher da nicht mehr mitmischt, wird gespeichert und die Fehlermeldung kommt nicht, jedoch wird der anschließende Shell- Aufruf nicht mehr ausgeführt, was bisher funktioniert hat.
Woran könnte das liegen?

So sieht das jetzt aus:

dokument.storeAsURL(sUrl1$, args7()) 'bis hier läuft alles glatt
Shell("C:\perl\bin\perl.exe ftp-upload-CSV.pl",1)

Hago

von Toxitom » Mo, 13.12.2004 08:28

Hallo Hago,
In der Hilfe habe ich leider nirgends etwas Erhellendes über mögliche Parameter von "Save" gefunden.
Gibt es da eine Möglichkeit?
Ja, die gibt es schon. Allerdings nicht im dispacher-Mode - oder vielleicht dort auch, das weis ich aber nicht.
Üblicherweise speicherst du ein Dokument im Basic-Code direkt, mit der Methode storeAsUrl( sUrl, aFileProperties()). Also Beispiel:

Code: Alles auswählen

...
Dim oDoc as Object, sURL as String
Dim aFileProperties() as New com.sun.star.beans.propertyValue
oDoc = ThisComponent   ' oder wie du es eben sonst so initalisiert
.... hier könntest du noch Eigenschaften zum Speichern definieren
sUrl = "file:///c:/irgend/ein/Pfad/test.sxc"
oDoc.storeAsUrl( sUrl, aFileProperties())
In den FileProperties gibst du zum Beispiel die Filter an und was es sonst noch so gibt.
Zum Einlesen solltest du dir das folgende Dokument zu Gemühte ziehen: http://docs.sun.com/db/doc/817-3924?l=de, ist das Sun Programmierhandbuch.
Gruss
Thomas

Beim Sichern Warnungsfenster verhindern

von Hago » So, 12.12.2004 21:30

Hallo,

ich habe eine*.sxc-Datei.
Mit der wird per Makro so einiges angestellt. Es wird auch eine neue Tabelle hergestellt, in die Teile anderer eingefügt werden. Diese wird dann irgendwann als *.csv-Datei gespeichert.
Just in diesem Moment poppt immer ein kleines Fenster hoch und warnt mich, daß aber nur die aktuelle Tabelle gespeichert wurde.
Solange ich nicht auf "OK" geklickt habe, geht der Ablauf nicht weiter.

Das stört sehr. Deshalb hoffe ich, daß es eine Möglichkeit gibt, dieses Fenster zu unterdrücken.

Die Stelle, an der gesichert wird, sieht jetzt so aus:
...............
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args7())
...............

In der Hilfe habe ich leider nirgends etwas Erhellendes über mögliche Parameter von "Save" gefunden.

Gibt es da eine Möglichkeit?

Gruß, Hago

Nach oben