2011-05-05 11 views
0

J'ai modifié la solution de RouMao dans mon exemple de code ci-dessous.Comment ajouter un saut de ligne dans un Wx :: textCtrl


selon la réponse acceptée à this question here on stackoverflow, je devrais être en mesure d'ajouter des lignes supplémentaires à un Wx :: TextCtrl en terminant le texte ci-joint avec « \ n ».

my $t = Wx::TextCtrl->new($p, -1, "$title\n" ,[-1,-1],[600,260]); 
$t->{TERM}->AppendText("another line\n"); 

Malheureusement, cela ne semble pas fonctionner, comme le montre le code suivant. Je cours Strawberry Perl sur Windows XP.

package main; 
use Modern::Perl; 
WxMultiLineCtrl->new()->MainLoop();  

package WxMultiLineCtrl; 

use base qw(Wx::App); 
use Wx qw (wxVERTICAL wxTOP wxGROW wxHORIZONTAL wxTE_MULTILINE 
      wxFIXED_MINSIZE wxLEFT); 

use Wx::Event qw(EVT_BUTTON); 

sub OnInit { 

    my $app = shift ; 

    my $title='MultiLine Wx Text Control'; 
    my $frame = Wx::Frame->new( undef ,-1,$title,[-1, -1],[640,280]); 
    my $p = Wx::Panel->new( $frame, -1); 
    my $v0= Wx::BoxSizer->new(wxVERTICAL); 
    my $h1= Wx::BoxSizer->new(wxHORIZONTAL); 
    my $h2= Wx::BoxSizer->new(wxHORIZONTAL); 
    my $term  = Wx::TextCtrl->new( $p, -1 
             , "$title\n" 
             , [-1,-1],[600,260] 
             , wxTE_MULTILINE 
            ); 
    my $cancelBtn = Wx::Button->new( $p, -1, "cancel" ,[-1,-1],[-1,-1]); 
    my $addTxtBtn = Wx::Button->new( $p, -1, "add text",[-1,-1],[-1,-1]); 
    $p->{TERM}=$term; 
    EVT_BUTTON( $p, $cancelBtn, \&cancel); 
    EVT_BUTTON( $p, $addTxtBtn, \&addTxt); 
    $v0->Add($h1,1,wxLEFT); 
    $v0->Add($h2,1,wxLEFT); 
    $h1->Add($term  , 1, wxTOP | wxGROW   , 5); 
    $h2->Add($cancelBtn , 1, wxTOP | wxFIXED_MINSIZE , 5); 
    $h2->Add($addTxtBtn , 1, wxTOP | wxFIXED_MINSIZE , 5); 
    $p->SetSizer($v0); 
    $p->SetAutoLayout(1); 
    $app->SetTopWindow($frame); 
    $frame->Show(1);   
} 

sub addTxt {shift->{TERM}->AppendText("another line\n");} 
sub cancel {exit;} 
+0

Je ne peux pas m'empêcher de remarquer que l'autre question concernait 'wxpython', et celle-ci concerne' wxperl'. – TLP

+0

@TLP: Oui, mais comme Wx est un framework portable que j'ai supposé (comme à 100% sûr), le fonctionnement interne serait le même! – lexu

Répondre

3

Selon le manual of wxWidgetwxTE_MULTILINE style peut être défini que lors de la création de contrôle. Vous devez donc changer le code comme suit:

#my $term  = Wx::TextCtrl->new($p, -1, "$title\n" ,[-1,-1],[600,260]); 
#$term->SetWindowStyle(wxTE_MULTILINE); 
my $term = Wx::TextCtrl->new($p, -1, "$title\n" ,[-1,-1],[600,260], wxTE_MULTILINE); 

Cela devrait fonctionner!

+0

Je vais essayer de vous le faire savoir! merci – lexu

+0

Yepp, qui a fait l'affaire ... merci! – lexu

Questions connexes