Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 12
1

Возврат бегущей строки

24.04.2015, 01:03. Просмотров 1171. Ответов 13
Метки нет (Все метки)

Здравствуйте! Есть бегущая строка, активируется автоматически, как сделать так чтоб после того как я ставлю галочку в том или ином радиобаттоне, или в майн меню,то текст не просто останавливался, а возвращался в исходное положение( то есть буквы не были за краями кепшена).
Возврат бегущей строки

Пробовал очищать кепшен и после чтоб он считывал данные из листбокса, но когда переключаю галочку- программу крашит.


Вот кусочек кода
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
Procedure TForm2.Timer3Timer(Sender: TObject);
var
i: integer;
txt:string;
begin
txt:=panel1.Caption;
if vklbs1.checked=true then
panel1.Caption:=copy(txt,2,length(txt)-1)+ copy(txt,1,1);
if viklbs1.checked = true then
for i := 0 to ListBox1.Count - 1 do
listBox1.Items.strings[i]:= extractFileName(Listbox1.Items.Strings[i]);
end;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2015, 01:03
Ответы с готовыми решениями:

Создать свой компонент с бегущей строкою
Метка с бегущей строкой: отображает текст надписи как бегущую строку, у которой можно настраивать...

Модуль бегущей строки
Нужен модуль бегущей строки в Joomla 2.5 Есть пробую - Произвольний HTML - потом вставлюя ето:...

Создание бегущей строки
Необходимо создать программу, которая работает подобно бегущей строке Например: Слово Слов ...

индексация Бегущей строки
Здравствуйте! На одном из моих сайтов поступило критическое замечание (есть у меня такая опция,...

13
пофигист широкого профиля
4173 / 2716 / 770
Регистрация: 15.07.2013
Сообщений: 15,795
24.04.2015, 01:12 2
Цитата Сообщение от Skimus Посмотреть сообщение
а возвращался в исходное положение
Так сохрани "исходный" текст заголовка в какой-то переменной.
0
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 12
24.04.2015, 02:09  [ТС] 3
Да у меня плеер, и текст постоянно меняется. Хотя если уйти поглубже в эту тему, то тоже совет... Хм, а что если назначить переменной тот текст который выделен в данный момент? Или есть способ полегче?=)

Добавлено через 2 минуты
Надо будет еще попробовать: при выборе одного радиобаттона текст будет выравниваться по середине или растягиваться=)
0
пофигист широкого профиля
4173 / 2716 / 770
Регистрация: 15.07.2013
Сообщений: 15,795
24.04.2015, 02:09 4
Цитата Сообщение от Skimus Посмотреть сообщение
Да у меня плеер
Написанный тобой или где-то надыбанный?
0
23 / 23 / 6
Регистрация: 16.10.2010
Сообщений: 211
24.04.2015, 08:48 5
Это скорее дрыгающаяся строка
Как минимум это на делать, а лучше так
0
4430 / 3673 / 1236
Регистрация: 14.04.2014
Сообщений: 17,152
Записей в блоге: 17
24.04.2015, 10:19 6
для начала можно обойтись Form.DoubleBuffered:=True;
0
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 12
24.04.2015, 13:22  [ТС] 7
Да я сам написал=)

Добавлено через 38 минут
Не совсем понял, что делать с буфером? Попробовал его засунуть в обработчик онрейсайз в панели, ничем не помогло.
0
4430 / 3673 / 1236
Регистрация: 14.04.2014
Сообщений: 17,152
Записей в блоге: 17
24.04.2015, 13:31 8
в таких случаях нужно повторять себе, что данные на экране не хранят

у тебя должна быть исходная строка Text и индекс отступа от начала Offset
и ты всегда генерируешь caption из этой строки:
copy(text, offset, length(text))+copy(text,1,offset-1);
для перехода вперед-назад offset:=(offset+-1) mod length(text);
и для возврата в исходное положение offset:=0;

Добавлено через 1 минуту
DoubleBuffered - свойство формы или панели в инспекторе объектов
если его установить, меньше становится дрожание изображения при активных изменениях
0
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 12
24.04.2015, 14:02  [ТС] 9
Дык у меня там там текст, а не числа. Я не могу просто присвоить 0.
Потом вчитывался в Ваше сообщение и попробовал
Delphi
1
panel1.Caption:=copy(txt,0,length(txt))+copy(txt,1,0);
Но так он останавливает бегущую строку. Что я делаю не так?
0
4430 / 3673 / 1236
Регистрация: 14.04.2014
Сообщений: 17,152
Записей в блоге: 17
24.04.2015, 14:25 10
Цитата Сообщение от krapotkin Посмотреть сообщение
offset:=(offset+-1) mod length(text);
ты точно все слова прочитываешь?
1
834 / 729 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
24.04.2015, 14:51 11
Skimus,
У тебя бегущая строка как организована? Добавлением справа буквы и удалением буквы слева, или движением канвы по пикселям?
0
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 12
24.04.2015, 14:56  [ТС] 12
NIKOLAYY
Да добавлением буквы справа и удалением слева.

Добавлено через 3 минуты
Да, но чет ничего не получается, вечером еще потыкаюсь... Он все равно только останавливает, но исходное положение не возвращает. Влево, вправо я умею двигать, а так чтоб при включении текст начинал двигаться с начала- не могу(
0
4430 / 3673 / 1236
Регистрация: 14.04.2014
Сообщений: 17,152
Записей в блоге: 17
24.04.2015, 15:06 13
Лучший ответ Сообщение было отмечено Skimus как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
TForm2=class(TForm)
...
  offset:integer;
  dx:integer;
  txt:string;
...
end;
 
procedure TForm2.FormCreate(Sender:TObject);
begin
  txt:='Это тестовая строка';
  dx:=1;
  updateRunningString;
end;
 
procedure TForm2.Button1Click(Sender:TObject);
begin
  dx:=-dx;  
end;
 
procedure TForm2.Button2.Click(Sender:TObject);
begin
  timer3.enabled:=not Timer3.enabled;
  offset:=0;
end;
 
 
procedure TForm2.UpdateRunningString;
begin
   panel1.Caption := copy(txt,offset,length(txt))+' '+copy(txt,1,offset-1);
end;
 
procedure TForm2.Timer3Timer(Sender: TObject);
var
  i: integer;
begin
   updateRunningString;
   offset:=offset + dx;
   if offset>length(s) then
     offset:=0
   else if offset<0 then
     offset:=length(s);
end;
1
0 / 0 / 0
Регистрация: 10.06.2014
Сообщений: 12
24.04.2015, 17:19  [ТС] 14
Все, помогло) Но остался небольшой ньюансик, теперь когда я выключаю бегущую строку, то он возвращает название первой песни в плейлисте, а не выделенной(той которая играет)... Щас попробую повоевать еще с ним=)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2015, 17:19

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Создание бегущей строки
Объясните, пожалуйста, каким образом можно создать бегущую строку.

Создание бегущей строки.
Создать бегущую строку. Остановить бег строки при нажатии клавиши &lt;Esc&gt;. И если можно,...

Опознать плату бегущей строки
Доброго времени суток! Попалась в руки бегущая строка без программного обеспечения, подскажите - в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.