Предлагаю интересный вариант, реализации бегущей строки у себя в приложении. Отличие от многих других вариантов предложенных в нете, заключается в возможности корректного редактирования содержания строки пользователем. А именно, данные вводятся в одно место, а их текучесть отображается в другом. Итак, приступим: 1) Кидаем на форму 1 - компонент Timer, 1 - компонент Label, 2 - компонента Edit, и 4 - компонента Button; 2) Очищаем свойство Text у компонентов Edit, в свойстве Caption у Label - пишем фразу: - Введите текст, в свойстве Caption у формы пишем: - Бегущая строка, а в Caption у Button c 1 по 4, пишем: Редактировать, Пуск влево, Пуск вправо и Ok - соответственно;
3) Располагаем компоненты на форме, примерно так (см. рисунок ниже): поняли, теперь в чем фишка? Продолжаем... 4) Как вы уже догадались, теперь меняем цвет у Label1, для этого в его свойстве Color, выбираем цвет - clLime, в свойстве Font - color, выбираем - clYellow, а cвойство ReadOnly ставим в - false. 5) Объявим глобальные переменные:
var a: String; //Здесь будем хранить текст; b: Integer; //Контроль состояния клавиш Button1 и 2;
а в раздел Uses, пропишем - XpMan;
6) В событии OnCreate на форме пишем: begin Edit2.Enabled:=False; //Деактивируем Edit2 для ввода текста; Button4.Enabled:=False; //Деактивируем подтверждение после его ввода;
Timer1.Enabled:=False; //Останавливаем таймер (пробег);
end; 7) Переходим к Timer1, его свойство Interval ставим в - 250, и создаем на нем
обработчик событий OnTimer:
begin if b=1 then //Если b - содержит единицу:
begin
a:=Edit1.Text; //Присваеваем переменной текст из индикатора;
Edit1.Text:=copy(a, 2, Length(a)-1)+ copy(a,1,1); //Запускаем строку влево;
end;
if b=2 then
//Если b - содержит двойку:
begin
a:=Edit1.Text;
//Присваеваем переменной текст из индикатора;
Edit1.Text:=copy(a,Length(a)-1,1)+ copy(a,1,length(a) -1);
//Запускаем строку влево;
end;
end; 8) В обработчике событий на Button1 (Редактировать), пишем: begin Timer1.Enabled:=False; //Останавливаем текущий пробег строки; Edit2.Enabled:=True; //Активируем поле для ввода текста; Button4.Enabled:=True; //Активируем клавишу для подтверждения; Button2.Enabled:=False; //Деактивируем клавишу пробега влево; Button3.Enabled:=False; //Деактивируем клавишу пробега вправо;
end;
9) В обработчике событий на Button2 (Пуск влево), пишем:
begin
Timer1.Enabled:=False; //Останавливаем текущий пробег;
Edit1.Text:=Edit2.Text; //Присваиваем индикатору для пробега, текст из редактора;
b:=1; //Переменной состояния присваиваем единицу;
Edit2.Enabled:=False; //Деактивируем окно для редактирования текста;
Timer1.Enabled:=True; //Запускаем пробег;
end;
10) В обработчике событий на Button3 (Пуск вправо), пишем:
begin Timer1.Enabled:=False;
//Останавливаем текущий пробег;
Edit1.Text:=Edit2.Text;
//Присваиваем индикатору для пробега, текст из редактора;
b:=2;
//Переменной состояния присваиваем двойку;
Edit2.Enabled:=False;
//Деактивируем окно для редактирования текста;
Timer1.Enabled:=True;
//Запускаем пробег;
end;
11) В обработчике событий на Button4 (Ok), пишем: begin Edit2.Text:=Edit2.Text+#32+#32; //Программно добавляем два пробела после ввода текста; Edit2.Enabled:=False; //Деактивируем окно для ввода; Button2.Enabled:=True; //Активирует Пуск влево; Button3.Enabled:=True; //Активируем Пуск вправо;
Button4.Enabled:=False; //Деактивируем клавишу подтверждения; end; 12) На конец-то запускаем проект, и пробуем пользоваться. Если все выполнялось внимательно, то наша программка будет исправно работать.
На всякий пожарный выкладываю исходник.
|