Re: [de-users] Statuszeile anpassen
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
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
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
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