Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Скролл текста в StatusBar


Автор: Borland_Delphi_6 4.5.2005, 07:27
Есть ли способ проскролить текст в Status bar, как это иногда делают всякие Java скрипты со строкой состояния в различных браузерах?

Автор: ~FoX~ 4.5.2005, 08:19
Borland_Delphi_6
Ну конечено, просто нужно количствео пробелов менять например по таймеру.
Добавлено @ 08:24
Код

.............
StatusBar1.Panels[0].width := 150;
Timer1.Interval := 150;
............

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  If length(StatusBar1.Panels[0].Text) < 150 then begin
    StatusBar1.Panels[0].Text :=  ' ' + StatusBar1.Panels[0].Text;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled := True;
end;


Автор: Yanis 4.5.2005, 08:46
К сожалению Delphi под рукой сечас нет. Часов в 13:00 могу выложить в форум код smile

Автор: Yanis 4.5.2005, 17:08
Цитата
Часов в 13:00 могу выложить в форум код

Вот это я запаздал smile Вот простой вариант:
Форма:
Код

object Form1: TForm1
  Left = 289
  Top = 105
  Width = 783
  Height = 540
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object StatusBar1: TStatusBar
    Left = 0
    Top = 487
    Width = 775
    Height = 19
    Panels = <
      item
        Width = 70
      end
      item
        Width = 50
      end
      item
        Width = 50
      end>
  end
  object ScrollingTimer: TTimer
    Interval = 100
    OnTimer = ScrollingTimerTimer
    Left = 186
    Top = 156
  end
end

Модуль:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  ComCtrls, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    ScrollingTimer: TTimer;
    procedure ScrollingTimerTimer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  // Строка для скролирования
  Txt: String = 'Куплю эффект ПЛАЦЕБО, цена значения не имеет!!!';

const
  // Длина строки в панели StatusBar'а
  Len = 10;

implementation

{$R *.dfm}

procedure TForm1.ScrollingTimerTimer(Sender: TObject);
begin
  // Первую букву переносим в конец строки
  Txt := Copy(Txt, 2, ScrollingTimer.Tag) + Txt[1];
  StatusBar1.Panels.Items[0].Text := Copy(Txt, 1, Len);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Заносим в Tag таймера длину скролируемой строки
  // не обязательно длину хранить в Tag
  ScrollingTimer.Tag := Length(Txt);
end;

end.

Автор: Borland_Delphi_6 6.5.2005, 13:26
Yanis
Огромное спасибо, самое то! smile

Ну и обоим по плюсику, ~FoX~ за старания smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)