![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Бегущая строка в StatusBar [D7, WinXP]
Starcom © (2005-05-22 20:08:00)Как мне сделать бегущую строку в StatusBar?
Помогите кто может!
С Уважением Starcom! :-( Плиз...
Andy BitOff (2005-05-24 15:34:00) [1]
lmz © (24.05.05 14:58) [9]
А как сделать чтобы текст двигался не справва на лево, а сверху вниз?
Менять не х, а y. и проверять выход не по Width, а по Height.
lmz (2005-05-24 14:58:00) [2]А как сделать чтобы текст двигался не справва на лево, а сверху вниз?
Starcom (2005-05-24 12:49:00) [3]Das ist fantastish!
Спасибо всем кто откликнулся на мою просьбу...
А лично Ученику!
Но вариант от Andy BitOff ©, мне наиболее приемлим!
С Уважением Starcom! :-)
Andy BitOff (2005-05-23 02:35:00) [4]Вот, минут 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;
Andy BitOff (2005-05-23 01:22:00) [5]А я, кстати, и не говорил, что сложно. Я говорил, что красивее. Сложности тут вообще не вижу.
Eraser (2005-05-23 00:49:00) [6]Andy BitOff © (23.05.05 00:42) [4]
имхо не намного сложнее...
вот тут один товарисч просил сделать чтобы вообще плавный переход пикселей был... ;-)
Andy BitOff (2005-05-23 00:42:00) [7]Ну, это не красиво. Красиво попиксельно.
Ученик (2005-05-22 21:37:00) [8]>Starcom (22.05.05 21:17) [2]
Label1.Caption := Copy(Label1.Caption, 2, MaxInt) + Copy(Label1.Caption, 1, 1)
Изначально добавить требуемое количество пробелов
Starcom (2005-05-22 21:17:00) [9]Спасибо!
Попробовал бежит!
procedure TForm1.Timer1Timer(Sender: TObject);
with StatusBar1 do
begin
Panels[0].Text := Copy(Panels[0].Text,2,MaxInt);
end;
Но мне хотелось бы чтобы строка не прерывалась!
С Уважением Starcom! :-}
Ученик (2005-05-22 20:20:00) [10]>Starcom (22.05.05 20:08)
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption := Copy(Label1.Caption, 2, MaxInt)
end;