i just want to add here a complain on my own :) quantifier inside the wxperl validators dont seem to work, e.g. "^/d{1,3}$" doesnt stops on the third digit and the method SetBellOnError also doesnt seem to work, i cant turn the bell of with it under win.
best herbert Am 20.03.2011 12:14, schrieb Erik Colson: > Ehlo, > > I've used Wx::Perl::TextValidator to limit accepted keypresses in > TextCtrl. This has been enough for controls till now but as I'm moving > to a broader user base I need to filter with more intelligence. > > Now I need to check that the user enters data to correspond to this > regex: (M|O|(NC?)|(\d+)). So at every moment the string in the control > must match this regex. What would be the recommended way to code this ? > Can this be done with a Validator ? > > Following is working by intercepting the EVT_TEXT event on the control: > (Ugly code, but working and explaining what I wish for...) > > EVT_TEXT ( > $self->gridInStock, $control, sub { > my ($self, $event) = @_ ; > my $curValue = $control->GetValue() ; > $curValue = uc($curValue) ; > if ( $curValue =~ m/(M|O|(NC?)|(\d+))/ ) { > $curValue = $1 ; > } else { > $curValue = "" ; > } ; > my $curPos = List::Util::max( $control->GetInsertionPoint(), > length($curValue) ) ; > $control->ChangeValue("$curValue") ; > $control->SetInsertionPoint($curPos) ; > }) > > Thanks for help! >