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