🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Speichern - Fortschrittsbalken

Alles zur Programmierung im LibreOffice.
Eric March
Beiträge: 54
Registriert: Do 16. Jun 2011, 16:08

Speichern - Fortschrittsbalken

Beitrag von Eric March » Do 9. Feb 2012, 21:15

Hallo!

Im Lernprozess begriffen, dass aufgezeichnete Makors (Schlagwort Dispatcher) nicht das Gelbe vom Ei sind, habe ich ein Makro erstellt mit dem ich ausnutze, dass ein Speichen in Writer quasi ein Lesezeichen ablegt weil das Dokument an der Stelle der letzten Änderung wieder geöffnet wird.

Ein aufgezeichnetes Makro reagiert wie der Menübefehl und löst den Fortschrittsbalken aus. Da mein Dokument umfangreich ist und wegen des Komprimierens ein Speichern sehr lange dauert ist diese Information sehr nützlich. Bemühe ich nun aber .Store() passiert das Speichern im Hintergrund und ich muss raten wann ich weitermachen kann (oder eben auch nach getaner Arbeit samt Lesezeichen Writer schließen).

Gibt es Tricks doch den Fortschrittsbalken zu erzwingen oder andere Workarounds eine dezente Information auszugeben, dass das Speichern geendet hat? Beep muss nicht sein und Print schließe ich aus da ich kein OK klicken will.

Eric March

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Speichern - Fortschrittsbalken

Beitrag von gogo » Do 9. Feb 2012, 23:56

Pack's in die Statusleiste:

Code: Alles auswählen

oFrame = StarDesktop.getCurrentFrame()
statusIndicator = oFrame.createStatusIndicator()

statusIndicator.end()                                       '<=beendet die Anzeige, falls eine da ist...
statusIndicator.start("Hier Dein IchFangJetztAn-Text", 0)   '<=setzt einen Text in die Statusleiste

... Makroablauf, Speichern oder was auch immer ...

statusIndicator.start("Hier Dein IstBeendet-Text", 0)
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Eric March
Beiträge: 54
Registriert: Do 16. Jun 2011, 16:08

Re: Speichern - Fortschrittsbalken

Beitrag von Eric March » Sa 11. Feb 2012, 21:53

Hallo gogo,

das hilft mir schon mal weiter.
Allerdings bin ich nun um so überraschter. Diese Statusleiste die ich da sehe sieht irgendwie wie der normale Speichern-Fortschrittsbalken aus, außer dass dieser nicht gezeichnet wird. Da juckt es glatt in den Fingern rauszufinden ob man da nicht was drehen kann.

Aber eine logische Frage hätte ich. Die Sequenz…

Code: Alles auswählen

statusIndicator.end()
statusIndicator.start("Startzeichen", 0) 'Was bewirkt die Null?
... Makroablauf, Speichern oder was auch immer ...
statusIndicator.end()
…müsste doch durch das zurückschalten auf die ›Normalansicht‹ Signal genug sein, dass das Speichern durch ist; vergleichbar mit VBA Application.Statusbar="Text" … … … Application.Statusbar=False wobei das .end() ja dem False entsprechen müsste? Oder muss man den StatusIndicator anderweitig zurücksetzen?

Und eine Zusatzfrage:
Vielleicht ist im Moment irgendwas »verklemmt«. Ich denke du kennst den Effekt (oder sagen wir: das Feature), dass man den Cursor an einem Punkt festpinnen kann um mit den Cursortasten von da aus zu markieren ohne Shift benutzen zu müssen. Wie gesagt hält .Store() den Ort der letzten Änderung fest. Das will ich direkt ausnutzen:

Code: Alles auswählen

Public Sub SpeichernUndPOS1
rem Konkret: POS1, Space, BackSpase, Save - um Position im Text festzuschreiben
rem (wenigsten war das mal die Idee ;-) )
Dim MeinViewCursor As Object
Dim Dokument As Object
Dim Rahmen As Object
Dim StatusIndicator as Object
 Dokument = ThisComponent
 Rahmen = StarDesktop.GetCurrentFrame()
 StatusIndicator = Rahmen.CreateStatusIndicator()
 StatusIndicator.End()
 StatusIndicator.Start("Lesezeichen sichern", 0)
 MeinViewCursor = Dokument.GetCurrentController.ViewCursor
 MeinViewCursor.GotoStartOfLine(0,False)
 MeinViewCursor.String=" "
 MeinViewCursor.String=""
 Dokument.Store(0)
 StatusIndicator.End()
End Sub
Dies sollte also nichts tolleres bewirken als die Startmeldung zu geben, den Cursor nach Pos1 zu bringen (möchte halt beim Wiedereinstieg den Kameraden vorn in der Zeile haben), nun mit Leerzeichen und dessen Entfernen eine Änderung zu bewirken, zu speichern und die Startmeldung komplett zurückzuziehen.
Irgendwie scheint hier der Cursor vorn wie Beschreiben festzuklemmen; klicke ich in die Zeile ist von vorne bis da hin alles markiert. Falls das hier nur ein Unfall ist können wir den Fall freilich vergessen.
Vom Cursorsprung abgesehen, gibt es eine elegantere Möglichkeit dort (da ist natürlich das Ziel) die Änderung auszuführen?

Eric March

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Speichern - Fortschrittsbalken

Beitrag von gogo » Sa 11. Feb 2012, 23:11

Zm Fortschrittsbalken und zur ominösen "0":

Code: Alles auswählen

Sub StatusindikatorMitFortschrittsbalken
oFrame = StarDesktop.getCurrentFrame()
statusIndicator = oFrame.createStatusIndicator()
  statusIndicator.end()
  statusIndicator.start("Hier Dein IchFangJetztAn-Text", 10)

  for a= 0 to 10
     statusIndicator.setvalue(a)
     print a
  next a

  statusIndicator.start("Hier Dein IstBeendet-Text", 0)
End Sub
Zur Zusatzfrage kann ich Dir leider nichts antworten - im Writer bin ich nicht so wirklich sattelfest - abgesehen davon wie man mit Formularen arbeitet ;)
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Eric March
Beiträge: 54
Registriert: Do 16. Jun 2011, 16:08

Re: Speichern - Fortschrittsbalken

Beitrag von Eric March » So 12. Feb 2012, 12:19

…immer diese Nachtarbeiter ;)

OK, also kann ich das mit dem Fortschrittsbalken knicken weil ich selbst die ›Prozente‹ laufend einsetzen müsste, und das kann wohl nur die Speicherroutine selbst über Systemfunktionen.
Naja, ein voller oder leerer Balken ist schon EyeCatcher genug, da lässt sich schon was machen mit! :)

Aber mal nachgefragt: «statusIndicator.end()» sollte die Statuszeile zurücksetzen (auf Normal - ?!) / intialisieren. Das tut bei mir aber nichts. Ich brauche also einen funktionierenden Kollegen von «Application.Statusbar=False» der wieder den normalen Anzeigezustand einrichtet.

Eric March

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Speichern - Fortschrittsbalken

Beitrag von gogo » Mo 13. Feb 2012, 23:17

Tja - da haben wir wieder so eine Sache. Der korrekte Befehl für ein Reset der Statuszeile lautet:

Code: Alles auswählen

statusIndicator.end
... aber das ist nur die halbe Wahrheit - die Statustzeile wird zwar gecleant, aber nachher bleibt sie ... leer.

Dass das Reset funktioniert hat kannst Du daran erkennen, dass ein Linksklick dorthin wo normalerweise Funktionen zu finden sind (Rechtschreibung, Formatvorlagen etc.) das richtige Kontextmenü aufruft ... trotzdem ist das natürlich nicht wirklich sophisticated.

Stabil hat bei meinen Systemen nur die Abfolge von 4 Befehlen funktioniert, wobei Du vor allem bei "layoutmanager.reset" vorsichtig sein solltest - tritt hier zur falschen Zeit ein Fehler auf, dann stehst Du ohne User-Interface da. Und ob der .layoutmanager.dolayout immer ganz so funktioniert wie man das haben will ist natürlich auch eher ein Wunsch - trotzdem einen Versuch ist's wert, und instabil scheint mir das Ganze auch nicht zu sein!

Code: Alles auswählen

Sub StatusindikatorMitReset

oFrame = StarDesktop.getCurrentFrame()
statusIndicator = oFrame.createStatusIndicator()

statusIndicator.start("Hier Dein IchFangJetztAn-Text", 0)
print "Statuszeile geändert!"
statusIndicator.start("Hier Dein IstBeendet-Text", 0)

'Reset der Statuszeile:
statusIndicator.reset 
statusIndicator.end

oFrame.layoutmanager.reset
oFrame.layoutmanager.dolayout

End Sub
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Eric March
Beiträge: 54
Registriert: Do 16. Jun 2011, 16:08

Re: Speichern - Fortschrittsbalken

Beitrag von Eric March » Di 14. Feb 2012, 21:10

Habs gelesen, habe aber im Moment anderen Ärger mit unserem IIS.
Eric March

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Speichern - Fortschrittsbalken

Beitrag von gogo » Di 14. Feb 2012, 22:23

Eric March hat geschrieben: ...IIS...
Internes Informations System???
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Eric March
Beiträge: 54
Registriert: Do 16. Jun 2011, 16:08

Re: Speichern - Fortschrittsbalken

Beitrag von Eric March » Mi 15. Feb 2012, 21:06

Viel schlimmer: MS Internet Information Service :-)
ISS wäre mir lieber. Hab keine Ahnung was da mal wieder vom Provider wo das Ding läuft verbockt wurde, jedenfalls hat das Ding wieder mal genug Zeit und Nerven verbraucht.

Zum Makro: Das klappt nicht so wie ich's gern hätte. Es bleibt immer der Balken (ob gefüllt oder leer) mit seinem Text übrig wenn er irgendwie mal mit Murks gefüllt wurde. Beim Testen ist das «Hier Dein IchFangJetztAn-Text».

Gibt es eine andere Idee wie ich erreiche, dass mir der Speicherbeginn gemeldet wird und eine Bestätigung seien Endes erfolgt die zu wiederum ihrem Beenden keinen Eingriff meinerseits erfordert? Auch das Verschwinden eines „Ich speicher’ jetzt!“ (so wie es ja der Fortschrittsbalken macht) würde diese Forderung erfüllen.

Eric March

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Speichern - Fortschrittsbalken

Beitrag von gogo » Mi 15. Feb 2012, 22:14

Die Anweisung

Code: Alles auswählen

statusIndicator.reset
statusIndicator.end
Sollten die Statuszeile leerräumen - machen sie auch bei mir. Ein anderer Weg wäre die Titelleiste, muss aber über zwei Public oder Global-Variablen gesteuert werden:

Code: Alles auswählen

global gsFrametitle as String
global goFrame as object

Sub Speichern_Start '<=== mit dem Ereignis "Dokument sichern" (Extras/Anpassen) des Writerdokumentes verknüpfen
  goFrame = StarDesktop.getCurrentFrame
  gsFrametitle = goFrame.title
  goFrame.title = "SPEICHERE JETZT!!!"
end sub

Sub Speichern_Ende '<=== mit dem Ereignis "Dokument wurde gesichert" (Extras/Anpassen) des Writerdokumentes verknüpfen
  goFrame.title=gsFrametitle 
End Sub
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten