четверг, 24 октября 2013 г.

Бегущая строка


  Предлагаю интересный вариант, реализации бегущей строки у себя в приложении.
Отличие от многих других вариантов предложенных в нете, заключается в возможности корректного редактирования содержания строки пользователем. А именно, данные вводятся в одно место, а их текучесть отображается в другом.



  Итак, приступим:

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) На конец-то запускаем проект, и пробуем пользоваться. Если все выполнялось внимательно, то наша программка будет исправно работать. 

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.