Thread [Wx] wxTextCtrl und Ereignisse bei Tastendruck (2 answers)
Opened by Jürgen at 2015-04-30 10:00

Gast Jürgen
 2015-04-30 10:00
#180884 #180884
Hallo Perl-Community,

leider bin ich wieder mal auf eure Hilfe angewiesen:

Ich habe mir eine GUI mit WxFormBuilder erstellt.
Konkret geht es um das Widget "wxTextCtrl"

Ich nutze das Control zur einfachen Texteingabe.
Ich hätte nun gerne, dass ich bei folgenden Tastendrücke, folgende "Dinge" passieren:
- Tabulator-Taste: es sollen zwei Leerzeichen anstatt eines Tabs ausgegeben werden
- ESC-Taste: das gesamte Fenster soll einfach geschlossen werden

Ich habe es schon mit folgendem versucht, aber der Erfolg war mäßig :(
- mit Hilfe des Events "EVT_CHAR" in eine Funktion springen. Hier habe ich dann mittels:
Code (perl): (dl )
1
2
  my ( $this, $event ) = @_;
  my $key   = $event->GetKeyCode();

den Key-Code ausgelesen, und wenn er dem Wert des Tabulator-Taste entspricht, dann gebe ich auf das TextCtrl zwei Leerzeich aus.
So weit - so gut: mein Problem ist jetzt aber, dass ich keine anderen Eingaben mehr in dem TextCtrl sehe - ich kann nur noch mit der TAB-Taste Leerzeichen "reinmachen" :(

Nächster Versuch: in der eben beschriebenen Funktion habe ich den Code folgendermaßen erweitert:
Code (perl): (dl )
1
2
3
4
5
6
7
8
  if ( $key == WXK_TAB ){
    $this->FindWindow(Wx::XmlResource::GetXRCID('textCtrl_usr_input'))->AppendText('  ');
  }
  else{
        if($key >= 32 ){
      $this->FindWindow(Wx::XmlResource::GetXRCID('textCtrl_usr_input'))->AppendText(sprintf("%c", $key));
    }
  }


Damit machte die TAB-Taste zwei Leerzeichen und ich kann meine "Buchstaben" schön eingeben.
Wenn ich jedoch Tasten wie "DEL", Pfeiltasten etc benutze, macht er mir nur komische Zeichen und ich kann im Text nicht mehr navigieren :(

Für das "Schließen" des Fensters mittels "ESC"-Taste hab ich noch nicht den leisesten Ansatz, da die ESC-Taste wohl keinen Key-Code hat :(

Was mache ich falsch?

Achja - nud vielleicht weiß auch jemand, wie ich es anstelle, dass wenn ich am Zeilenanfang zwei Leerzeichen habe, dass ich beim Springen in eine neue Zeile mittels "Enter" automatisch auch zwei Leerezichen am Anfang bekomme...

Kann mich bitte jemand in die richtigige Richtung schubsen?

Grüße
Jürgen
Last edited: 2015-04-30 10:12:35 +0200 (CEST)

View full thread [Wx] wxTextCtrl und Ereignisse bei Tastendruck