progressbar и smooth

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

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

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

progressbar и smooth

Сообщение modjo »

По идее Smooth := True должен заставить отображать процесс непрерывно. Обычное поведение это показывать делением. Но в данном случае это не работает. Что я не так делаю?
Павел Ишенин
постоялец
Сообщения: 475
Зарегистрирован: 24.03.2007 09:16:52

Сообщение Павел Ишенин »

Если пробуете на windows, то все так. На остальных системах надо проверять.
modjo
новенький
Сообщения: 92
Зарегистрирован: 19.07.2009 15:52:10
Откуда: Москва

Сообщение modjo »

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

Может есть другой вариант сделать индикатор (ну кроме текстового)? пораскинул мозгами... что-то ничего не придумал кроме этого.
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

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

Сообщение modjo »

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

Сообщение Brainenjii »

Код: Выделить всё

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;

Как вариант ^_^
Ответить