Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.06;
Скачать: CL | DM;

Вниз

Бегущая строка в StatusBar   Найти похожие ветки 

 
Starcom   (2005-05-22 20:08) [0]

Как мне сделать бегущую строку в StatusBar?
Помогите кто может!
С Уважением Starcom! :-( Плиз...


 
Ученик   (2005-05-22 20:20) [1]

>Starcom   (22.05.05 20:08)  

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Label1.Caption := Copy(Label1.Caption, 2, MaxInt)
end;


 
Starcom   (2005-05-22 21:17) [2]

Спасибо!
Попробовал бежит!

procedure TForm1.Timer1Timer(Sender: TObject);
with StatusBar1 do
begin
 Panels[0].Text := Copy(Panels[0].Text,2,MaxInt);
end;

Но мне хотелось бы чтобы строка не прерывалась!

С Уважением Starcom! :-}


 
Ученик   (2005-05-22 21:37) [3]

>Starcom   (22.05.05 21:17) [2]
Label1.Caption := Copy(Label1.Caption, 2, MaxInt) + Copy(Label1.Caption, 1, 1)

Изначально добавить требуемое количество пробелов


 
Andy BitOff ©   (2005-05-23 00:42) [4]

Ну, это не красиво. Красиво попиксельно.


 
Eraser ©   (2005-05-23 00:49) [5]

Andy BitOff ©   (23.05.05 00:42) [4]

имхо не намного сложнее...

вот тут один товарисч просил сделать чтобы вообще плавный переход пикселей был... ;-)


 
Andy BitOff ©   (2005-05-23 01:22) [6]

А я, кстати, и не говорил, что сложно. Я говорил, что красивее. Сложности тут вообще не вижу.


 
Andy BitOff ©   (2005-05-23 02:35) [7]

Вот, минут 15. Не оптимизировал ничего, на скорую руку, так что прошу не пинать. Я не писал универсальный компонент =)

var
 Form1: TForm1;
 x:integer=0;
 PanelIndex:integer=0;
 Str:string="My ScrollBar Text bla-bla-bla";

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
 I: Integer;
 bmp:TBitMap;
 a:integer;
begin
 if (StatusBar1.Panels.Count<>0) and (StatusBar1.Panels.Count>=PanelIndex) then begin
   bmp := TBitMap.Create;
   try
     bmp.Width:=StatusBar1.Panels.Items[PanelIndex].Width;
     bmp.Height:=StatusBar1.Height;
     bmp.Canvas.Brush.Color:=StatusBar1.Color;
     bmp.Canvas.Pen.Color:=StatusBar1.Font.Color;
     bmp.Canvas.FillRect(StatusBar1.Canvas.ClipRect);
     if x=-bmp.Canvas.TextWidth(str) then x:=StatusBar1.Panels.Items[PanelIndex].Width;
     bmp.Canvas.TextOut(x,1,Str);
     dec(x);
     a:=0;
     for I:=0 to PanelIndex-1 do begin
       a:=a+StatusBar1.Panels.Items[i].Width;
     end;
     bitblt(StatusBar1.Canvas.Handle,a+3,3,bmp.Width-4,bmp.Height-4,bmp.Canvas.Handle,0,0,SRCCOPY);
   finally
     bmp.Free;
   end;
 end;
end;


 
Starcom   (2005-05-24 12:49) [8]

Das ist fantastish!

Спасибо всем кто откликнулся на мою просьбу...
А лично Ученику!
Но вариант от Andy BitOff ©, мне наиболее приемлим!

С Уважением Starcom! :-)


 
lmz ©   (2005-05-24 14:58) [9]

А как сделать чтобы текст двигался не справва на лево, а сверху вниз?


 
Andy BitOff ©   (2005-05-24 15:34) [10]


lmz ©   (24.05.05 14:58) [9]
А как сделать чтобы текст двигался не справва на лево, а сверху вниз?

Менять не х, а y. и проверять выход не по Width, а по Height.



Страницы: 1 вся ветка

Текущий архив: 2005.06.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
3-1114500228
Max Zyuzin
2005-04-26 11:23
2005.06.06
Отображение строк в DBGrdi


14-1116482004
mySh
2005-05-19 09:53
2005.06.06
Небольшой вопрос по JavaScrip


6-1111370769
administrator
2005-03-21 05:06
2005.06.06
Delph NET


14-1116469702
/w\ax
2005-05-19 06:28
2005.06.06
Что за *cab?


8-1108743803
pasha L
2005-02-18 19:23
2005.06.06
Вставка gif а