• Perl + Win32::GUI - Как отменить стандартное поведение обработчика события?

    @UraBogort
    use Win32::GUI();
    
    $w = Win32::GUI::Window->new(
      -size => [300, 200],
    );
    
    $w->AddTextfield(
      -name => 'tf',
      -pos => [10, 10],
      -size => [100, 20],
      -text => '',
    );
    
    $w->Center();
    $w->Show();
    
    Win32::GUI::Dialog();
    
    sub w_Terminate {
        return -1;
    }
    sub tf_Update {
    
      my $buf = $w->tf->Text();
      $buf=~s/(\s|\d)//;                        #фильтруем цифры буквы
      $w->tf->Text($buf);
      #$w->tf->SetSel(length($buf),length($buf));
      $w->tf->SetSel( $buf=length($buf), $buf); #как установить курсор а конец красивее? Я незнаю!
      
      return 1;
      
    }
    __END__
    #или так
    sub tf_Update {
    
        my @gs  = $w->tf->GetSel();
        my $buf = $w->tf->Text();
        if ( $buf =~ s/(\s|\d)// ) {
            $w->tf->Text($buf);
            if ( $gs[0] > 0 ) {
                $w->tf->SetSel( $gs[0] - 1, $gs[0] - 1 );
            }
        }
    
        return 1;
    }
    Ответ написан
    Комментировать