Бегущая строка широко используется программистами для привлечение внимания пользователей, а также для экономия места на форме. Создание подобного текста не так уж и сложное. Главное понять принцип. Покажу вам два способа вывода бегущей строки.
1 способ Этот способ довольно прост по своему содержанию. По сути происходит "перетаскивание" первого символа текста в конец строки. Эта функция конечно пишется в обработчике событий OnTimer.
procedure TForm1.Timer1Timer(Sender: TObject); var stroka: string; begin stroka:= label1.Caption; label1.Caption:= copy (stroka, 2, length (stroka) - 1)+ copy(stroka,1,1); //значению в label1 присваиваем копирование записи в label1 и прибавляем 1-ый символ. end; |
Минус этого способа в том, что он не рассчитан на большие тексты, длина которых может выходить за рамки формы. Но эта проблема решается во втором способе.
2 способ implementation
const tape=10; var msg:string; s:string; x:integer;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin msg:=InputBox('Введите сообщение', 'Нажмите Enter для вывода строки', ' '); msg:=stringofchar(' ',tape)+msg+stringofchar(' ',tape); x:=1; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin inc(x); if (x>(length(msg)-tape+1)) then begin x:=1; end; s:=copy(msg,x,tape); label1.Caption:=s; label1.Refresh; end; |
Здесь выводимый текст вы набираете в глобальную переменную msg. Константа tape хранит в себе длину показываемой части нашей строки. Значение х увеличивается по таймеру, и тем самым сдвигает вправо позицию нашего курсора, с которого начинается показ строки msg. Функция Copy(msg: String; x, tape: Integer) - возвращает часть строки msg, начиная с символа x длиной tape. Ограничений на tape нет — если оно превышает количество символов от x до конца строки, то строка будет скопирована до конца.
Нравится
|