Реализация бегущей строки на Delphi
Отличие от многих других вариантов предложенных в интернете, заключается в возможности корректного редактирования содержания строки пользователем. А именно, данные вводятся в одно место, а их текучесть отображается в другом.
Итак, приступим:
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) Объявим глобальные переменные:
1 2 3 |
var a: String; //Здесь будем хранить текст b: Integer; //Контроль состояния клавиш Button1 и 2 |
а в раздел Uses, пропишем — XpMan;
6) В событии OnCreate на форме пишем:
1 2 3 4 5 |
begin Edit2.Enabled:= False; //Деактивируем Edit2 для ввода текста Button4.Enabled:= False; //Деактивируем подтверждение после его ввода Timer1.Enabled:= False; //Останавливаем таймер (пробег) end; |
7) Переходим к Timer1, его свойство Interval ставим в — 250, и создаем на нем обработчик событий OnTimer:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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 (Редактировать), пишем:
1 2 3 4 5 6 7 |
begin Timer1.Enabled:= False; //Останавливаем текущий пробег строки Edit2.Enabled:= True; //Активируем поле для ввода текста Button4.Enabled:= True; //Активируем клавишу для подтверждения Button2.Enabled:= False; //Деактивируем клавишу пробега влево Button3.Enabled:= False; //Деактивируем клавишу пробега вправо end; |
9) В обработчике событий на Button2 (Пуск влево), пишем:
1 2 3 4 5 6 7 |
begin Timer1.Enabled:= False; //Останавливаем текущий пробег Edit1.Text:= Edit2.Text; //Присваиваем индикатору для пробега, текст из редактора b:= 1; //Переменной состояния присваиваем единицу Edit2.Enabled:= False; //Деактивируем окно для редактирования текста Timer1.Enabled:= True; //Запускаем пробег end; |
10) В обработчике событий на Button3 (Пуск вправо), пишем:
1 2 3 4 5 6 7 |
begin Timer1.Enabled:= False; //Останавливаем текущий пробег Edit1.Text:= Edit2.Text; //Присваиваем индикатору для пробега, текст из редактора b:= 2; //Переменной состояния присваиваем двойку Edit2.Enabled:= False; //Деактивируем окно для редактирования текста Timer1.Enabled:= True; //Запускаем пробег end; |
11) В обработчике событий на Button4 (Ok), пишем:
1 2 3 4 5 6 7 |
begin Edit2.Text:= Edit2.Text+#32+#32; //Программно добавляем два пробела после ввода текста Edit2.Enabled:= False; //Деактивируем окно для ввода Button2.Enabled:= True; //Активирует Пуск влево Button3.Enabled:= True; //Активируем Пуск вправо Button4.Enabled:= False; //Деактивируем клавишу подтверждения end; |