Thread Validate für text Widget ? (3 answers)
Opened by Kalle at 2010-03-19 09:47

Kalle
 2010-03-20 17:05
#135094 #135094
User since
2007-03-18
48 Artikel
BenutzerIn
[default_avatar]
So...Problem gelöst. Hatte die Notwendigkeit von bindtags falsch eingeschätzt und demnach weggelassen (aus einem Stueck Code von 'Lamprecht' in de.comp.lang.perl.misc)

Auszug aus der Beschreibung:

Quote
The order of the elements in tagList determines the order in which binding scripts are executed in response to events.


So gehts ohne, daß bei CTRL-S ein Steuerzeichen in den Text übernommen wird und auch bei CTRL-f wird der Zeichenvorschub unterdrückt.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/local/bin/perl
use strict;
use warnings;
use Tk;
use Tk::TextUndo;

my $mw=MainWindow->new(-title=>'CTRL-S Test');
# Scrolled weggemacht und schon gehts
my $text = $mw->TextUndo(-width=>40, -height=>15)->pack;
my $closebutton = $mw->Button(-text=>'Close', -command=>sub {$mw->destroy;})->pack(-fill=>'x');

$text->focus(); 
$text->bind('myValidate', '<KeyPress>', [\&text_validate,Ev('A')]); 
$text->bindtags(['myValidate',$text->bindtags]); 

MainLoop();

sub text_validate {
  my ($text,$A) = @_; 

  if ($A eq chr(19)) { #CTRL-s gedrückt
   print "CTRL-s gedrueckt. speichern.\n";
   save_me();
   $text->break;
  }
  elsif ($A eq chr(6)) {
   print "CTRL-f gedrueckt. Zeige Find Popup.\n";
   $text->FindPopUp;
   $text->break;
  }
  else {
   print "weiter\n";
  }
}

sub save_me {
print "saved\n";
}


Warum ich auch noch 'Scrolled' rausnehmen musste, weiss ich allerdings noch nicht.

Gruß

Kalle

View full thread Validate für text Widget ?