На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rouse_, jack128, Krid
  
    > ProgressBar в StatusBar
      Есть несколько возможностей:
      1) сделать ProgressBar наследником StatusBar в runtime:
      ExpandedWrap disabled
        var
          pb: TProgressBar;
        begin
        ....
          pb:= TProgressBar.Create(self);
          with pb do
          begin
            Parent:= StatusBar1;
            Position:= 30;
            Top:= 2;
            Left:= 0;
            Height:= StatusBar1.Height - Top;
            Width:= StatusBar1.Panels[0].Width - Left;
          end;  //with;
          pb.Visible:= True;
          ....
        end;

      2) сделать ProgressBar невидимым и отрисовывать его каждый раз при перерисовке статусбара (нужно не забыть поставить у нужной панели Style := psOwnerDraw). ИМХО, лучший вариант.
      ExpandedWrap disabled
        procedure TMainForm.stStatusBarDrawPanel(StatusBar: TStatusBar;
          Panel: TStatusPanel; const Rect: TRect);
        begin
          if Panel.Index = pnProgress then
          begin
            pgProgress.BoundsRect := Rect;
            pgProgress.PaintTo(stStatusBar.Canvas.Handle, Rect.Left, Rect.Top);
          end;
        end;

      3) Использовать наследник статусбара, позволяющий вставлять любые контролы:
      ExpandedWrap disabled
        unit adStatba;
         
        interface
         
        uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
          ComCtrls;
         
        type
          TAdrockStatusBar = class(TStatusBar)
          public
            сonstructor Create(AOwner: TComponent); override;
          end;
         
        procedure Register;
         
        implementation
         
        сonstructor TAdrockStatusBar.Create(AOwner: TComponent);
        begin
          inherited Create(Aowner);
          ControlStyle := ControlStyle + [csAcceptsControls];
        end;
         
        procedure Register;
        begin
          RegisterComponents('Adrock', [TAdrockStatusBar]);
        end;
         
        end.
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0239 ]   [ 16 queries used ]   [ Generated: 28.03.24, 11:39 GMT ]