Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]4905[/thread]

Entry -> Maxlength



<< >> 4 Einträge, 1 Seite
Froschpopo
 2005-04-03 20:31
#43166 #43166
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
in perldoc Tk::Entry steht nichts von ner Möglichkeit den Inhalt von Entry auf ne maxlength zu begrenzen. Gibts sowas? Bisher schneide ich den String zwar einfach mit substr() ab, aber da das ja Tk ist könnt ich das ja auch gleich in der Entry lösen, dann kann ich mir das substr sparen
coax
 2005-04-03 21:18
#43167 #43167
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Mit der -validatecommand Option kannst du alle Eingaben pruefen (genaueres in der perldoc zu Tk::Entry).
Code: (dl )
1
2
3
4
5
  my $maxlength = 10;

 my $mw = tkinit;
 $mw->Entry(-validatecommand => sub { $_[3] + 1 <= $maxlength ? 1 : 0  },
            -validate => 'all')->pack();

Du kannst aber ebenfalls mit bind auf den 'Key'-Event ein Callback setzten der die Eingabe auf die richtige Laenge stutzt.
,,Das perlt aber heute wieder...'' -- Dittsche
Froschpopo
 2005-04-03 21:25
#43168 #43168
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
danke funzt prima, wieso eigentlich $_[3] ? wo kommt der her?
coax
 2005-04-03 21:47
#43169 #43169
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Quote
perldoc Tk::Entry
(Sektion: VALIDATION)

      The validateCommand and invalidCommand are called with the
      following arguments:

      * The proposed value of the entry.  If you are configuring
      the entry widget to have a new textvariable, this will be
      the value of that textvariable.
      * The characters to be added (or deleted). This will be
      "undef" if validation is due to focus, explcit call to
      validate or if change is due to "-textvariable" changing.
      * The current value of entry i.e. before the proposed
      change.
      * index of char string to be added/deleted, if any. -1
      otherwise
      * type of action. 1 == INSERT, 0 == DELETE, -1 if it's a
      forced validation or textvariable validation

Danach ist $_[3] der Index des Zeichens das hinzugefuegt wird.
Jetzt hab ich aber gemerkt, das gibt Probleme, mir war naemlich so als waere das die Laenge des Textes (falsch in Erinnerung gehabt).
Aender den Code bitte so ab:
Code: (dl )
$mw->Entry(-validatecommand => sub { length $_[0]  <= $maxlength},

Der ?: Teil war auch soooowas von ueberfluessig ;)\n\n

<!--EDIT|coax|1112550507-->
,,Das perlt aber heute wieder...'' -- Dittsche
<< >> 4 Einträge, 1 Seite



View all threads created 2005-04-03 20:31.