Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Moderator: Moderatoren
Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Hallo, ich bin OO-Neuling, kenne mich aber relativ gut in Visual Basic (Excel 2003) aus.
Ich möchte nun ein Excel-Programm von VB nach OO übertragen.
Dabei bin ich auf das Problem gestoßen, dass ich beim Drücken der POS1-Taste, der Kombinationen Strg+DOWN etc. Entf./Einfg andere Aktionen durchführen möchte, als von Calc vorgesehen.
Beispielsweise soll der Fokus beim Drücken von POS1 nicht zur Zelle (0,0) sondern zu einer anderen, beispielsweise (2,2) springen.
Außerdem möchte ich eine eigene Kopieren/Einfügen-Routine schreiben und dazu muss die übliche Funktion abgefangen und durch die Aktionen meines Makros ersetzt werden.
Ich habe bereits einen SelectionChangeListener ans Laufen bekommen, weiß nun jedoch nicht, wie ich aus diesem heraus den Tastendruck abfangen, geschweige denn die letzte gedrückte Taste ermitteln könnte.Zu diesem Thema habe ich nur sehr wenig in den Foren gefunden. Unter anderem habe ich auch von einem KeyListener und einem KeyHandler gelesen. Diese Möglichkeit habe ich auch schon getestet.
Ich habe den dazu veröffentlichten Code bei Tabelle1 einer Arbeitsmappe eingetragen, da ich auch genauso beim SelectionChangeListener vorgegangen bin. Aber im Gegensatz zum ChangeListener hat sich hierbei nix getan. Ich habe zur Kontrolle, ob die Sub angesprochen wird, eine Msgbox eigefügt. Es tut sich jedoch nichts. Die Sub (weder KeyHandler noch KeyListener) wird bei einem Tastendruck nicht angesprochen. Ich weiß, dass der Listener zunächst erst initialisiert werden muss. Habe dazu auch die Initialisierungs-Sub mit dem Ereignis "Dokument öffnen" verknüpft.
Muss ich bestimmte Programmteile woanders speichern (in "meine Makros" oder "Standard"). Oder funktioniert ein KeyHandler / Listener nur in Writer?
Welche Möglichkeiten habe ich in Calc, um den Tastendruck auszuwerten. Wenn ihr mir (hoffentlich) Code-Vorschläge macht, könntet ihr dann bitte auch dazu schreiben, an welcher Stelle (Tabelle1, meine Makros etc.) ich den Code eintragen und ob ich noch bestimmte Ereignisse (Dokument öffnen etc.) damit verknüpfen muss?
Dann habe ich noch ein weiteres Problem: ich habe herausgefunden, wie ich den Fokus auf eine bestimmte Zelle lenken kann. Wenn ich den Befehl ausführe, wird die gewünschte Zelle auch angesprochen, sie ist dann allerdings schwarz hinterlegt (selektiert). Wie kriege ich es nun hin, dass der Fokus auf eine gewünschte Zelle gesetzt wird, diese jedoch nur mit dem Fokus umrandet, nicht aber schwarz unterlegt ist?
Ich suche nun schon seit Tagen in vielen Foren nach Lösungen und bin bisher leider nicht viel weiter gekommen.
Viele Grüße und vielen Dank für eure Hilfe im Voraus!
Lupo
Ich möchte nun ein Excel-Programm von VB nach OO übertragen.
Dabei bin ich auf das Problem gestoßen, dass ich beim Drücken der POS1-Taste, der Kombinationen Strg+DOWN etc. Entf./Einfg andere Aktionen durchführen möchte, als von Calc vorgesehen.
Beispielsweise soll der Fokus beim Drücken von POS1 nicht zur Zelle (0,0) sondern zu einer anderen, beispielsweise (2,2) springen.
Außerdem möchte ich eine eigene Kopieren/Einfügen-Routine schreiben und dazu muss die übliche Funktion abgefangen und durch die Aktionen meines Makros ersetzt werden.
Ich habe bereits einen SelectionChangeListener ans Laufen bekommen, weiß nun jedoch nicht, wie ich aus diesem heraus den Tastendruck abfangen, geschweige denn die letzte gedrückte Taste ermitteln könnte.Zu diesem Thema habe ich nur sehr wenig in den Foren gefunden. Unter anderem habe ich auch von einem KeyListener und einem KeyHandler gelesen. Diese Möglichkeit habe ich auch schon getestet.
Ich habe den dazu veröffentlichten Code bei Tabelle1 einer Arbeitsmappe eingetragen, da ich auch genauso beim SelectionChangeListener vorgegangen bin. Aber im Gegensatz zum ChangeListener hat sich hierbei nix getan. Ich habe zur Kontrolle, ob die Sub angesprochen wird, eine Msgbox eigefügt. Es tut sich jedoch nichts. Die Sub (weder KeyHandler noch KeyListener) wird bei einem Tastendruck nicht angesprochen. Ich weiß, dass der Listener zunächst erst initialisiert werden muss. Habe dazu auch die Initialisierungs-Sub mit dem Ereignis "Dokument öffnen" verknüpft.
Muss ich bestimmte Programmteile woanders speichern (in "meine Makros" oder "Standard"). Oder funktioniert ein KeyHandler / Listener nur in Writer?
Welche Möglichkeiten habe ich in Calc, um den Tastendruck auszuwerten. Wenn ihr mir (hoffentlich) Code-Vorschläge macht, könntet ihr dann bitte auch dazu schreiben, an welcher Stelle (Tabelle1, meine Makros etc.) ich den Code eintragen und ob ich noch bestimmte Ereignisse (Dokument öffnen etc.) damit verknüpfen muss?
Dann habe ich noch ein weiteres Problem: ich habe herausgefunden, wie ich den Fokus auf eine bestimmte Zelle lenken kann. Wenn ich den Befehl ausführe, wird die gewünschte Zelle auch angesprochen, sie ist dann allerdings schwarz hinterlegt (selektiert). Wie kriege ich es nun hin, dass der Fokus auf eine gewünschte Zelle gesetzt wird, diese jedoch nur mit dem Fokus umrandet, nicht aber schwarz unterlegt ist?
Ich suche nun schon seit Tagen in vielen Foren nach Lösungen und bin bisher leider nicht viel weiter gekommen.
Viele Grüße und vielen Dank für eure Hilfe im Voraus!
Lupo
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Du möchtest ein Abfangen der Tasten programmieren? Oder kannst Du der POS1-Tasten (und anderen) auch ein Makro (manuell) zuordnen (über Extras>Anpassen>Tastatur)?
ansonsten:
MUSST Du den Fokus (ohne "Selektion") setzen - oder reicht Dir die Positionierung auf der Ziel-Zelle?ist dann allerdings schwarz hinterlegt (selektiert). Wie kriege ich es nun hin, dass der Fokus...
ansonsten:
Hilft das weiter?Andrews Macro Document hat geschrieben:If you do want the entire cell to be dark, but rather selected with the dark outline around it, select an empty range AFTER moving the cursor to the desired cell.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Lupo,
bei der Sache mit der KeyHandler kann ich Dir leider nicht helfen - noch keine Erfahrung.
Für das zweite Problem habe ich bei Andrew nachgeschlagen:
In Andrews Dokument findest Du auch ein Beispiel für Problem1 
Viel Erfolg!
bei der Sache mit der KeyHandler kann ich Dir leider nicht helfen - noch keine Erfahrung.
Für das zweite Problem habe ich bei Andrew nachgeschlagen:
Code: Alles auswählen
Sub MoveCursorToCell
Dim oCell
Dim oSheet
Dim oRanges
REM Get the first sheet.
oSheet = ThisComponent.getSheets().getByIndex(0)
REM Get cell A2
oCell = oSheet.GetCellbyPosition( 0, 1 )
REM Move the selection to cell A2
ThisComponent.CurrentController.Select(oCell)
REM Select an empty range..
oRanges = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
ThisComponent.CurrentController.Select(oRanges)
End Sub

Viel Erfolg!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Habe nach langem Suchen nun selbst etwas Brauchbares gefunden!!!
Der KeyHandler funktioniert in Calc!
Er muss einfach nur in ein Modul der Arbeitsmappe kopiert werden und die Sub "RegisterKeyHandler" mit dem Ereignis "Dokument öffnen" verknüpft werden!
Was ich noch nciht herausgefinden habe ist, welchem Code die POS1-Taste, die Pfeil-Tasten und die ENTF/EINFG-Tasten entsprechen.
Außerdem muss ich noch rausfinden, wie Tastenkombinationen abgefragt werden können.
Vielleicht kann mir dabei jemand helfen?
Viele Grüße
Lupo
Sub RegisterKeyHandler
Doc = ThisComponent.getCurrentController
oKeyHandler = createUnoListener("MyApp_", "com.sun.star.awt.XKeyHandler")
Doc.addKeyHandler(oKeyHandler)
End Sub
Sub UnregisterKeyHandler
Doc.removeKeyHandler(oKeyHandler)
End Sub
Sub MyApp_disposing(oEvt)
End Sub
Function MyApp_KeyPressed(oEvt) As Boolean
Doc = ThisComponent.getCurrentController
Cell = Doc.getselection()
if((oEvt.Keycode >= 257) and (oEvt.Keycode <= 260))then
if( oEvt.Keycode = 257)then
msgbox ("1 was pressed")
MyApp_KeyPressed = True
end if
if( oEvt.Keycode = 258)then
msgbox ("2 was pressed")
MyApp_KeyPressed = True
end if
if( oEvt.Keycode = 259)then
msgbox ("3 was pressed")
MyApp_KeyPressed = True
end if
if( oEvt.Keycode = 260)then
msgbox ("4 was pressed")
MyApp_KeyPressed = True
end if
else
MyApp_KeyPressed = False
end if
End Function
Function MyApp_KeyReleased(oEvt) As Boolean
MyApp_KeyReleased = False
End Function
Der KeyHandler funktioniert in Calc!
Er muss einfach nur in ein Modul der Arbeitsmappe kopiert werden und die Sub "RegisterKeyHandler" mit dem Ereignis "Dokument öffnen" verknüpft werden!
Was ich noch nciht herausgefinden habe ist, welchem Code die POS1-Taste, die Pfeil-Tasten und die ENTF/EINFG-Tasten entsprechen.
Außerdem muss ich noch rausfinden, wie Tastenkombinationen abgefragt werden können.
Vielleicht kann mir dabei jemand helfen?
Viele Grüße
Lupo
Sub RegisterKeyHandler
Doc = ThisComponent.getCurrentController
oKeyHandler = createUnoListener("MyApp_", "com.sun.star.awt.XKeyHandler")
Doc.addKeyHandler(oKeyHandler)
End Sub
Sub UnregisterKeyHandler
Doc.removeKeyHandler(oKeyHandler)
End Sub
Sub MyApp_disposing(oEvt)
End Sub
Function MyApp_KeyPressed(oEvt) As Boolean
Doc = ThisComponent.getCurrentController
Cell = Doc.getselection()
if((oEvt.Keycode >= 257) and (oEvt.Keycode <= 260))then
if( oEvt.Keycode = 257)then
msgbox ("1 was pressed")
MyApp_KeyPressed = True
end if
if( oEvt.Keycode = 258)then
msgbox ("2 was pressed")
MyApp_KeyPressed = True
end if
if( oEvt.Keycode = 259)then
msgbox ("3 was pressed")
MyApp_KeyPressed = True
end if
if( oEvt.Keycode = 260)then
msgbox ("4 was pressed")
MyApp_KeyPressed = True
end if
else
MyApp_KeyPressed = False
end if
End Function
Function MyApp_KeyReleased(oEvt) As Boolean
MyApp_KeyReleased = False
End Function
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
...prima: jetzt noch mit xray das oEvt untersuchen, dann bekommst Du auch noch die Modifiers mit...
Viel Erfolg!
Viel Erfolg!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Was muss ich mit xray machen? Hab's mir runtergeladen. Wo muss ich die Dateien speichern bzw. installieren?
Und mit welchem Befehl muss ich dann arbeiten, um die Modifiers auswerten zu können?
Vielen Dank und viele Grüße
Lupo
Und mit welchem Befehl muss ich dann arbeiten, um die Modifiers auswerten zu können?
Vielen Dank und viele Grüße
Lupo
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Xray von Bernard Marcelly - das sollte jeder kennen und nutzen, der Basic programmieren will....
Nach dem Herunterladen, Entpacken und Installieren (Dokument öffnen und die Schaltfläche nutzen) müssen die Bibliotheken geladen werden.
Nun kann innerhalb der eigenen Programmierung die Funktion eingesetzt werden, bspw. hier
Nun "durchleutet" xray das Objekt....
Das ist Spitze, oder?!
Nach dem Herunterladen, Entpacken und Installieren (Dokument öffnen und die Schaltfläche nutzen) müssen die Bibliotheken geladen werden.
Code: Alles auswählen
Sub XRayLaden
GlobalScope.BasicLibraries.Loadlibrary("XrayTool")
msgbox "Xray geladen / Xray loaded"
End Sub
Nun kann innerhalb der eigenen Programmierung die Funktion eingesetzt werden, bspw. hier
Code: Alles auswählen
Function MyApp_KeyPressed(oEvt) As Boolean
Doc = ThisComponent.getCurrentController
Cell = Doc.getselection()
xray oEvt
[...]
Das ist Spitze, oder?!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Hallo Winfried,
vielen Dank erstmal für deine Geduld.
Ich hab die Datei entpackt und nun viele xml.-Einzeldateien.
Was mach ich denn damit. In Calc hab ich nix gefunden, womit ich die Dateien installieren kann und wenn ich die Dateien selbst mit OO öffne bekomme ich zwar den Code angezeigt, kann ihn aber auch nicht installieren.
Welche der Dateien benötige ich denn überhaupt? Es gibt eine Datei Xrayinstallieren.xml, aber auch einen Ordner "Xray Tool", der wiederum xml-Dateien enthält.
Wenn ich die Dateien mit dem xml-Editor öffnen möchte, bekomme ich folgenden Fehlerhinweis:
Die XML-Seite kann nicht angezeigt werden
Die XML-Eingabe kann nicht angezeigt werden, wenn Stylesheet verwendet wird. Beheben Sie den Fehler und klicken Sie dann auf Aktualisieren, oder wiederholen Sie den Vorgang später.
--------------------------------------------------------------------------------
The system cannot locate the resource specified. Fehler beim Bearbeiten der Ressource 'module.dtd'. Fehler beim Bearbeiten...
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
Bitte hilf mir nochmal, ich denke ich stehe jetzt kurz vor dem Ziel.
Vielen Dank und viele Grüße
Lupo
vielen Dank erstmal für deine Geduld.
Ich hab die Datei entpackt und nun viele xml.-Einzeldateien.
Was mach ich denn damit. In Calc hab ich nix gefunden, womit ich die Dateien installieren kann und wenn ich die Dateien selbst mit OO öffne bekomme ich zwar den Code angezeigt, kann ihn aber auch nicht installieren.
Welche der Dateien benötige ich denn überhaupt? Es gibt eine Datei Xrayinstallieren.xml, aber auch einen Ordner "Xray Tool", der wiederum xml-Dateien enthält.
Wenn ich die Dateien mit dem xml-Editor öffnen möchte, bekomme ich folgenden Fehlerhinweis:
Die XML-Seite kann nicht angezeigt werden
Die XML-Eingabe kann nicht angezeigt werden, wenn Stylesheet verwendet wird. Beheben Sie den Fehler und klicken Sie dann auf Aktualisieren, oder wiederholen Sie den Vorgang später.
--------------------------------------------------------------------------------
The system cannot locate the resource specified. Fehler beim Bearbeiten der Ressource 'module.dtd'. Fehler beim Bearbeiten...
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
Bitte hilf mir nochmal, ich denke ich stehe jetzt kurz vor dem Ziel.
Vielen Dank und viele Grüße
Lupo
-
- **
- Beiträge: 32
- Registriert: So, 25.02.2007 09:11
- Wohnort: Ingolstadt
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Hallo Lupo
du warst wohl etwas übereifrig mit dem Entpacken
1. Heruntergeladene XRayTool52_en.zip entpacken
2. heraus kommt nur eine Datei XRayTool52_en.sxw (wenn du die auch noch entpackst bekommst du deine xml Datein - wollen wir aber nicht
)
3. XRayTool52_en.sxw mit OOO öffnen und auf der 4. Seite den Button Install Xray drücken
4. weiter mit Winfried's Erklärung
5. Strike
du warst wohl etwas übereifrig mit dem Entpacken
1. Heruntergeladene XRayTool52_en.zip entpacken
2. heraus kommt nur eine Datei XRayTool52_en.sxw (wenn du die auch noch entpackst bekommst du deine xml Datein - wollen wir aber nicht

3. XRayTool52_en.sxw mit OOO öffnen und auf der 4. Seite den Button Install Xray drücken
4. weiter mit Winfried's Erklärung
5. Strike

Zuletzt geändert von hawkhunter2002 am Sa, 30.06.2007 21:57, insgesamt 1-mal geändert.
OOO Basic Programmierers best Friend XRay-Tool
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Wenn Du Xray von der Sourceforge Website heruntergeladen hast, entpackst Du die *.zip-Datei und erhälst eine *.sxw
Diese Öffnen mit OOo. Makro-Ausführung erlauben. Du findest eine Schaltfläche "Install Xray" im Dokument: drücken.
Es werden zwei Bibliotheken installiert.
XrayDyn und XrayTool
Mit dem kleinen XRayLaden [vorige Nachricht] kannst Du vor einer Debug-Sitzung (zum Ausprobieren Deiner Makros) nun diese zwei B. laden.
In Deinem Code rufst Du Xray auf und gibst ihm das Objekt zur Untersuchung mit.
Klappt's nun?
Diese Öffnen mit OOo. Makro-Ausführung erlauben. Du findest eine Schaltfläche "Install Xray" im Dokument: drücken.
Es werden zwei Bibliotheken installiert.
XrayDyn und XrayTool
Mit dem kleinen XRayLaden [vorige Nachricht] kannst Du vor einer Debug-Sitzung (zum Ausprobieren Deiner Makros) nun diese zwei B. laden.
In Deinem Code rufst Du Xray auf und gibst ihm das Objekt zur Untersuchung mit.
Klappt's nun?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Hallo Winfried,
ich habe mittlerweile zwar eine Möglichkeit gefunden, wie ich den ALT-Key auswerten kann:
If oEvt.Keychar = "z" AND oEvt.MODIFIERS = com.sun.star.awt.KeyModifier.MOD2 Then
MsgBox "z+Alt ist nicht erlaubt!"
MyApp_KeyPressed = True
Exit Function
End If
Wenn ich dann MOD2 in MOD1 ändere, um den CTRL-Key auszuwerten funktioniert's aber nicht. Klappt bei mir nur mit ALT (MOD2).
Wo liegt der Fehler? Oder funktioniert diese Methode mit CTRL einfach nicht?
Das Installieren des X-Ray-Tools hat nun geklappt. Falls es also nur damit möglich sein sollte, CTRL auszuwerten, kanns hier weitergehen.
Aber wie werte ich nun aus, ob beispielsweise CTRL + DOWN gedrückt wurde?
Könntest du mir hierzu noch einen kurzen Beispielcode schicken?
Vielen Dank und viele Grüße
Lupo
ich habe mittlerweile zwar eine Möglichkeit gefunden, wie ich den ALT-Key auswerten kann:
If oEvt.Keychar = "z" AND oEvt.MODIFIERS = com.sun.star.awt.KeyModifier.MOD2 Then
MsgBox "z+Alt ist nicht erlaubt!"
MyApp_KeyPressed = True
Exit Function
End If
Wenn ich dann MOD2 in MOD1 ändere, um den CTRL-Key auszuwerten funktioniert's aber nicht. Klappt bei mir nur mit ALT (MOD2).
Wo liegt der Fehler? Oder funktioniert diese Methode mit CTRL einfach nicht?
Das Installieren des X-Ray-Tools hat nun geklappt. Falls es also nur damit möglich sein sollte, CTRL auszuwerten, kanns hier weitergehen.
Aber wie werte ich nun aus, ob beispielsweise CTRL + DOWN gedrückt wurde?
Könntest du mir hierzu noch einen kurzen Beispielcode schicken?
Vielen Dank und viele Grüße
Lupo
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
ich nehme hier mal an, dass die Kombination CTRL+Z vom Betriebssystem ("rückgängig") abgefangen wird....lupolupp1 hat geschrieben:Wo liegt der Fehler? Oder funktioniert diese Methode mit CTRL einfach nicht?
Andere Tasten findest Du im SDK
HTH
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Hi Winfried,
okay da habe ich zufällig eine belegte Kombination erwischt.
Aber auch mit anderen Tasten, insbesondere den Pfeiltasten funktioniert's bei mir nicht.
Welchen Code muss ich denn verwenden, um mit dem xray-Tool festzustellen, ob beispielsweise CTRL+DOWN gedrückt wurde?
Vielen Dank und viele Grüße
Lupo
okay da habe ich zufällig eine belegte Kombination erwischt.
Aber auch mit anderen Tasten, insbesondere den Pfeiltasten funktioniert's bei mir nicht.
Welchen Code muss ich denn verwenden, um mit dem xray-Tool festzustellen, ob beispielsweise CTRL+DOWN gedrückt wurde?
Vielen Dank und viele Grüße
Lupo
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Code: Alles auswählen
Function MyApp_KeyPressed(oEvt) As Boolean
Doc = ThisComponent.getCurrentController
Cell = Doc.getselection()
xray oEvt
[...]
CTRL+Down KeyCode 1024 KeyFunc 0 Modifiers 2
Auch CTRL+z funktioniert hier (demnach nehme ich das obige zurück):
KeyCode 537 KeyFunc 11 Modifiers 2
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Tastendruck in Calc abfangen und auswerten / zu Zelle spring
Hi Winfried,
prima! Vielen Dank.
Mittlerweile habe ich mir die neue Version 2.10 von der Novell Edition für Windows runtergeladen und
ES FUNKTIONIERT!
Hier nun mal der Gesamtcode für evtl. andere User mit dem gleichen Problem:
Option Explicit
Global ObjZelle
Global oKeyHandler
Global oDocController
Sub Main
UnregisterKeyHandler
End Sub
Sub RegisterKeyHandler
oDocController = ThisComponent.getCurrentController
oKeyHandler = createUnoListener("MyApp_", "com.sun.star.awt.XKeyHandler")
oDocController.addKeyHandler(oKeyHandler)
End Sub
Sub UnregisterKeyHandler
If Not IsNull(oDocController) AND NOT IsEmpty(oDocController) Then
oDocController.removeKeyHandler(oKeyHandler)
oDocController = NULL
EndIf
End Sub
Sub MyApp_disposing(oEvt)
End Sub
Function MyApp_KeyPressed(oEvt) As Boolean
Dim Cell
oDocController = ThisComponent.getCurrentController
Cell = oDocController.getselection()
ObjZelle=ThisComponent.Sheets(0).getCellByPosition(2,2)
ObjZelle.Value=oEvt.Keycode
If oEvt.KeyCode = com.sun.star.awt.Key.F1 AND oEvt.MODIFIERS = 0 Then
MsgBox "Ha ha, I will NOT allow you to use F1 today!"
MyApp_KeyPressed = True
Exit Function
End If
If oEvt.Keychar = "z" AND oEvt.MODIFIERS = com.sun.star.awt.KeyModifier.MOD2 Then
MsgBox "z+Alt ist nicht erlaubt!"
MyApp_KeyPressed = True
Exit Function
End If
If oEvt.Keycode=1024 AND oEvt.MODIFIERS =2 Then
msgbox("Du hast CTRL+DOWN gedrückt!")
End if
If oEvt.Keycode=1025 AND oEvt.MODIFIERS =2 Then
msgbox("Du hast CTRL+UP gedrückt!")
End if
If((oEvt.Keycode >= 257) and (oEvt.Keycode <= 260)) AND oEvt.MODIFIERS =2 Then
If ( oEvt.Keycode = 257) Then
msgbox ("1 was pressed")
MyApp_KeyPressed = True
EndIf
If ( oEvt.Keycode = 258) Then
msgbox ("2 was pressed")
MyApp_KeyPressed = True
EndIf
If ( oEvt.Keycode = 259) Then
msgbox ("3 was pressed")
MyApp_KeyPressed = True
EndIf
If ( oEvt.Keycode = 260) Then
msgbox ("4 was pressed")
MyApp_KeyPressed = True
EndIf
Else
'Print "Something else"
MyApp_KeyPressed = False
EndIf
End Function
Function MyApp_KeyReleased(oEvt) As Boolean
MyApp_KeyReleased = False
End Function
Vielen vielen Dank nochmal allen, die mir geholfen haben.
Lupo
prima! Vielen Dank.
Mittlerweile habe ich mir die neue Version 2.10 von der Novell Edition für Windows runtergeladen und
ES FUNKTIONIERT!
Hier nun mal der Gesamtcode für evtl. andere User mit dem gleichen Problem:
Option Explicit
Global ObjZelle
Global oKeyHandler
Global oDocController
Sub Main
UnregisterKeyHandler
End Sub
Sub RegisterKeyHandler
oDocController = ThisComponent.getCurrentController
oKeyHandler = createUnoListener("MyApp_", "com.sun.star.awt.XKeyHandler")
oDocController.addKeyHandler(oKeyHandler)
End Sub
Sub UnregisterKeyHandler
If Not IsNull(oDocController) AND NOT IsEmpty(oDocController) Then
oDocController.removeKeyHandler(oKeyHandler)
oDocController = NULL
EndIf
End Sub
Sub MyApp_disposing(oEvt)
End Sub
Function MyApp_KeyPressed(oEvt) As Boolean
Dim Cell
oDocController = ThisComponent.getCurrentController
Cell = oDocController.getselection()
ObjZelle=ThisComponent.Sheets(0).getCellByPosition(2,2)
ObjZelle.Value=oEvt.Keycode
If oEvt.KeyCode = com.sun.star.awt.Key.F1 AND oEvt.MODIFIERS = 0 Then
MsgBox "Ha ha, I will NOT allow you to use F1 today!"
MyApp_KeyPressed = True
Exit Function
End If
If oEvt.Keychar = "z" AND oEvt.MODIFIERS = com.sun.star.awt.KeyModifier.MOD2 Then
MsgBox "z+Alt ist nicht erlaubt!"
MyApp_KeyPressed = True
Exit Function
End If
If oEvt.Keycode=1024 AND oEvt.MODIFIERS =2 Then
msgbox("Du hast CTRL+DOWN gedrückt!")
End if
If oEvt.Keycode=1025 AND oEvt.MODIFIERS =2 Then
msgbox("Du hast CTRL+UP gedrückt!")
End if
If((oEvt.Keycode >= 257) and (oEvt.Keycode <= 260)) AND oEvt.MODIFIERS =2 Then
If ( oEvt.Keycode = 257) Then
msgbox ("1 was pressed")
MyApp_KeyPressed = True
EndIf
If ( oEvt.Keycode = 258) Then
msgbox ("2 was pressed")
MyApp_KeyPressed = True
EndIf
If ( oEvt.Keycode = 259) Then
msgbox ("3 was pressed")
MyApp_KeyPressed = True
EndIf
If ( oEvt.Keycode = 260) Then
msgbox ("4 was pressed")
MyApp_KeyPressed = True
EndIf
Else
'Print "Something else"
MyApp_KeyPressed = False
EndIf
End Function
Function MyApp_KeyReleased(oEvt) As Boolean
MyApp_KeyReleased = False
End Function
Vielen vielen Dank nochmal allen, die mir geholfen haben.
Lupo