C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Организация бегущей строки, Как организовать бегущую строку
Lizard
Отправлено: 16.05.2005, 07:51


Ученик-кочегар

Группа: Участник
Сообщений: 20



Помогите организовать бегущую строку в ячейки StringGrid'а.
Переменной типа AnsiString присваивается нужная строка, и она в заданной ячейки пробегает (начиная слева), после скрытия строки она повторно появляется с левого края и так бесконечно.
olegenty
Отправлено: 16.05.2005, 08:59


Ветеран

Группа: Модератор
Сообщений: 2412



и в чём должна заключаться помощь? подать идею, или сделать лабу за тебя? если идею, то всё просто: рисуй на канве руками свою строку, это просто. при этом, смещение сделай равным одному символу. либо сформируй BMP, и с произвольным смещением в пикселях запихивай в ячейку.
Rius
Отправлено: 16.05.2005, 13:09


Мастер участка

Группа: Участник
Сообщений: 321



Можно символы переставлять из одного конца в другой.
olegenty
Отправлено: 16.05.2005, 14:27


Ветеран

Группа: Модератор
Сообщений: 2412



ну, говоря про смещение в один символ, я имел в виду именно то, что сказал Rius. Это самый элеменарный вариант.
Lizard
Отправлено: 17.05.2005, 03:27


Ученик-кочегар

Группа: Участник
Сообщений: 20



Символы пробовал перестовлять, но получается не очень красиво, пробел в строке появляется быстрей (по времени), а чем больше символ тем медлинее, т.е строка появляется рывками.
А про канву можно подробнее, или есть еще идеи?
Guest
Отправлено: 17.05.2005, 04:05


Не зарегистрирован







Lizard А про моноширинные шрифты не слышал? Например Courier New.
Canvas можно сдвигать попиксельно, но тормозить будет...
Lizard
Отправлено: 17.05.2005, 06:00


Ученик-кочегар

Группа: Участник
Сообщений: 20



В ячейку надпись Scheme 3.1.1 from Group ENEK (гиперссылка) выводится следующим образом:
CODE

AnsiString s = "Scheme 3.1.1 from Group ENEK";
Grid->Cells[1][1] = "<A href=" "\x022" "http://www.tef.kgtu.runnet.ru" "\x022" ">" + s + "</A>";

Вот эту самую строку "s" мне необходимо "оживить".

Отредактировано Lizard — 17/05/2005, 06:01
Admin
Отправлено: 17.05.2005, 10:28


Владимир

Группа: Администратор
Сообщений: 1190



CODE

//---------------------------------------------------------------------------

AnsiString s = "Scheme  3.1.1  from  Group  ENEK";

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Grid->Cells[1][1] = s;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
     s = s + s[1];  s.Delete(1,1);
     Grid->Cells[1][1] = s;
}
//---------------------------------------------------------------------------

Вернуться в Вопросы программирования в C++Builder