Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.11.2016, 23:49
Аватар для lopata39
lopata39 lopata39 вне форума
Прохожий
 
Регистрация: 07.11.2016
Сообщения: 2
Версия Delphi: Delphi 7, C++
Репутация: 10
Вопрос Бегущая строка

Есть некая записанная строка например в Label-е. Нужно добиться её появления по буквам таким способом: сначала справа выбегает первая буква, фиксируется у левого края формы. Потом следом выбегает вторая буква, подбегает к первой, встает рядом. Потом идет третья буква, она подбегает к первым двум, также встает рядом. И так далее всю строку.

Подскажите, как это можно организовать?
Я пытался так: 2 строки Label, первая стоит у края, вторая бегает туда-сюда. Изначально в первой ничего нету, а второй присваиваем первую букву строки. Когда 2я подбегает к концу 1ой, эта буква присваивается к 1 строке, а вторая возвращается на исходную и уже бежит со второй буквой.
На практике нифига не получилось, только большой код с кучей ошибок из-за каких-то недочетов с таймером которые я не осилил понять =\

Может есть какие-нибудь другие идеи? Подскажите пожалуйста.
Или может есть какой-нибудь вариант мой способ нормальнорабочим сделать? =\ На что нужно обратить внимание? (свой код-наработку к сожалению сжог в порывах страсти )

Последний раз редактировалось lopata39, 07.11.2016 в 23:51.
Ответить с цитированием
  #2  
Старый 08.11.2016, 02:10
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Зря жгли, из пепла дольше возрождать
Цитата:
...Я пытался так: 2 строки Label, первая стоит у края, вторая бегает туда-сюда...
Код:
...
var
i: integer;
...

procedure TForm1.Button1Click(Sender: TObject);
begin
 i:= 1;
 Label1.Caption:= '';
 Label2.Caption:= Edit1.Text[1];
 Label2.Left:= ClientWidth - Label2.Width;
 Timer1.Interval:= 10;
 Timer1.Enabled:= true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Label2.Left:= Label2.Left - 10;
 Label2.Visible:= Label2.Left < ClientWidth - Label2.Width;
 if Label2.Left <= Label1.Width then
  begin
   Label1.Caption:= Label1.Caption + Label2.Caption;
   inc(i);
   if Edit1.Text[i] <> ' ' then
    Label2.Caption:= Edit1.Text[i] else
     begin
      inc(i);
      Label2.Caption:= ' ' + Edit1.Text[i];
     end;
   Label2.Left:= ClientWidth - Label2.Width;
  end;
 if i > Length(Edit1.Text) then Timer1.Enabled:= false;
end;
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
lopata39 (12.11.2016)
  #3  
Старый 12.11.2016, 03:48
Аватар для lopata39
lopata39 lopata39 вне форума
Прохожий
 
Регистрация: 07.11.2016
Сообщения: 2
Версия Delphi: Delphi 7, C++
Репутация: 10
Хорошо

Спасибо огромное! Очень помогли)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:59.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter