Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Бегущая строка


Василий Петрович ©   (2003-05-03 11:20:00) 

Здравствуйте мастера! Есть STATIC. Как заставить его текст пробегать слева направо и обратно?


Nick Denrry   (2003-05-03 23:43:00) [1]

Попробуй еще к тому же на WM_PAINT после этого делать function UpdateWindow(Wnd: HWnd);wnd- form1.handle, к примеру. или что-то похожее со смыслом обновления окна, да и двигать сам компонент действительно круче! ( Описание:
procedure SetWindowPos(Wnd, WndInsertAfter: HWnd; X, Y, cx, cy: Integer; Flags: Word);

Изменяет pазмеp, положение и поpядок окна.

Паpаметpы:
Wnd: Идентификатоp окна.
WndInsertAfter: Пpедыдущее окно в списке администpатоpа окон.
X, Y: Веpхний левый угол.
cx: Новая шиpина окна.
cy: Новая высота окна.
Flags: Флаги установки положения окна.

Пример:
...
if findwindow("TMyWindowClass", nil) <>0 then
SetWindowPos(findwindow("TMyWindowClass", nil),
HWND_BOTTOM,1,1,20,20,SWP_nosize);
...)

2>Morfein - ты на мой бы вопрос так ответил!

2>
> Василий Петрович

а еще у STATIC сделай прозрачный фон: WM_CTLCOLORSTATIC : {Обработка лабелов}
Begin
SetBkMode(Wparam,TRANSPARENT);//Всем Static"ам прозрачный фон
Result:=GetStockObject(Null_Brush);
if (wparam<>0) and (lparam=label2) then /lable1 - белый цвет
begin
SetTextColor(wparam,rgb(255,255,255));
end;



Morfein   (2003-05-03 20:42:00) [2]

Угу... даже две идеи!

1. попробуй по таймеру двигать сам STATIC... :))
2. пиши свой компонент.


Василий Петрович   (2003-05-03 20:23:00) [3]

хех.. так-то я делал... но это очень нерационально... Может у кого-нить какие-нить еще идеи появятся?


Nick Denry   (2003-05-03 19:52:00) [4]

Если я правильно понял AKu, то на таймере(wm_timer:) делаешь так:
SendMessage(static //твой static
,wm_settext,0,Integer(PChar(" 1234 ")));
каждый раз с необходимым кол-вом пробелов, наверное........,
типа
wm_settext,0,Integer(PChar("1234 ")));
типа wm_settext,0,Integer(PChar(" 1234")));


Василий Петрович   (2003-05-03 16:44:00) [5]

Такс, таймер вроде создал...
Как теперь бы запустить ее красиво?


Nick Denry   (2003-05-03 13:10:00) [6]

Забыл - 50 - число миллисекунд!


Nick Denry   (2003-05-03 13:09:00) [7]

SetTimer и KillTimer!
Типа MyTimer:=SetTimer(Form1.Handle,0,50,nil);
и KillTimer(Form1.Handle,MyTimer) и обрабатывать WM_timer


AKu   (2003-05-03 13:06:00) [8]

MSDN rulez forever!


Василий Петрович   (2003-05-03 12:40:00) [9]

Дык прога-то на API. А на апи я таймер делать не умею :-(


AKu   (2003-05-03 12:23:00) [10]

А сделать таймер и изменять заголовок не пробовал?


Наверх

Титульная страница Поиск, карта сайта Написать письмо