progressbar и smooth

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

progressbar и smooth

Сообщение modjo » 02.02.2010 11:20:11

По идее Smooth := True должен заставить отображать процесс непрерывно. Обычное поведение это показывать делением. Но в данном случае это не работает. Что я не так делаю?
modjo
новенький
 
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва

Re: progressbar и smooth

Сообщение Павел Ишенин » 03.02.2010 07:38:08

Если пробуете на windows, то все так. На остальных системах надо проверять.
Павел Ишенин
постоялец
 
Сообщения: 475
Зарегистрирован: 24.03.2007 10:16:52

Re: progressbar и smooth

Сообщение modjo » 03.02.2010 12:34:37

Так ведь не отображает непрерывно... Может не так поняли. Обычно когда идет прогресс он отображается прямоугольниками. Это обычное явление в винде. А мне надо чтоб этих прямоугольников не было, а был сплошной прогрессбар. Мне надо сделать индикатор, и в нем удобнее использовать именно непрерывную полоску...

Может есть другой вариант сделать индикатор (ну кроме текстового)? пораскинул мозгами... что-то ничего не придумал кроме этого.
modjo
новенький
 
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва

Re: progressbar и smooth

Сообщение Brainenjii » 03.02.2010 13:34:44

PaintBox и заливать?
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: progressbar и smooth

Сообщение modjo » 03.02.2010 14:56:18

Можно пример?
modjo
новенький
 
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва

Re: progressbar и smooth

Сообщение Brainenjii » 03.02.2010 15:30:02

Код: Выделить всё
Procedure TForm1.Button1Click(Sender: TObject);
Var
  aPaintBox: TPaintBox;
  i: Integer;
Begin
  aPaintBox := TPaintBox.Create(Form1);
  aPaintBox.Parent := Form1;
  aPaintBox.Canvas.Brush.Color := clBtnFace;
  aPaintBox.Canvas.FillRect(aPaintBox.Canvas.ClipRect);
  aPaintBox.Canvas.Brush.Color := clHighlight;
  Application.ProcessMessages;
  For i := 0 To aPaintBox.Width - 1 Do
    Begin
      aPaintBox.Canvas.FillRect(0, 0, i, aPaintBox.Height);
      Application.ProcessMessages;
      Sleep(50);
    End;
end;

Procedure TForm1.SetValue(Const aID: Integer);
Const
  aMin = 0;
  aMax = 100;
Begin
  With PaintBox1.Canvas Do
    Begin
      Caption := IntToStr(aID);
      Brush.Color := clBtnFace;
      FillRect(ClipRect);
      Brush.Color := clHighlight;
      FillRect(0, 0, Trunc((aID / aMax) *  PaintBox1.Width), Height);
      Caption := Caption + ':' + IntToStr(Trunc((aID / aMax)));
    End;
End;

Как вариант ^_^
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: MailRu[bot] и гости: 46

Рейтинг@Mail.ru