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

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

мигание


SerB ©   (2003-06-05 05:20:00) 

по таймеру о брабатываю мигание нескольких контролов
for n=0 to 40 do
begin
if myControl[n].Value <> 0 then
begin
if myContol[n].color = old_color then
myContol[n].color := new_color
else myControl[n].color:=old_color;
( myControl.handle,0,true)

по таймеру о брабатываю мигание нескольких контролов
for n=0 to 40 do
begin
if myControl[n].Value <> 0 then
begin
if myContol[n].color = old_color then
myContol[n].color := new_color
else myControl[n].color:=old_color;
end;
end;


но почему-то все они мигают несинхронно, как это можно устранить?..
Пробовал применять flashwindow(myControl.handle,0,true)безрезультатно, хотя flashwindow(myAppletAindow.handle,0,true)работает... пробовал объявлять MyControl.isMainWindow - бесполезно...
А может есть "верный" способ?


SerB   (2003-06-19 05:28:00) [1]

Спасибо всем


NAlexey   (2003-06-16 10:41:00) [2]

Не могу видеть без кода как у тебя это реализовано, провел простой эксперимент с 30-35 TLabel, мигают вроде синхронно в цикле, все нормально. Попробуй может делать LockWindowUpdate(Handle);до начала цикла и LockWindowUpdate(0);после:

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
LockWindowUpdate(Handle);
for I:=0 to ControlCount - 1 do
begin
if TLabel(Controls[I]).color = clRed then
TLabel(Controls[I]).color := clGreen
( Controls[I])

Не могу видеть без кода как у тебя это реализовано, провел простой эксперимент с 30-35 TLabel, мигают вроде синхронно в цикле, все нормально. Попробуй может делать LockWindowUpdate(Handle);до начала цикла и LockWindowUpdate(0);после:

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
LockWindowUpdate(Handle);
for I:=0 to ControlCount - 1 do
begin
if TLabel(Controls[I]).color = clRed then
TLabel(Controls[I]).color := clGreen
else TLabel(Controls[I]).color := clRed;
LockWindowUpdate(0);
end;


SerB   (2003-06-16 09:11:00) [3]

To Spawn... Спасибо за внимание к проблеме...
Сомневаюсь, что это что-то даст, т.к. если все загнать в отдельный поток один черт опрос будет идти от 0-го до 40-го если создать 40 потоков, сомневаюсь что Win"98 что-нибудь интересное даст... Скорее надо попробовать модифицировать функцию flashWindow() в нечто наподобие FlashControl(), но как это сделать, я не знаю...
Кстати почти добился нужного эффеката добавив еще один таймер, по onTimer которого запускаю таймер по onTimer реализую мигание, но получаетсЯ некрасиво, тормозно...


Spawn   (2003-06-11 12:46:00) [4]

А может осуществлять мигание в разных потоках?


SerB   (2003-06-11 07:07:00) [5]

To NAlexey...
Значение MyControl[n].Value я получаю по OnMessage c WMCOPYDATA из внешнего приложения в виде строки наподобие "00100...01010". Нет проблем с получением его также и при помощи любой другой процедуры, в т.ч. (для тестирования) и по randomize. Вся проблема в том, что я не могу добиться синхронности изменения цвета одновременно у всех 40 контролов, получается по очереди с 0-го по 39-ый... Использование OnPaint тоже ничего не дает...Это дает очень интересный эффект, два рядом находящиеся элемента мигают поочереди (как фонари у светофора через ж\д переезд), хотя инициирующие мигание значения MyControl.Value приходят одновременно... Чувствую что собака зарыта в курсе школьной программы (работа циклов for... while)...


Spawn   (2003-06-05 22:44:00) [6]

А каким способом ты меняешь myControl[n].Value?


SerB   (2003-06-05 11:38:00) [7]

Цветомузыка и получается... Попробовал фоном под тест анимированные гифы (по 2 фрейма) один черт мигание вразнобой получается...


NAlexey   (2003-06-05 10:16:00) [8]

Эадакая наверное получается веселая гирлянда, я представил и не смог удержаться от смеха, прости. Лежит значит на форме котролово 30-50 и все мигают в разноброс... Можно из этого цветомузыку сделать или ёлочную гирлянду.


MBo   (2003-06-05 05:44:00) [9]

В Потрепаться ветка FAQ, ответ 2. Может помочь.


Наверх

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