Datei automatisch schließen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Ursula
*
Beiträge: 14
Registriert: Fr, 10.02.2006 10:50

Datei automatisch schließen

Beitrag von Ursula »

Meine Bitte um Hilfe an alle, die sich auskennen:

ich habe in Writer so eine Art Stichwortverzeichnis angelegt. Und zwar auf 2 Dateien: auf einer ist das Alphabet, auf der anderen pro Buchstaben ein eigenes Dokument.
Diese habe ich verlinkt. Wenn ich also im Alphabet auf "A" klicke, komme ich auf die Seite mit den Stichworten zu A. Am Ende jeder Seite habe ich "zurück zum Alphabet" verlinkt.
Nun hätte ich gerne, dass sich die Seiten jeweils beim "zurück..." automatisch schließen und ich sie nicht am Schluß alle manuell schließen muss.
Ist das möglich? Und wenn ja, wie geht das?

Im Writer-Forum habe ich folgenden Tipp bekommen:

"Du wirst ein Makro dazu brauchen. Frage mal im Baseic-Forum nach."

Leider kenne ich mich mit Makros überhaupt nicht aus. Kann mir jemand helfen?

Vielen Dank!
Ursula
€uro
**
Beiträge: 44
Registriert: Do, 12.04.2007 16:33
Kontaktdaten:

Beitrag von €uro »

hi
die leute im writer forum meinen damit, dass du im OO Basic und Java
nachgucken sollst, hier der link: viewforum.php?f=18
Ursula
*
Beiträge: 14
Registriert: Fr, 10.02.2006 10:50

Beitrag von Ursula »

Danke, €uro,
habe den Rat befolgt. Leider verstehe ich meistens nur "Bahnhof" und viele der angegebenen Links sind in Englisch. Aber: ich bin bei dem link http://www.dannenhoefer.de auf folgendes gestoßen und glaube, das das in die richtige Richtung führt:

"6.1.3 Wie kann man Dokumente schließen?

Zum Schließen von Dokumenten steht die Methode close zur Verfügung. Diese Methode hat nur einen Paramter: true/false. Dieser Parameter bestimmt, ob eine vorhandene Datei die Möglichkeit hat den Schließvorgang zu unterbrechen. Das könnte dann nützlich sein wenn das zu schließenende Dokument zum Beispiel noch eigene Prozesse ausführt. Der Paramter true/false muß seit einem Servicepack angegeben werden.
Dier Methode close() kann nicht auf eine Änderung des Dokumentes reagieren. Das Dokument wird ohne Änderung geschlossen. Möchte man dies erreichen, muß man vorher das Dokument auf Änderungen prüfen.
Die Änderung eines Dokumentes wird in der Propertie modified gespeichert. Die Abfrage erfolgt über ismodified().


sub closedok
odoc=thisComponent
checkclose=odoc.ismodified()
if checkclose=false then
odoc.close(false)
else
msgbox "Dokument wurde geändert"
end if
end sub

Um das auch richtig zu kapieren, habe ich mir das Buch über Makros von Galileopress bestellt.
Mal schauen, wieviel ich davon verstehe. Wenn ich Hilfe brauche, melde ich mich wieder.

Danke und viele Grüße
€uro
**
Beiträge: 44
Registriert: Do, 12.04.2007 16:33
Kontaktdaten:

Beitrag von €uro »

habe hier nochmal was gefunden aber ich glaube das führt nur teilweiße zum ziel : http://de.openoffice.org/servlets/ReadM ... sgNo=21500
Ursula
*
Beiträge: 14
Registriert: Fr, 10.02.2006 10:50

Beitrag von Ursula »

Hallo €uro,
danke für den Link. So wirklich kann ich allerdings noch nichts damit anfangen. Die Sache mit der Frage nach Änderungen speichern beschäftigt mich aber bei meinem Vorhaben auch. Es ist nämlich so:
Mein Stichwortverzeichnis ist für die, die es nutzen, schreibgeschützt. Nur einige werden Änderungen darin vornehmen (dazu heben sie einfach den Schreibschutz kurzzeitig auf! Ich weiss, das ist nicht sehr professionell :). Der Grund ist ganz einfach der, dass die Mehrzahl der Nutzer nur sehr geringe Computerkenntnisse hat und dann aus Versehen rucki zucki irgendwas ändert oder löscht, was weniger gut wäre.
Mein Makro muss also folgendes veranlassen:
Beim Ausführen des Hyperlinks "zurück zum Alphabet", soll sich das Dokument automatisch schließen, ohne nach "Änderungen speichern" zu fragen, wenn der Schreibschutz besteht. Ist der Schreibschutz allerdings aufgehoben, dann soll vor dem Schließen die Frage "Änderungen speichern?" gestellt werden.
Ja, das muss ich nun nur irgendwie in Programmiersprache übersetzen und dann in mein Stichwortverzeichnis einbauen. (Mein bestelltes Buch ist noch nicht da!)

Schöne Grüße
Ursula
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Beitrag von turtle47 »

Hallo Ursula,

ich weis zwar nicht, welchen Inhalt Deine Texte haben, aber wenn es sich um
einfachen Inhalt geht dann würde ich das ganze wie so eine Art Internetseite
aufbauen im HTML-Format. Das kannst Du im Writer auch so abspeichern.

Das hat den Vorteil, dass die Navigation viel einfacher ist und Du ganz
ohne Makros auskommst. Außerdem können die Anwender die Seiten
nicht ganz so einfach ändern und man kann die Dokumente auf jedem
Computer ansehen bei dem ein Internetbrowser installiert ist.

Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Ursula
*
Beiträge: 14
Registriert: Fr, 10.02.2006 10:50

Beitrag von Ursula »

Hm, danke Jürgen für den Hinweis!

da muss ich mich nur erst mal schlau machen, was den Aufbau im HTML-Format angeht. Hab sowas noch nie gemacht.
Ein Pluspunkt ist sicher, dass keine Makros benötigt werden (das Buch über Makros von GalileoPress hab ich inzwischen und finde es ist sehr schwer zu verstehen).
Dass es auch nicht so leicht ist, aus Versehen Änderungen vorzunehmen, ist ein weiteres Plus.
Übrigens: alle Anwender benützen nur einen Computer.
Das Stichwortverzeichnis ist für unsere kirchliche Info-Stelle und gibt Interessierten Informationen aus dem kirchlichen Bereich. Da steht dann z.B. unter "C": Caritas, die Adresse etc., wobei die Webadresse gleich mit der Homepage der Caritas verlinkt ist. Oder unter "K": Kircheneintritt bzw. -austritt steht, wo und wie das vonstatten geht.
Da fast 30 Ehrenamtliche mitarbeiten, ist es nicht so gut, wenn jeder drin rumschreibt. Das machen dann nur die Hauptamtlichen.
Und es wäre halt für die ungeübteren Kollegen einfacher, wenn sie nach einer Recherche, die einzelnen Dokumente nicht auch noch manuell schließen müssten, sondern wenn sich das quasi von selbst erledigt, sobald sie wieder auf die Alphabet-Seite wechseln. (Ohne Speicher-Nachfrage, denn das brächte nur Verwirrung :) )

Nochmals danke - ich bin über jeden Tipp froh!
Ursula
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo Ursula,

noch malzu deinem "Workflow": Ein Klick auf den Buchstaben öffnet ein neues Dokument(mitden Begriffen) -> und stellt es in den Vordergrund.
Jetzt sucht der Leser etwas darin, darf aber nichts ändern? Richtig?
Wenn er fertig ist, will er zurück auf das erste Dokument - und schliesst das mit den Begriffen. Und jetzt möchtest du eine Button innerhalb des Begriffsdokuments, der das Dokument schliesst?
Sehe ich das richtig?

Und noch eine Erläuterung zur Methode close(): Diese Methode gibt es seit 1.1.3 und bewirkt, dass ein Schliesswunsch des Dokumentes OOo mitgeteilt wird. Jetzt kommt es darauf an: Falls kein interner Prozess ein "Veto" gegen das Schliessen einlegt, wird das Dokument direkt geschlossen. Wenn aber ein interner Prozess noch Zugriff auf das Dokument benötigt (zum Beispiel wenn noch ein Druckprozess läuft), so wird der "Schliessen-Wunsch" nicht ausgeführt. Jetzt kommt der Parameter zum tragen, dem du den close-Befehl mitgibst: In dem einen Fall hat der Programmierer (also du selbst) sorge dafür zu tragen, was passiert, wenn ein "Veto" eingelegt wurde. Also zum Beispiel über Schleifen, Fehlerabfragen oder ähnliches. Im anderen Fall wartet OOo einfach, bis der Prozess, der ein Veto eingelegt hat, beendet wird und übergibt sozusagen die Kontrolle diesem Prozess. Jetzt muss dieser das Dokument schliessen. Welcher Parameter nun was bewirkt -bitte im Buch nachlesen. Ist jetzt zu spät für mich, mir darüber noch Gedanken zu machen. Auf jeden Fall benötigst du eigentlich nur eine Codezeile:

Code: Alles auswählen

ThisComponent.close(true)
Wenn sonst nichts passieren soll.

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
€uro
**
Beiträge: 44
Registriert: Do, 12.04.2007 16:33
Kontaktdaten:

Beitrag von €uro »

ah ja jetzt hat es auch bei mir funktioniert ;)
Ursula
*
Beiträge: 14
Registriert: Fr, 10.02.2006 10:50

Beitrag von Ursula »

Hallo Thomas,

danke für Deine Antwort. So, wie Du es verstanden hast, habe ich es gemeint. Nur: ich möchte keinen Button (wenn darunter ein "Knopf" zu verstehen ist, den man "drückt" - sondern ich möchte das Schließen des Dokuments zusammen mit dem Ereignis des Verlassens oder Deaktivierens des Buchstabendokuments bzw. dem Aktivieren des Alphabet-Dokuments - kam das rüber? Ich kenne mich leider mit den Fachbegriffen nicht so gut aus!)

Wenn ich Deine Erläuterung zur close - Methode richtig verstanden habe, dann erfolgt die Nachfrage nach "Änderungen speichern" sowieso nur bei vorgenommenen Änderungen, weil im Falle des Schließens des Dokuments im schreibgeschützten Modus kein "Veto" eingelgt wird. Oder?

Danke auch für die Codezeile! Ich werde sie ausprobieren. Bin allerdings mit dem Buch noch nicht so weit, um wirklich zu wissen, wo ich sie hinschreiben soll. Bin erst am Anfang und lerne grade über Bibiotheken etc....

Viele Grüße
Ursula
Antworten