Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Бегущая строка в СтатусБаре

Автор: Psychologist 7.06.2008 17:48

Добрый день.
Может кто знает, как сделть бегущую строку в StatusBar? Желательно "маятник", но в принципе любая сойдёт.
Если бы это был Label или ещё что, то там всё просто: в таймере прописать Label1.Left:=Label1.Left-5;
Но ведь у Строки состояния нет параметра Left?
Помогите, плз, если есть хоть какие-то мысли по этому поводу...

Автор: volvo 7.06.2008 19:20

Цитата
Но ведь у Строки состояния нет параметра Left?
Зато если в начало Текста панели строки состояния добавить пробел, то строка визуально "сдвинется" вправо. А если пробел убрать, то влево. Вот и пользуемся этим (на StatusBar-е одна панель шириной = 200, текст этой панели задан: "test test"):

var add_str: boolean = true;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if add_str then begin
if StatusBar1.Canvas.TextWidth(' ' + StatusBar1.Panels[0].Text) > StatusBar1.Panels[0].Width
then add_str := false;
end
else begin
if StatusBar1.Panels[0].Text[1] <> ' '
then add_str := true;
end;

if add_str then
StatusBar1.Panels[0].Text := ' ' + StatusBar1.Panels[0].Text
else
StatusBar1.Panels[0].Text := Copy(StatusBar1.Panels[0].Text, 2, Length(StatusBar1.Panels[0].Text) - 1);
end;


Автор: Psychologist 8.06.2008 18:07

volvo, Большое спасибо! Всё работает, только когда текст "доезжает" до правого края, он начинает дёргаться туда-сюда. Хотя по идее, должен ехать обратно.

Автор: volvo 8.06.2008 18:55

Хм... Странно. Вот, если хочешь посмотреть, как себя ведет в моем приложении строка статуса (902Кб, кодек H.264): http://filekeeper.org/download/volvo877/statusbar.avi