Трабла с progressBar

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by u4iteor, 24 Mar 2011.

  1. u4iteor

    u4iteor Member

    Joined:
    14 Feb 2010
    Messages:
    0
    Likes Received:
    8
    Reputations:
    0
    Трабла с progressBar - С#

    Что то у меня сегодня траблы одни =)

    Подскажите, пожалуйста, как рандомно заполнить progressBar1 за n-ое количество времени.

    То есть задается программно интервал, за которой прогресБар заполняется на 100% рандомно.
    (Например, время 5 сек.
    1 сек. - 20% заполнено
    2 cек. - 40% заполнено
    3 сек - 60 % заполнено
    4 сек. - 90 % заполнено
    5 сек. - 100% заполнено
    )

    Спасибо всем большое за ответ
     
    #1 u4iteor, 24 Mar 2011
    Last edited: 24 Mar 2011
  2. patcher

    patcher Banned

    Joined:
    15 Dec 2009
    Messages:
    190
    Likes Received:
    37
    Reputations:
    10
    Ну самое простое решение напрашивается само по себе. Закидаешь на форму ProgressBar, Button и Timer. Выставляешь интервал в таймере и свойство Enabled в False. По клику на кнопку пишешь следующее:
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var k:integer;
    begin
    ProgressBar1.Max:=k;
    ProgressBar1.Position:=0;
    Timer1.Enabled:=true;
    end;
    
    Где k играет роль количества пробегов Timer (тоесть если к=5 и интервал таймера 1000, то через 5 сек будет 100%)

    Событие по таймеру программируешь следующим образом:
    Code:
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    ProgressBar1.Position:=ProgressBar1.Position+1;
    if ProgressBar1.Position=ProgressBar1.Max then begin
    Timer1.Enabled:=false;
    ShowMessage('Загрузка завершена!');
    end;
    end;
    
    Вместо вывода сообщения делаешь то, что должно произойти после достижения ProgressBar'ом отметки в 100%.
     
  3. u4iteor

    u4iteor Member

    Joined:
    14 Feb 2010
    Messages:
    0
    Likes Received:
    8
    Reputations:
    0
    Спасибо большое!
    Только у меня еще два вопроса:
    1) Разве здесь будет увеличиваться на рандомное количество процентов?
    2) Можно этот же пример на С# :)

    Спасибо большое!
     
  4. u4iteor

    u4iteor Member

    Joined:
    14 Feb 2010
    Messages:
    0
    Likes Received:
    8
    Reputations:
    0
    Спасибо большое ! :)
    Но главный вопрос: как сделать рандом? =)
     
  5. patcher

    patcher Banned

    Joined:
    15 Dec 2009
    Messages:
    190
    Likes Received:
    37
    Reputations:
    10
    Нет, будет не рандомно, но модифицировать минуты 3 работы.
    К сожалению нету Сишки под рукой да и не очень силен в ней, но думаю перевести данный код ни Си большого труда не составит
     
  6. u4iteor

    u4iteor Member

    Joined:
    14 Feb 2010
    Messages:
    0
    Likes Received:
    8
    Reputations:
    0
    Всем спасибо, особенно fd00ch за то что научил меня думать!:)
    Если у кого то еще есть оригинальные решения - плиз в теме
     
  7. eclipse

    eclipse Member

    Joined:
    19 Dec 2010
    Messages:
    155
    Likes Received:
    74
    Reputations:
    85
    Code:
        
            Random rnd = new Random();
            protected int GetRandomInt(ProgressBar pr)
            {
                return rnd.Next(pr.Minimum, pr.Maximum);
            }
    
    
            private void Form1_Load(object sender, EventArgs e)
            {
                progressBar1.Value = GetRandomInt(progressBar1);
            }
    
     
    #7 eclipse, 24 Mar 2011
    Last edited: 24 Mar 2011