BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice 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 OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

Tasten in Makro übergeben

Alles zur Programmierung im OpenOffice.org
Antworten
El Schwalmo
Beiträge: 2
Registriert: Do 27. Nov 2008, 23:06

Tasten in Makro übergeben

Beitrag von El Schwalmo » Di 9. Feb 2010, 10:15

Hi Alle,

falls meine Frage schon diskutiert wurde, bitte ich um einen Link.

Mein Problem: Ich habe Tastenkombinationen mit PhraseExpress mit Makros belegt. Nun möchte ich diese in OpenOffice in Makros verwenden. Ist es möglich, dass ich in einer Routine den Tastendruck (beispielsweise Alt-1) angeben kann, und dass das Makro dann sozusagen diesen Tastendruck ausführt? In VBA soll das angeblich mit SetKeys gehen.

Mit aufgezeichneten Makros funktioniert das nicht, denn in diesem Fall wird in den Quelltext nicht der Druck auf diese Taste eingetragen, sondern das, was dieser Tastendruck bewirkt.

Knut
Beiträge: 1
Registriert: Sa 4. Dez 2010, 14:12

Re: Tasten in Makro übergeben

Beitrag von Knut » Sa 4. Dez 2010, 16:28

falls meine Frage schon diskutiert wurde, bitte ich um einen Link.

Mein Problem: Ich habe Tastenkombinationen mit PhraseExpress mit Makros belegt. Nun möchte ich diese in OpenOffice in Makros verwenden. Ist es möglich, dass ich in einer Routine den Tastendruck (beispielsweise Alt-1) angeben kann, und dass das Makro dann sozusagen diesen Tastendruck ausführt? In VBA soll das angeblich mit SetKeys gehen.

Mit aufgezeichneten Makros funktioniert das nicht, denn in diesem Fall wird in den Quelltext nicht der Druck auf diese Taste eingetragen, sondern das, was dieser Tastendruck bewirkt.

Hallo El Schwalmo,
ein ähnliches Problem hatte ich auch.
Ich habe mit das Buch "OpenOffice.org Basic" von "Computer & Technik" g "IBSN 3-936546-14-2" gekauft.
Auf den Seiten 343/344 stehen die Codes der verschiedenen Tasten

Hier der Code für die verschiedenen Tasten

Die Liste der alphanumerischen Tasten beginnt mit 512 für die Taste [A]

(A = 512, B= 51 C = 514, D = 515, E = 516, F = 517, G = 518, H = 519,1 = 520,
J = 521, K = 522, L = 523, M = 52 N = 525, O = 526, P = 527, Q = 528, R = 529,
S = 530, T = 531, U = 532, V = 533, W = 53 X = 535, Y = 536, Z = 537).

Die Werte für die Funktionstasten ab [Fl] beginnen bei 768
(F1 = 768, F2 = 769, F3 =770, F4 = 771, F5 = 772, F6 = 773, F7 = 774, F8 = 775,
F9 = 776, F10 = 777, F11 = 778, F12 = F13 = 780, F14 = 781, F15 = 782,
F16 = 783, F17 = 784, F18 = 785, F19 = 786, F20 = 787
F21 = 788, F22 = 789, F23 = 790, F24 = 791, F25 = 792, F26 =793).

const short DOWN 1024 Cursor
const short UP 1025 Cursor
const short LEFT 1026 Cursor
const short RIGHT 1027 Cursor
const short HOME 1028 Pos1 (Home)
const short END 1029 Ende(End)
const short PAGEUP 1030 Bild (PgUp)
const short PAGEDOWN 1031 Bild (PgDn)

Die Tasten des Cursorblocks werden ab 1024 gezählt:
Die weiteren Steuer- und Sondertasten beginnen ab dem Wert 12?80. Die höheren Werte
entsprend keinen direkt auf der Tastatur zuweisbaren Tasten:

const short RETURN 1280 Eingabetaste, Enter-Taste, Return-Taste
const short ESCAPE 1281 Abbruch, Esc
const short TAB 1282 Tabulator
const short BACKSPACE 1283 Rückschritt (Backspace)
const short SPACE 1284 Leertaste
const short INSERT 1285 Einfg (Ins)
const short DELETE 1286 Entf (Del)
const short ADD 1287 +
const short SUBTRACT 1288 -
const short MULTIPLY 1289 *
const short DIVIDE 1290 /
const short POINT 1291
const short COMMA 1292
const short LESS 1293 <
const short GREATER 1294 >
const short EQUAL 1295 =
const short OPEN 1296
const short CUT 1297
const short COPY 1298
const short PASTE 1299
const short UNDO 1300
const short REPEAT 1301
const short FIND 1302
const short PROPERTIES 1303
const short FRONT 1304
const short C0NTEXTMENU 1305 Die Windows-Taste »Kontextmenü« (unter der Eingabetaste bei PC-Tastauren mit Windows-Tasten)
const short HELP 1306

Anschliessend habe ich meine Version versucht.

'* --------------------------------------------------------------------
'* Aufruf beim Öffnen der Datei
'* Tastaturänderungen abfragen
Sub RegisterKeyHandler
oDoc = ThisComponent.getCurrentController
oKeyHandler = createUnoListener("MyApp_", "com.sun.star.awt.XKeyHandler")
oDoc.addKeyHandler(oKeyHandler)
End Sub

'* --------------------------------------------------------------------
Sub UnregisterKeyHandler
oDoc.removeKeyHandler(oKeyHandler)
End Sub

'* --------------------------------------------------------------------
Sub MyApp_disposing(oEvt)
'* keine Befehle
End Sub

'* --------------------------------------------------------------------
Function MyApp_KeyReleased(oEvt) As Boolean
'* MsgBox "MyApp_KeyReleased",64,"Meldung"
MyApp_KeyReleased = False
End Function

'* --------------------------------------------------------------------
'* aufgerufen von "Taste gedrückt" im Feld "sABID" (Zahleneingabe)

Function MyApp_KeyPressed(oEvt) As Boolean
If((oEvt.KeyCode >= 768) and (oEvt.KeyCode <= 1307)) then
If (oEvt.KeyCode = 769) then
If bF2 Then '* F2-Taste mit "Pos1"-Taste Wechselgeld eingeben
bF2 = False
bf5 = False
bf7 = False
bF11 = False
bF12 = False
sFTasten = "gegeben"
Else
sFTasten = ""
End If
MyApp_KeyPressed = True
FTastenSchreiben
End If
If (oEvt.KeyCode = 772) Then
If bf5 Then '* F5-Taste mit "Pos1"-Taste Z-Bon Kassenbestand
bF2 = False
bf5 = False
bf7 = False
bF11 = False
bF12 = False
sFTasten = "Z-Bon Kassenbestand"
Else
sFTasten = ""
End If
MyApp_KeyPressed = True
FTastenSchreiben
End If
If(oEvt.KeyCode = 774) Then '* F7-Taste Rabatt
If bf7 Then '* F7-Taste mit "Pos1"-Taste X-Bon Kassenbestand
bF2 = False
bf5 = False
bf7 = False
bF11 = False
bF12 = False
sFTasten = "X-Bon Kassenbestand"
Else
sFTasten = "Rabatt"
End If
MyApp_KeyPressed = True
FTastenSchreiben
End If
If (oEvt.KeyCode = 776) Then '* F9-Taste Gutschein
MyApp_KeyPressed = True
sFTasten = "Gutschein"
FTastenSchreiben
End If
If(oEvt.KeyCode = 777) Then '* F10-Taste Rückgängig
MyApp_KeyPressed = True
sFTasten = "Rückgängig"
FTastenSchreiben
End If
If (oEvt.KeyCode = 778) Then
MyApp_KeyPressed = True '* F11-Taste Bon noch einmal drucken
If bF11 Then '* F11-Taste mit "Pos1"-Taste Stornierung des Einkaufs
bF2 = False
bf5 = False
bf7 = False
bF11 = False
bF12 = False
sFTasten = "Stornierung des Einkaufs"
Else
sFTasten = "Bon 2. mal drucken"
End If
FTastenSchreiben
End If
If (oEvt.KeyCode = 779) Then '* F12-Taste Rechnungsdruck
If bF12 Then '* F12-Taste mit "Pos1"-Taste Kassenstart am nächsten Tag
bF2 = False
bf5 = False
bf7 = False
bF11 = False
bF12 = False
sFTasten = "Kassenstart"
Else
sFTasten = "Rechnungsdruck"
End If
MyApp_KeyPressed = True
FTastenSchreiben
End If
If (oEvt.KeyCode = 1031) Then '* Bild unten Zwischensumme
MyApp_KeyPressed = True
sFTasten = "Zwischensumme"
FTastenSchreiben
End If
If (oEvt.KeyCode = 1287) Then '* + EC-Zahlung
MyApp_KeyPressed = True
sFTasten = "EC-Zahlung"
oDialog.getControl("sABID").text = ""
FTastenSchreiben
End If
If (oEvt.KeyCode = 1280) Then '* Enter Barzahlung
MyApp_KeyPressed = True
sFTasten = "Barzahlung"
FTastenSchreiben
End If
If (oEvt.KeyCode = 1024) Then '* Pfeil unten Schmuck
MyApp_KeyPressed = True
If NOT BfMulti Then
sFTasten = "Schmuck"
FTastenSchreiben
Else
BfMulti = FALSE
End If
End If
If (oEvt.KeyCode = 1025) Then '* Pfeil oben Zubehör
MyApp_KeyPressed = True
If NOT BfMulti then
sFTasten = "Zubehör"
FTastenSchreiben
Else
BfMulti = FALSE
End If
End If
If (oEvt.KeyCode = 1026) Then '* Pfeil links B-Ware
MyApp_KeyPressed = True
If NOT BfMulti Then
sFTasten = "B-Ware"
FTastenSchreiben
Else
BfMulti = FALSE
End If
End If
If (oEvt.KeyCode = 1027) Then '* Pfeil rechts Perlen
MyApp_KeyPressed = True
If NOT BfMulti Then
sFTasten = "Perlen"
FTastenSchreiben
Else
BfMulti = FALSE
End If
End If
If (oEvt.KeyCode = 1289) Then '* "*"-Taste (Multiplizieren)
MyApp_KeyPressed = True
sFTasten = "Multiplikator"
BfMulti = True
FTastenSchreiben
End If
If (oEvt.KeyCode = 1028) Then '* Pos1-Taste gedrückt für Fxx-Tasten
MyApp_KeyPressed = True
bF2 = True
bf5 = True
bf7 = True
bF11 = True
bF12 = True
End If
Else
MyApp_KeyPressed = False
End If
End Function

Erst wird die Funktionstaste gemerkt, dann die eigentliche Taste.

Bei mir funktioniert das
ste

Antworten