Archiv des LibreOffice- und OpenOffice.org-Wiki

[ÜberSicht] [TitelIndex] [WortIndex] [SeiteFinden

Anzeige der Cursorposition (Zeile/Spalte) während der Eingabe

Anzeige in der Titelzeile des Dokuments

Möchte man sich während der Eingabe von Text im Writer die jeweilige aktuelle Position (Zeile/ Spalte) des Cursors anzeigen lassen, so kann man dies mit dem folgenden Makro erreichen:

(./) SO 5.2

REM  *****  BASIC  *****
REM Autor: Michael Schroeder
REM veröffentlicht in news:<20031114.9293600.1021171622@sirius.imsch.de>
Dim flag As Boolean

Sub ExitProgram
  flag = TRUE
End Sub

Sub ShowCursorPosition
  Do Until flag = TRUE
   GetCurPos(): Wait 100
  Loop
End Sub

Sub GetCurPos
 Dim x As Long, y as Long
 Dim oPos As Object
  oPos = ThisComponent.CurrentController.ViewCursor.Position
  x = oPos.x/254: y = oPos.y/478
  REM Umrechnung der Punkthöhe der verwendeten Schrift, da die Cursorposition intern in Twips geführt wird
  StarDesktop.ActiveFrame.Title = "Cursor: " & x & "/" & y
End Sub

Anmerkungen:

{OK} Die beiden Funktionen legt man sich am günstigsten auf zwei selbst definierte Schaltflächen, siehe dazu unter MakrosMitEinemKlick.

Anzeige in der StatusLeiste

Eine Erweiterung des obigen Makros bietet die Möglichkeit, die Cursorposition in der StatusLeiste statt in der Titelzeile des Dokuments anzuzeigen.1

Es empfiehlt sich, die Routine mittels einer Vorlage aufzurufen, welche ein neues Writer-Dokument mit einer geeigneten Schrift erzeugt und die Hauptroutine über das Ereignis Dokument öffnen/ Dokument erzeugen startet. Dem Schließen des Dokuments wird die Exit-Routine zugeordnet, sodass ein Hängen des Office beim Schliessen des Dokumentes verhindert wird.

(./) SO 5.2

REM Marko Moeller markomlm@aol.com 28.10.2004
Dim flag As Boolean
dim frame as object
dim statusIndicator as Object

Sub ShowCursorPosition
REM Fehlerbehandlung zum Unterdruecken der Fehlermeldungen gesetzt M. Moeller 28.10.2004
 on error resume next
  Do Until flag = TRUE
  REM WAITTIME erhoeht, um Flackern der Statusleiste zu reduzieren  M. Moeller 28.10.2004
   GetCurPos(): Wait 500
  Loop
End Sub

Sub GetCurPos
REM Fehlerbehandlung zum Unterdruecken der Fehlermeldungen gesetzt M. Moeller 28.10.2004
 on error resume next
REM
 Dim x As Long, y as Long
 Dim oPos As Object
  oPos = ThisComponent.CurrentController.ViewCursor.Position
  REM Werte jeweils um eins hochgezählt, damit Zeile und Spalte mit 1 beginnen M. Moeller 28.10.2004
  x = oPos.x/254+1: y = oPos.y/478+1
  REM Umrechnung der Punkthöhe der verwendeten Schrift, da die Cursorposition intern in Twips geführt wird
  'StarDesktop.ActiveFrame.Title = "Spalte: " & x & "/" & y
  REM Zeilen fuer Nutzung des Statusindikators ergaenzt M. Moeller 28.10.2004
  REM aktuellen FRAME laden
  frame = StarDesktop.getCurrentFrame()
  REM Statusindikator initialisieren
  statusIndicator = frame.createStatusIndicator()
  REM Statusindikator beenden um Anzeige des letzten Ereignisses zu loeschen
  statusIndicator.end()
  REM Cursorposition als Bezeichnung des Statusindikatorlabels setzen
  statusIndicator.start("Spalte: " & x & " Zeile: " & y, 0)
End Sub

Sub ExitProgram
REM Fehlerbehandlung zum Unterdruecken der Fehlermeldungen gesetzt M. Moeller 28.10.2004
 on error resume next
  flag = TRUE
  REM Zeilen fuer Beenden des Statusindikators ergaenzt M. Moeller 28.10.2004
  frame = StarDesktop.getCurrentFrame()
  statusIndicator = frame.createStatusIndicator()
  statusIndicator.end()
End Sub

Anmerkung: Wird der Quellcode der oben abgebildeten Routinen in eine Bibliothek mit dem Namen sbar und ein darin befindliches Modul sbar kopiert, kann die als Anlage zu diesem Dokument vorhandene Vorlage sbar.stw genutzt werden.


KategorieMakro


LizenzBedingungen | AnbieterKennzeichnung | DatenschutzErklärung | Stand: 2013-04-28