Aktiven Cursor IN Zelle setzen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

evemaria
*
Beiträge: 12
Registriert: Do, 10.06.2010 21:56
Wohnort: schweiz

Aktiven Cursor IN Zelle setzen

Beitrag von evemaria »

Guten Tag

ich habe einen separaten externen Ziffernblock zur schnelleren Eingabe von Zahlen in LibreOffice Calculator.
Mein Problem ist, dass diese Tastaturerweiterung für den englischen Sprachraum wohl richtig belegt ist, aber mit der schweizer oder auch der deutschen Tastaturbelegung gibt die Taste mit dem Gleichheitszeichen eben ein anderes Zeichen aus.

Ich möchte nun gerne ein Makro schreiben, dass ich am Mac mit einer der F-Tasten auf der Zusatztastatur aufrufen kann, das ein Gleichheitszeichen in die aktive Zelle schreibt, aber zugleich dahinter einen blinkenden Cursor setzt, damit ich direkt mit der Zahleneingabe fortfahren kann, ohne Doppelklick per Maus.

Mit folgendem Code klappt der erste Teil inkl. auslösen durch die F-Taste auch ohne Probleme, aber wie kriege ich diesen dahinter blinkenden aktiven Cursor für die weitere Texteingabe her?

Code: Alles auswählen

sub gleichzeichen

   oSheet=thiscomponent.getcurrentcontroller.activesheet
   oCell = ThisComponent.getCurrentSelection()
   oCell.SetString("=")
   
end sub
Ich wäre dankbar für einen Hinweis, in welche Richtung ich suchen muss, oder ob das schlichtweg in Calculator nicht machbar ist.

Ich weiss, dass das auf diesem Weg so nur für Gleichheitszeichen am Eingabeanfang funktionieren wird, das wäre aber die häufigste Anwendung dafür. Alle anderen Vorkommen in Formeln würde ich einfach über die normale Tastatur abdecken.

Herzliche Grüsse
eve
libreoffice 7.1.8.1 auf mac os 11.6.4
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Aktiven Cursor IN Zelle setzen

Beitrag von Toxitom »

Hallo eve,
...oder ob das schlichtweg in Calculator nicht machbar ist.
ich fürchte, das wird sich wohl ergeben. Theoretisch funktioniert natürlich alles - es geht ja auch in der Benutzeroberfläche;)) aber per API (Makro).... da kenne ich keine einfache Möglichkeit.

Du kannst zwar per Makro auf einzelne Zeichen im Text einer Zelle zugreifen und diese manipulieren (mit Hilfe eines Textcursors), aber wie man den dann zum Viewcursor macht??

Also, per Makro würdest Du einen Textcursor erzeugen, mit dem dann beliebig im vorhandenen Text herumlaufen .... aber dann? Wenn so ein Makro fertig ist, ist halt die Zelle markiert - ein Zeichen eingeben und der bestehende Inhalt ist weg....

Ein Weg vielleicht (noch nicht getestet):
Beim Eingeben Deines Gleichheitszeichens registrierst Du einen Listener, der auf einen Tastendruck reagiert. Dann prüfst du auf zugelassene Zeichen, nimmst das Zeichen, und überschreibst den Inhalt der Zelle nun mit "="&Zeichen. Jetzt wird der Listener wieder gelöscht. Dann steht zwar in der Zelle das gewünschte Zeichen nach einem Gleichheitszeichen - aber ich schätze, Du hast jetzt das selbe Problem beim nächsten Zeichen....???

Aber wenn Du ein wenig stöbern willst:

Code: Alles auswählen

oTC = oCell.createTextCursor() 'erzeugt einen Textcursor in der Zelle
oTC.goright(1, false)   'Textcursor ein zeichen nach rechts rücken, das Zeichen nicht markieren (Cursor wird nicht expandiert)
'Cursor steht jetzt hinter dem Gleichheitszeichen - und Du kannst per Makro daten eingeben oder so. 
Der Cursor ist aber nicht sichtbar in der Viewansicht.

Sorry, keine weitere Idee.

Viele Grüße Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
evemaria
*
Beiträge: 12
Registriert: Do, 10.06.2010 21:56
Wohnort: schweiz

Re: Aktiven Cursor IN Zelle setzen

Beitrag von evemaria »

Hallo Tom

Genau das habe ich befürchtet. Trotzdem Danke, dass Du Dir die Zeit genommen hast, Dich mit meinem Problem zu beschäftigen.

Ich glaube, so macht es wenig Sinn, auf diesem Weg weiter zu probieren.
Da ich den Ziffernblock nur in Libreoffice Calc benötige, dachte ich, das wäre die einfachste und schnellste Variante zu erreichen, was ich mir wünsche.

So werde ich mich aber wohl erst mal mit dem "Terminal" und den "LaunchAgents" im macOS auseinandersetzen oder schlimmstenfalls halt auf eine Zusatzsoftware wie "Karabiner Elements" ausweichen, um die Tastenbelegung halt für's ganze System zu ändern ...

Gruss eve
libreoffice 7.1.8.1 auf mac os 11.6.4
Antworten