Re: [de-users] Statuszeile anpassen

2021-04-14 Diskussionsfäden Volker Lenhardt

Hallo Niels,

das folgende Makro wird dir die aktuelle Cursorposition sowohl von oben 
als auch von links ausgeben. Es ist beileibe nicht optimiert und es 
funktioniert auch nur dann korrekt für den Y-Wert, wenn im Dokument 
immer dieselbe Seitenformatvorlage verwendet wird. Der X-Wert ist nur 
dann korrekt, wenn die Darstellung des Dokuments das Bearbeitungsfenster 
genau füllt oder breiter ist.


In diesem Makro geht es vor allem um die Werte, die aus der Anwendung 
stammen. Diese Werte werden von der API (Application Programming 
Interface) bereitgestellt, auf die mit Basic und Python gleichermaßen 
zugegriffen wird. Die Berechnung stellt für beide Sprachen kein Problem dar.


Option VBASupport 1

Sub PrintCursorPosition
  Dim oDoc   'Aktuelles Dokument
  Dim oViewCursor'Aktueller Viewcursor
  Dim cursorPos As New com.sun.star.awt.Point  'Cursorposition
  Dim iPreviousPages As Integer 'Die Anzahl der vorherigen Seiten
  Dim dInterPageSpace As Double 'Der schmale Steg zwischen den Seiten,
'in 1/100 mm
  Dim oStyle 'Aktuelle Seitenvorlage
  REM Die Werte aus der Seitenvorlage in 1/100 mm:
  Dim dHeight  As Double 'Seitenhöhe
  Dim dWidth   As Double 'Seitenbreite
  Dim dTop As Double 'Oberer Seitenrand
  Dim dLeftAs Double 'Linker Seitenrand
  REM Die Ausgabewerte:
  Dim lXCursor As Long   'Abstand des Cursors von links in mm
  Dim lYCursor As Long   'Abstand des Cursors von oben in mm
  Dim sMsgText As String  'Ausgabestring

  oDoc = ThisComponent
  oViewCursor = oDoc.CurrentController.getViewCursor()

  oStyle = oDoc.StyleFamilies.getByName("PageStyles")_
   .getByName(oViewCursor.PageStyleName)
  dHeight = oStyle.Height
  dWidth = oStyle.Width
  dTop  = oStyle.TopMargin
  dLeft = oStyle.LeftMargin

  REM Die Koordinaten des Cursors bezogen auf die obere linke Ecke
  REM der Writerfolie in 1/100 mm:
  cursorPos = oViewCursor.getPosition()

  dInterPageSpace = 501.3  'empirisch ermittelt
  iPreviousPages = Fix(cursorPos.Y / (dHeight + dInterPageSpace))

  REM Die Cursorposition ist der Abstand zum Seitenrand
  REM plus der Seitenrand.
  lXCursor = Round((cursorPos.X + dLeft) / 100)
  lYCursor = Round(((cursorPos.Y - _
 iPreviousPages * (dHeight + dInterPageSpace)) _
 + dTop) / 100)
  sMsgText = "Cursorposition:" & Chr(10) & _
 "von links: " & lXCursor & " mm" & Chr(10) & _
 "von oben: " & lYCursor & " mm"
  MsgBox sMsgText, MB_ICONINFORMATION,  "Cursorposition"
End Sub

Das Makro ist aus einem Zusammenhang heraus genommen und sollte nur die 
Auswertung von Formatvorlagen illustrieren. Es ist, wie schon gesagt, 
nicht frei von Fehlern, könnte aber einen Ansatz zu einer in jeder 
Situation korrekten Lösung bieten.


Du kannst das Makro über "Extras|Makros|Makros verwalten" in ein Modul 
einfügen (dazu gibt es Hilfetexte) und es dann über "Extras|Anpassen" 
z.B. im Menü eines jeden Writerdokuments unterbringen.


Schöne Grüße
Volker

Am 14.04.21 um 08:12 schrieb Niels Luithardt:

Hallo Volker,

vielen Dank für deine Mail, aber ich bin kein Makroprogrammierer. D.h.
ich kann mit deinen Codezeilen wenig anfangen.

Was muss ich mit dem "Code" anstellen, damit ich irgendetwas
sinnvolles herausbekomme, bzw. angesagt bekomme?

Wer in Python bewandert ist, da könnte man was die Bildschirmansage
betrifft vielleicht etwas von anderen Add ons klauen. Es ist die
Frage, ob LO die entsprechenden Schnittstellen bietet. Aber das müsste
sich wirklich einer in der Programmierung bewandeter tun. Ich bin nur
Anwender...

Viele Grüße

Niels



--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Listbox in Tabellenkontrollfeld - Inhalt nur nach Tastendruck sichtbar

2021-04-14 Diskussionsfäden Stefan Deutsch

Cool! Hatte mich schon gefragt, wie man sowas machen kann, um Code
leichter wiederverwendbar zu machen ;-)

Am 14.04.2021 um 07:54 schrieb Robert Großkopf:

Hallo Stefan,

verstehe ich das richtig, dass der Parameter (oEvent as Object) in
deinen Makros das Ereignis übergibt, von dem dein Makro aufgerufen wird?

Ja, darüber ermittele ich das Formular. Ich könnte natürlich auch den
genauen Weg über das Dokument beschreiben, aber so ist der Weg immer
gleich - egal wie das Formular heißt und ob es ein Hauptformular oder
Unterformular ist oder was auch sonst.

Gruß

Robert


--
Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
https://www.avast.com/antivirus


--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] WG: Automatische Wiederherstellung beim Öffnen des Dokuments

2021-04-14 Diskussionsfäden Bernd Nachtigall

Am 14.04.21 um 00:43 schrieb Georg Gunsch:
(...)

Libre Office Version 7.1.1.2 (x64)
Threads: 16 BS: Windows 10.0 Build 19042

Hallo zusammen,

es passiert sporadisch immer wieder, dass vor dem Öffnen eines Dokuments in 
Calc und Writer ein Abfrage-Dialog zur Wiederherstellung des Dokuments 
erscheint.
Davor gab es jedoch keinen Absturz oder Datenverlust.
Bei Laden und Speichern mache ich alle 10 min. Autowiederherstellungsinfos und 
speichere relativ zum Dateisystem.
Die benutzerspezifischen Einstellungen lade ich mit dem Dokument, die 
Drucker-Einstellungen ebenfalls.
Woran könnte es liegen, dass das System LO beim Laden des Dokuments spontan die 
Wiederherstellung aufruft?
Ich lehne die Wiederherstellung immer ab, und das Dokument ist weder beschädigt 
noch verändert. Ich habe es auch ordnungsgemäß gespeichert vor dem Beenden der 
letzten Sitzung, und bei Ablehnung der Wiederherstellung wird es ordnungsgemäß 
geladen.
Gibt es eventuell ein anderes Programm, das das Dokument quasi im Backend 
verändert?


Fährst Du das System herunter während LO noch geöffnet ist? Das führt
hier zu diesem Verhalten.

Nervend, aber nicht schädlich.

Bernd

--
Die normative Kraft des Faktischen
behindert die Entwicklung zum Besseren.

--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Statuszeile anpassen

2021-04-14 Diskussionsfäden Niels Luithardt
Hallo Volker,

vielen Dank für deine Mail, aber ich bin kein Makroprogrammierer. D.h.
ich kann mit deinen Codezeilen wenig anfangen.

Was muss ich mit dem "Code" anstellen, damit ich irgendetwas
sinnvolles herausbekomme, bzw. angesagt bekomme?

Wer in Python bewandert ist, da könnte man was die Bildschirmansage
betrifft vielleicht etwas von anderen Add ons klauen. Es ist die
Frage, ob LO die entsprechenden Schnittstellen bietet. Aber das müsste
sich wirklich einer in der Programmierung bewandeter tun. Ich bin nur
Anwender...

Viele Grüße

Niels

Am 13.04.21 schrieb Volker Lenhardt :
> Hallo Niels,
>
> für die vertikale Cursorposition existiert eine Lösung, die im schon
> erwähnten Makro in OOME steckt. Sie geht davon aus, dass alle benutzten
> Seitenformate gleich sind. Der aktuelle Controller gibt die aktuelle
> Cursorposition auf der Basis der linken oberen Ecke der ersten Seite des
> Dokuments aus. Man muss also die Summe der Höhe der vorherigen Seiten
> von der aktuellen Cursor-Y-Position abziehen. Zu beachten ist außerdem,
> dass die Writerfolie zwischen den einzelnen Seiten einen schmalen Steg
> enthält, der zur Seitenhöhe addiert werden muss.
>
> Sub PrintCursorYPosition
>Dim oDoc   'Aktuelles Dokument
>Dim oViewCursor'Aktueller Viewcursor
>Dim sStyleName 'Name der Seitenvorlage
>Dim oStyle 'Aktuelle Seitenvorlage
>Dim dHeight  As Double 'Seitenhöhe aus der Seitenvorlage in 1/100 mm
>Dim dTop As Double 'Oberer Seitenrand in mm
>Dim dYCursor As Double 'Abstand des Cursors von der oberen Kante in mm
>Dim pos As New com.sun.star.awt.Point  'Cursorposition
>Dim lPreviousPages As Long'Die Anzahl der vorherigen Seiten
>Dim dInterPageSpace As Double 'Der schmale Steg zwischen den Seiten,
>  'empirisch ermittelt.
>
>oDoc = ThisComponent
>oViewCursor = oDoc.CurrentController.getViewCursor()
>
>sStyleName = oViewCursor.PageStyleName
>oStyle = oDoc.StyleFamilies.getByName("PageStyles").getByName(sStyleName)
>dHeight = oStyle.Height
>dTop  = oStyle.TopMargin  / 100.0
>REM Die Koordinaten des Cursors bezogen auf die obere linke Ecke der
> Folie in 1/100 mm:
>pos = oViewCursor.getPosition()
>
>dInterPageSpace = 501.3 '1/100 mm
>lPreviousPages = Fix(pos.Y / (dHeight + dInterPageSpace))
>
>REM Die Cursorposition ist der Abstand zum Seitenrand plus der
> Seitenrand.
>dYCursor = Fix((pos.Y - lPreviousPages * (dHeight + dInterPageSpace))
> / 100.0 + dTop)
>
>MsgBox dYCursor, 0, "Seiteninformationen"
> End Sub
>
> Zur X-Position habe ich noch keine Lösung, außer für den Fall, dass die
> Darstellung des Dokuments das Bearbeitungsfenster genau füllt oder
> breiter ist.
>
> Schöne Grüße
> Volker
>
> Am 13.04.21 um 08:31 schrieb Niels Luithardt:
>> Hallo Zusammen,
>>
>> nur für mich zum Verständnis:
>>
>> 1) Eine Funktion "vertikale Seitenposition" wie sie Word bietet (Word
>> bietet in dem Bereich auch noch mehr) gibt es in LO nicht. Jedenfalls
>> habe ich diesbezüglich noch keine weiteren Hinweise bekommen, wo sich
>> diese Funktion befinden könnte - wo man die Infos abrufen könnte -
>> wenn nicht auf der Statuszeile.
>>
>> Für mich wäre das dann ein Feature Request wert.
>>
>> Ein schwacher Trost bietet ein "vertikales Lineal" das man einstellen
>> kann. Das Problem ist nur- weder beim normalen horizontalen, noch beim
>> vertikalen Lineal gibt mein Screenreader Werte aus...
>>
>> Das mit dem horizontalen Lineal habe ich schon damals als Bug
>> gemeldet, das andere noch nicht...
>>
>> Über eine Antwort wäre ich dankbar.
>>
>> Wenn man da mit Makros was machen könnte wäre natürlich toll. Soweit
>> ich weis hat LO auch eine Python schnittstelle, so dass es prinzipiell
>> möglich wäre da etwas zu machen. Mir wäre aber natürlich eine Lösung
>> in LO selber lieber. Wenn man ständig den Screenreader an die Software
>> anpassen muss hechelt man immer der Technik hinterher und ist im
>> schlimmsten Fall nicht einsatzfähig. Es muss umgekehrt sein. Nicht der
>> Screenreader muss sich der Software anpassen, sondern die Software den
>> Screenreader! Es wäre schön, wenn das von allen LO Entwicklern auch
>> beherzigt werden würde...
>>
>> Viele Grüße
>>
>> Niels
>>
>> Am 10.04.21 schrieb Gerhard Weydt :
>>> Hallo Volker,
>>>
>>> Andrews Werk und auch deine deutsche Übersetzung sind mir bekannt, aber
>>> ich bin tatsächlich nicht auf die Idee gekommen, da nachzuschauen. Was
>>> ich beim flüchtigen Durchlesen sehe, ist, dass ich schon an der selben
>>> Stelle war, aber dann aus den Zahlen nicht schlau wurde; ich hatte z. B.
>>> den X-Wert mit Rand 2 cm und 0 cm verglichen, wenn der Cursor am Anfang
>>> stand, und mit den mir bekannten Umrechnungen. Aber ich werde mir das
>>> anhand des Makros noch einmal anschauen, das müsste mich weiterbringen.
>>>
>>> Viele Grüße
>>> Gerhard
>>>
>>> Am 10.04.2021 um 11:21 schrieb Volker Lenhardt:
 Hallo Gerhard,

 Am