BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Calc: Kann man die oberste aktuell angezeigte Zeile/Zelle bestimmen?

Alles zur Programmierung im LibreOffice.
Antworten
Reth
Beiträge: 64
Registriert: Fr 5. Apr 2019, 23:21

Calc: Kann man die oberste aktuell angezeigte Zeile/Zelle bestimmen?

Beitrag von Reth » So 11. Aug 2019, 22:54

Hallo zusammen,

gibt es eine Möglichkeit, dies per Makro zu tun, also dass man den Wert der aktuell ganz oben angezeigten Zeile/Zelle erhält - auch wenn gescrollt wurde?

Dank euch schon mal!

Ciao

Ralf_NI
Beiträge: 2
Registriert: Di 5. Apr 2022, 21:02

Re: Calc: Kann man die oberste aktuell angezeigte Zeile/Zelle bestimmen?

Beitrag von Ralf_NI » Fr 8. Apr 2022, 17:17

Hallo Reth,

Die Methode zum Lesen der ersten sichtbaren Zeilennummer lautet

getFirstVisibleRow()

Code: Alles auswählen

ErsteSichtbareZeile= ThisComponent.CurrentController.getFirstVisibleRow()
und zum übergeben der ersten Zeilenummer an das Fenster

setFirstVisibleRow(long)

Code: Alles auswählen

ThisComponent.CurrentController.setFirstVisibleRow(ErsteSichtbareZeile)
Ich hatte genau das selbe Problem und hab die Lösung lange nicht finden können.
Ein wichtiger Tipp zur Lösung war das Buch OOME_deutsch.odt https://www.uni-due.de/~abi070/ooo.html.
Das Objekt auf die die Methode angewendet werden muss, konnte ich dort jedoch nicht finden (selbstredend für erfahrene Programmierer warscheinlich :) ). Das Objekt konnte ich nur durch Beispiele suchen, und probieren finden. Ich bin da noch sehr unerfahren. Über die Referenz bin ich da nicht drauf gekommen.

Für Fehler/Unübliche Darstellung sorry, das ist mein erster Beitrag :) .

Gruß
Ralf
openSUSE Tumbleweed

F3K Total
Beiträge: 2412
Registriert: So 10. Apr 2011, 10:10

Re: Calc: Kann man die oberste aktuell angezeigte Zeile/Zelle bestimmen?

Beitrag von F3K Total » Sa 9. Apr 2022, 17:42

Hallo,
wo möchtest du denn den Wert angezeigt bekommen?

Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO

F3K Total
Beiträge: 2412
Registriert: So 10. Apr 2011, 10:10

Kann man die oberste aktuell angezeigte Zeile/Zelle bestimmen? PropertyChangeListener

Beitrag von F3K Total » So 10. Apr 2022, 08:45

Hallo zusammen,
ich habe leider gerade erst gesehen, das der ursprüngliche Beitrag bereits in 2019 geschrieben wurde.
Egal, ich habe mir Gedanken gemacht und auch eine recht interessante Lösung gefunden.
Mit einem PropertyChangeListener und einer Benutzerdefinierten Funktion.
Der Listener merkt, wenn man scrollt, mit FirstVisibleRow wird die oberste Zeile ermittelt, dann der Inhalt der gewünschten Spalte ausgelesen und in der ersten Zeile des Tabellenblattes, die ich fixiert habe, angezeigt und ggf. weiterverarbeitet.
Wenn man den Cursor nun in den unteren Bereich setzt und auf dem Blatt scrollt, passt sich die oberste Zeile entsprechend an.
Hier der Code:

Code: Alles auswählen

global oListener

function Get_Top_Value(sColumn) as double
   on error goto errorhandler
    oContoller = ThisComponent.CurrentController
    nRow = oContoller.FirstVisibleRow
    oSheet = ThisComponent.Sheets.getbyName("Tabelle1")'Name der Tabelle
    oColumn = oSheet.Columns.Getbyname(sColumn)'Name der Spalte
    oCell = oColumn.getcellbyPosition(0,nRow)
    Get_Top_Value = oCell.Value
    errorhandler:
End function

Sub CreateListener
    oListener = CreateUnoListener( "PropertyChangeListener_", "com.sun.star.beans.XPropertyChangeListener" )
    ThisComponent.CurrentController.addPropertyChangeListener("",oListener)
End Sub

Sub RemoveListener()
    ThisComponent.CurrentController.removePropertyChangeListener("",oListener)
End Sub 

Sub PropertyChangeListener_propertyChange(oEvent)
    ThisComponent.calculateAll
End Sub

Sub PropertyChangeListener_disposing
End Sub
Beispiel anbei.

Gruß R
Dateianhänge
GetTopValue_Property_Change_Listener.ods
(16.28 KiB) 64-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

Ralf_NI
Beiträge: 2
Registriert: Di 5. Apr 2022, 21:02

Re: Calc: Kann man die oberste aktuell angezeigte Zeile/Zelle bestimmen?

Beitrag von Ralf_NI » Mo 11. Apr 2022, 01:31

Hallo R,

das erscheint mir eine exactere Lösung, zu dem was Reth da angefragt hatte, zu sein.

Ich hatte nicht daran gedacht darauf hin zu weisen, das das schon ein älterer Beitrag war.
Ich hab Deinen Code nicht zum Laufen bekommen. Der hat für mich zu viel Tiefgang.
Ich wäre froh, wenn ich hinreichend systematisch darauf kommen würde, warum ich das Objekt CurrentController und nicht zum Beispiel CurrentDocument oder welches auch immer ansprechen muss. Vielleicht steht die Vorgehensweise ja im Pitoniak irgendwo. Ich habs noch nicht durch gelesen.
Für mich war der Beitrag trotzdem sehr Aufschlussreich (Events etc.). Vielen Dank von meiner Seite!

Gruß Ralf
openSUSE Tumbleweed

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten