Добрый день. Может кто знает, как сделть бегущую строку в StatusBar? Желательно "маятник", но в принципе любая сойдёт. Если бы это был Label или ещё что, то там всё просто: в таймере прописать Label1.Left:=Label1.Left-5; Но ведь у Строки состояния нет параметра 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;
volvo, Большое спасибо! Всё работает, только когда текст "доезжает" до правого края, он начинает дёргаться туда-сюда. Хотя по идее, должен ехать обратно.