Hallo,
was ich suche: wie kann ich den Wert auslesen den die Eingabetaste in einem Textfeld hat?
Kann man diese Frage überhaupt verstehen? In ein Textfeld soll ein Wort eingegeben werden und nach drücken der Eingabetaste soll das Wort in eine Tabelle oder sonstwohin geschrieben werden. Ich stelle mir also vor dem Ereignis "Text modifiziert" ein Makro zuzuweisen, welches nach einer Prüfung des Wertes des letzten Zeichens nur dann weiter läuft, wenn der Wert der Eingabetaste erkannt wird.
Sicher könnte man die Eingabe auch mit einem extra Button beenden, aber ich halte das nicht für besonders intuitiv. Wie dem auch sei, falls mir jemand einen Hinweis geben kann wäre ich mal wieder sehr dankbar....
schöne Grüße
Georg
ps noch was anderes: kann man makros auch ausführen ohne openoffice geöffnet zu haben??
aktion nach "enter" in einem textfeld (dialog)
Moderator: Moderatoren
Hallo Georg,
wenn ich Dich richtig verstanden habe möchtest Du die Eingaben in einem Textfeld im Dialog auswerten !?
Warum verwendest Du da nicht einfach das Ereignis "Taste losgelassen" des Textfeldes und verknüpfst das Ganze mit einer entsprechenden Routine ? Darin merkst Du Dir einfach jedesmal den Inhalt des Textfeldes. Wenn sich dieser zum vorherigen Aufruf nicht geändert hat, wurde eine Steuertaste gedrückt, sehr wahrscheinlich Enter oder eine Pfeiltaste.
Vielleicht hilft Dir das ja weiter.
wenn ich Dich richtig verstanden habe möchtest Du die Eingaben in einem Textfeld im Dialog auswerten !?
Warum verwendest Du da nicht einfach das Ereignis "Taste losgelassen" des Textfeldes und verknüpfst das Ganze mit einer entsprechenden Routine ? Darin merkst Du Dir einfach jedesmal den Inhalt des Textfeldes. Wenn sich dieser zum vorherigen Aufruf nicht geändert hat, wurde eine Steuertaste gedrückt, sehr wahrscheinlich Enter oder eine Pfeiltaste.
Vielleicht hilft Dir das ja weiter.
Viele Grüße aus dem Thüringer Wald,
Carsten
Carsten
Hallo Georg,
Gruss
Thomas
Zumindest darauf mal eine kurze Antwort: Jein. Je nach Version . Ab 2.0 kannst du Makros ausführen, ohne dass eine sichtbare Komponente von OOo ausgeführt wird. Allerdings wird immer zumindest der "Stardesktop" geladen, das Grundobjekt, das aber dann nicht mehr unbedingt eine sichtabre Komponente haben muss. In Version 1.1 muss meines Wissens immer eine sichtbare Komponente noch da sein, sonst läuft der Rest nicht.ps noch was anderes: kann man makros auch ausführen ohne openoffice geöffnet zu haben??
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
So trivial ist sein Problem leider nicht, das habe ich festgestellt, als ich mich mit etwas Ähnlichem beschäftigt habe.ck hat geschrieben:Hallo Georg,
wenn ich Dich richtig verstanden habe möchtest Du die Eingaben in einem Textfeld im Dialog auswerten !?
Warum verwendest Du da nicht einfach das Ereignis "Taste losgelassen" des Textfeldes und verknüpfst das Ganze mit einer entsprechenden Routine ? Darin merkst Du Dir einfach jedesmal den Inhalt des Textfeldes. Wenn sich dieser zum vorherigen Aufruf nicht geändert hat, wurde eine Steuertaste gedrückt, sehr wahrscheinlich Enter oder eine Pfeiltaste.
Zum einen würde Deine Methode bei jedem Tastenanschlag im entsprechenden Textfeld reagieren, also auch dann, wenn der Text eingetragen wird, zum anderen ist es zumindest mir nicht gelungen, innerhalb eines Dialoges die Entertaste (Chr(13)) auf einfachem Weg auszuwerten. Seither vertrete ich die Auffassung, dass in einem laufenden Dialog seitens OO die Entertaste überhaupt nicht beachtet wird (Ausnahme: das aktuelle Control ist ein CommandButton).
Es geht aber dennoch. Notwendig dazu ist allerdings ein KeyListener, der auf das jeweilige Control (Textfeld, ComboBox o.ä.) registriert wird. Den vollständigen Code für einen Dialog mit 17 Controls gibt es hier.
Verkürzt für ein Textfeld:
Code: Alles auswählen
Sub RegisterKeyListener
MeinTextfeld=MeinDialog.getControl("MeinTextfeld")
oKeyListener = createUnoListener("oKey_", "com.sun.star.awt.XKeyListener")
MeinTextfeld.addKeyListener(oKeyListener)
End Sub
Sub UnregisterKeyListener
MeinTextfeld=MeinDialog.getControl("MeinTextfeld")
MeinTextfeld.removeKeyListener(oKeyListener)
End Sub
Function oKey_KeyPressed(oEvt) As Boolean
select case oEvt.KeyChar
case chr(13)
'Hier kann man jetzt mit dem Textfeld machen, was man möchte
'Z.B. den Wert des Textfeldes in eine Zelle schreiben
case else
oKey_KeyPressed = False
end select
End Function
Function oKey_KeyReleased(oEvt) As Boolean
oKey_KeyReleased = False
End Function
Sub oKey_disposing(oEvt)
'Muß immer vorhanden sein, auch wenn keine weitere Funktion auszulösen ist.
End Sub
Viele Grüße,
Vanished