2012-03-23 8 views
0

私は、Perl Win32 :: GUIを使用してデスクトップアプリケーションを開発しています。その中で私は状態識別のためにProgress Barを使用しています。 私はプログレスバーの最大レベルを100として設定しました。その長さごとに値を上げています。 私は以下のサンプルコードを書いています。私は100を入力長に割ることによって、ステップアップ値を計算しています。その場合、入力の長さが奇数の場合、ステップ値は浮動小数点になります。したがって、プログレスバーは最大レベルを完全には完了しませんでした。 例として、長さが11の場合、ステップアップ値は9.09になります。 プログレスバーには9と表示されます。したがって、進捗レベルは99のセグメントしか完了しません。あなたの提案を教えてください。プログレスバーステップアップPerl Win32 :: GUI

use strict; 
use Win32; 
use Win32::GUI; 

my $DOS = Win32::GUI::GetPerlWindow();     
Win32::GUI::Hide($DOS); 

my $Upload_win=Win32::GUI::Window->new(
     -name => 'UploadWindow', 
     -text => 'SVN-CHIP-Upload-Tool-V2-HurixSystems', 
     -left => 375, 
     -top => 400, 
     -width =>520,#370, 
     -height =>520, 
     #-menu =>$Menu, 
     -background => [190,190,190], 
     -dialogui => 1, 
     -maximizebox => 0, 
); 

my $ProcessButton=$Upload_win->AddButton(
     -text => 'Upload', 
     -name => 'uploadbut', 
     -size => [90,25], 
     -pos => [200,360], 
     -background => [190,190,190], 
     -foreground => [], 
     -tabstop => 1, 
); 
my $Progress_bars=$Upload_win->AddProgressBar(
    -pos=>[20,400], 
    -background=>[0,255,85], 
    -smooth => 1, 
    -size=>[470,20], 

); 

$Upload_win->Show(); 
Win32::GUI::Dialog(); 
Win32::GUI::Hide($DOS); 

sub uploadbut_Click{ 

    $Progress_bars->SetRange(0,100); 
    my $x=11; 
    my $y=100/$x; 
    for(1..$x){ 
    Win32::GUI::DoEvents() >= 0; 
    $Progress_bars->SetStep($y); 
    $Progress_bars->StepIt(); 
    sleep 1; 
    } 
} 

答えて

1

あなたのステップとステップサイズの製品にプログレスバーの長さを設定できます。

#!perl 

use strict; 
use Win32; 
use Win32::GUI(); 

my $DOS = Win32::GUI::GetPerlWindow();     
Win32::GUI::Hide($DOS); 

my $Upload_win=Win32::GUI::Window->new(
    -name => 'UploadWindow', 
    -text => 'SVN-CHIP-Upload-Tool-V2-HurixSystems', 
    -left => 375, 
    -top => 400, 
    -width => 520, 
    -height =>520, 
    -background => [190,190,190], 
    -dialogui => 1, 
    -maximizebox => 0, 
); 

my $ProcessButton=$Upload_win->AddButton(
    -text => 'Upload', 
    -name => 'uploadbut', 
    -size => [90,25], 
    -pos => [200,360], 
    -background => [190,190,190], 
    -foreground => [], 
    -tabstop => 1, 
); 
my $Progress_bars=$Upload_win->AddProgressBar(
    -pos=>[20,400], 
    -background=>[0,255,85], 
    -smooth => 1, 
    -size=>[470,20], 
); 

$Upload_win->Show(); 
Win32::GUI::Dialog(); 
Win32::GUI::Hide($DOS); 

sub uploadbut_Click{ 
    my $intended_max = 100; 
    my $x = 11; 
    my $y = int($intended_max/$x); 

    $Progress_bars->SetRange(0,$x*$y); 

    for(1 .. $x){ 
     Win32::GUI::DoEvents(); 
     $Progress_bars->SetStep($y); 
     $Progress_bars->StepIt(); 
     Win32::Sleep(1000); 
    } 
} 
関連する問題