Как мне прочитать текстовый файл для отображения в richedit и показать сообщение, когда это удастся? - PullRequest
1 голос
/ 16 января 2011

Ниже мой Perl-код.Мне нужна помощь с:

  1. как отобразить вывод в richedit при загрузке текстового файла, содержащего список строк по 100 именам.

  2. после отображения вывода в richedit появится маленькое окно с сообщением (всплывающее окно) с сообщением «Ваш список имен был успешно загружен».


use Win32::GUI;

$Win = new Win32::GUI::Window(
    -left   => 341,
    -top    => 218,
    -width  => 300,
    -height => 300,
    -name   => "Win",
    -text   => "Open File Read and Display Popup"
);

$Win->Show();

$Win->AddTextfield(
    -text   => "Load Your File TXT Here",
    -name   => "Textfield_1",
    -left   => 4,
    -top    => 24,
    -width  => 278,
    -height => 20,
);

$Win->AddButton(
    -text       => "Click Here To Load",
    -name       => "Button_1",
    -left       => 6,
    -top        => 48,
    -width      => 275,
    -height     => 21,
    -foreground => 0,
    -onClick    => \&Load1,

);

$Win->AddRichEdit(
    -text   => "",
    -name   => "RichEdit_1",
    -left   => 5,
    -top    => 72,
    -width  => 275,
    -height => 169,
);

$Win->AddStatusBar(
    -text   => "",
    -name   => "StatusBar_1",
    -left   => 0,
    -top    => 248,
    -width  => 290,
    -height => 17,
);

Win32::GUI::Dialog();

sub Win_Terminate {
    return -1;
}

sub Load1 {

    my $file1 = Win32::GUI::GetOpenFileName(
        -owner => $Win,                   # Main window for modal dialog
        -title => "Load Name List ...",

        # Dialog title
        -filter => [                      # Filter file
            'Name List(*.txt)' => '*.txt',
            'All files'        => '*.*',
        ],
        -directory => ".",                # Use current directory
    );

    # Have select a file ?
    if ($file1) {

        # Load file to animation control
        $Win->Textfield_1->Text(
            $file1);
    }

    # Or an error messagebox with error.
    elsif (Win32::GUI::CommDlgExtendedError()) {
        Win32::GUI::MessageBox(0, "ERROR : " . Win32::GUI::CommDlgExtendedError(), "GetOpenFileName Error");
    }
    $Win->{Button_1}->Text('Edit');
    $file1 = 1;
}

Ответы [ 2 ]

0 голосов
/ 17 января 2011

Полная версия Ответ

use Win32::GUI;

$Win = new Win32::GUI::Window(
    -left   => 341,
    -top    => 218,
    -width  => 300,
    -height => 300,
    -name   => "Win",
    -text   => "Open File Read and Display Popup"
);

$Win->Show();

$Win->AddTextfield(
    -text   => "Load Your File TXT Here",
    -name   => "Textfield_1",
    -left   => 4,
    -top    => 24,
    -width  => 278,
    -height => 20,
    -prompt => "Input birthday:",
);
$Win->Textfield_1->SetFocus();

$Win->AddButton(
    -text       => "Click Here To Load",
    -name       => "Button_1",
    -left       => 6,
    -top        => 48,
    -width      => 275,
    -height     => 21,
    -foreground => 0,
    -onClick    => \&Load1,

);

$Win->AddRichEdit(
    -text   => "",
    -name   => "RichEdit_1",
    -left   => 5,
    -top    => 72,
    -width  => 275,
    -height => 169,
);

$Win->AddStatusBar(
    -text   => "",
    -name   => "StatusBar_1",
    -left   => 0,
    -top    => 248,
    -width  => 290,
    -height => 17,
);

Win32::GUI::Dialog();

sub Win_Terminate {
    return -1;
}

sub Load1 {

    my $file1 = Win32::GUI::GetOpenFileName(
        -owner => $Win,                   # Main window for modal dialog
        -title => "Load Name List ...",

        # Dialog title
        -filter => [                      # Filter file
            'Name List(*.txt)' => '*.txt',
            'All files'        => '*.*',
        ],
        -directory => ".",                # Use current directory
    );

    # Have select a file ?
    if ($file1) {

        # Load file to animation control
        $Win->Textfield_1->Text($file1);
        my $data = do {
            local $/;
            open my $in, "<", $file1 or die "$file1: $!";
            <$in>
        };
        $Win->RichEdit_1->Text($data);
        Win32::GUI::MessageBox($Win, "A message", "App Title", MB_ICONINFORMATION);
    }

    # Or an error messagebox with error.
    elsif (Win32::GUI::CommDlgExtendedError()) {
        Win32::GUI::MessageBox(0, "ERROR : " . Win32::GUI::CommDlgExtendedError(), "GetOpenFileName Error");
    }
    $Win->{Button_1}->Text('Edit');
    $file1 = 1;

}

Как изменить Win32::GUI::MessageBox($Win,"A message","App Title",MB_ICONINFORMATION); с индикатором прогресса

0 голосов
/ 16 января 2011

Вы можете установить текст richedit с помощью метода Text.В обработчик Load1 добавьте следующее для отображения списка имен:

my $data = do { local $/; open my $in,"<",$file1 or die "$file1: $!"; <$in> };
$Win->RichEdit_1->Text($data);

Окно сообщения может отображаться с функцией Win32::GUI::MessageBox:

Win32::GUI::MessageBox($Win,"A message","App Title",MB_ICONINFORMATION);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...