Cursor in Calc-Tabelle setzen

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

Moderator: Moderatoren

LeverAction
*
Beiträge: 17
Registriert: Di, 05.12.2006 22:26
Wohnort: Schiffdorf

Cursor in Calc-Tabelle setzen

Beitrag von LeverAction »

Hallo OOo-Freunde,

wie erreiche ich es per Basic-Macro, daß der Cursor in einer gewünschten Zelle in Calc blinkt, so das dort direkt mit der Eingabe begonnen werden kann.
Ich habe schon Vieles ausprobiert, z.B. das die Zelle den Fokus (nur umrahmt) bekommt. Dann kann ich zwar auch direkt beginnen den Text einzugeben, aber beim ersten Leerzeichen wird eine Checkbox in dem Dokument umgeschaltet. Erst wenn ich vor der Texteingabe einmal mit der Mouse in die Zelle geklickt hatte, wurde das Leerzeichen richtig interpretiert.
Alle Beispiele die ich bisher gefunden habe, galten entweder nicht für Calc-Dokumente, oder sie bezogen sich auf den falschen Cursor (Tabellen-Cursor, Text-Cursor).
Bitte um einen Vorschlag, aber bitte keine UNO-Objekte.

Vielen Dank schon mal,

Matthias
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: Cursor in Calc-Tabelle setzen

Beitrag von ykcim »

Das geht einfach mit dem CurrentController.

Code: Alles auswählen

 
myDoc = thisComponent
'Controoller holen
myView = myDoc.CurrentController
'Gewünschte Zelle holen
mysheet = myDoc.sheets(0)
mycell =  mysheet.getCellByPosition(5,5)
'Zuweisen
myView.Select(mycell)
mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
LeverAction
*
Beiträge: 17
Registriert: Di, 05.12.2006 22:26
Wohnort: Schiffdorf

Re: Cursor in Calc-Tabelle setzen

Beitrag von LeverAction »

ykcim hat geschrieben:Das geht einfach mit dem CurrentController.

Code: Alles auswählen

 
myDoc = thisComponent
'Controoller holen
myView = myDoc.CurrentController
'Gewünschte Zelle holen
mysheet = myDoc.sheets(0)
mycell =  mysheet.getCellByPosition(5,5)
'Zuweisen
myView.Select(mycell)
mfg
Michael
Hallo Michael,
zunächst einmal vielen Dank für die schnelle Antwort.
Diesen Code hatte ich auch schon getestet, ist doch aus der Starbasicfaq, oder?

Ich habe ihn noch einmal eingetippt, wieder mit dem gleichen Ergebnis.
Die Zelle ist schwarz markiert, und wenn ich direkt losschreibe, wird beim nächsten Leerzeichen die CheckBox beeinflußt.
Es blinkt kein Cursor in der Zelle, so wie es nach einem Doppelklick der Fall ist.
Kann man noch in einen "Editiermodus" umschalten, damit der Cursor in der Zelle blinkt, und nicht nur die Zelle markiert ist?

Gruß,
Matthias
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: Cursor in Calc-Tabelle setzen

Beitrag von ykcim »

Sorry, ich kann das Verhalten bei Dir nicht nachvollziehen. Weder mit 2.4 noch mit 3.0. (Beide unter Windows, Linux kann erst morgen früh testen)
Wenn ich das Makro laufen lasse wird der Rahmen von der Zelle scharz und ich kann losschreiben auch mit Leerzeichen.
Was für eine Checkbox macht sich da bei Dir auf?

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
LeverAction
*
Beiträge: 17
Registriert: Di, 05.12.2006 22:26
Wohnort: Schiffdorf

Re: Cursor in Calc-Tabelle setzen

Beitrag von LeverAction »

ykcim hat geschrieben:Sorry, ich kann das Verhalten bei Dir nicht nachvollziehen. Weder mit 2.4 noch mit 3.0. (Beide unter Windows, Linux kann erst morgen früh testen)
Wenn ich das Makro laufen lasse wird der Rahmen von der Zelle scharz und ich kann losschreiben auch mit Leerzeichen.
Was für eine Checkbox macht sich da bei Dir auf?

mfg
Michael
Hallo Michael,

ich glaube es ist besser, wenn ich einmal das Dokument zur Verfügung stelle, daran kann man am Besten erkennen, was ich meinte. In der Datei habe ich noch eine kurze Beschreibung zum Dokument und zu meinem Problem eingefügt.
Ein Problem liegt anscheinend schon in der Definition von "Cursor", vielleicht ist es in Calc ja gar nicht möglich den "Cursor" in einer Zelle blinken zu lassen, sondern eben nur den (Zellen-)Cursor zu setzen.
In dem Fall verschwende nicht noch unnötige Zeit mit meiner Anfrage, dann werde ich einfach eine MsgBox aufploppen lassen, der den Nutzer in etwa so auffordert: "Bitte klicken Sie in Zelle A4 um mit der Texteingabe zu beginnen." Wäre ja eine Alternative.
Falls Du doch einen Blick auf den Makro-Code werfen möchtest, ich habe für die vier Bereiche, die ich ansprechen möchte, jeweils ein Modul angelegt, die sich in der Art der Zell-Selektion etwas unterscheiden,
3 entspricht Deinem Beispiel, 4 ist ganz ohne Zell-Selektion.

Gruß,
Matthias
Dateianhänge
OrdnerRücken-4761.ods
(15.46 KiB) 107-mal heruntergeladen
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: Cursor in Calc-Tabelle setzen

Beitrag von ykcim »

Leider hast Du nicht geschrieben mit welcher OO-Version du arbeitest.
Bei mir geht in allen Deinen Makros die Funktion Cursor-Setzen fehlerfrei! Modul 1, 2 und 3 fehlerfrei.
Ich erhalte nicht einmal das von Dir beschriebene Verhalten.

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
LeverAction
*
Beiträge: 17
Registriert: Di, 05.12.2006 22:26
Wohnort: Schiffdorf

Re: Cursor in Calc-Tabelle setzen

Beitrag von LeverAction »

Hallo Michael,

das verstehe ich wirklich nicht.
Also ich habe es unter Win XP Pro und OO 2.4.1-1 sowie der neuen 3er probiert.
Werde es auch mal unter Knoppix testen.
Spielt die Java-Version evtl. auch noch eine Rolle?


Hallo Michael,

ich möchte noch einen Nachtrag hinzufügen und dieses Posting damit zum Abschluß bringen.
Also, das Makro habe ich jetzt an 8 verschiedenen PCs unter OpenSuse, Debian 4.0, Win2k, WinXP, und Vista mit verschiedenen Versionen von OO (2.0, 2.3, 2.4.1 und 3) getestet, überall zeigte sich das gleiche Verhalten.
Die CheckBox behält den Fokus wenn ich mit der Texteingabe beginne, zu erkennen an den dünnen gestrichelten Rahmen. Deshalb wird sie auch beim ersten Leerzeichen umgeschaltet. Das passiert nicht, wenn ich vor der Texteingabe einmal in die Zelle klicke, dann verliert die CheckBox den Fokus und ich kann Leerzeichen erzeugen, ohne das die CheckBox davon beeinflußt wird.
Da ich es nicht geschafft habe, das Makro so zu erweitern, dass die CheckBox den Fokus automatisch verliert, wenn ich den Zellen-Fokus auf die zu beschreibende Zelle setze, habe ich statt einer CheckBox einen Button eingerichtet.
Dieser hat in seinen Eigenschaften sogar eine Einstellung mit der man das Verhalten des Fokus nach einem Mouse-Klick
definieren kann. Damit klappt es einwandfrei.

Nochmals vielen Dank für Deine Mühe,

Gruß
Matthias
LeverAction
*
Beiträge: 17
Registriert: Di, 05.12.2006 22:26
Wohnort: Schiffdorf

Re: Cursor in Calc-Tabelle setzen

Beitrag von LeverAction »

Hallo noch einmal,

es hat mir doch keine Ruhe gelassen, ich habe mich anderswo umgehört und bekam dort einen Tipp, der das Problem mit der Checkbox beseitigt.
Nach dem setzen des Cursors auf eine Zelle muß man lediglich noch den Focus auf das Fenster setzen, dann gibt die Checkbox den Focus ab und kann nicht mehr durch die Leertaste umgeschaltet werden. So geht's:

oFrame = ThisComponent.CurrentController.Frame
oFrame.ContainerWindow.setFocus

Hier noch einmal die letzte Dateiversion, der Macrocode wurde auch aufgeräumt.
OrdnerRücken-4761.ots
(14.94 KiB) 137-mal heruntergeladen
Ciao!
Antworten