Форум: "WinAPI";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Внизмигание Найти похожие ветки
← →
SerB (2003-06-05 05:20) [0]по таймеру о брабатываю мигание нескольких контролов
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 - бесполезно...
А может есть "верный" способ?
← →
MBo (2003-06-05 05:44) [1]В Потрепаться ветка FAQ, ответ 2. Может помочь.
← →
NAlexey (2003-06-05 10:16) [2]Эадакая наверное получается веселая гирлянда, я представил и не смог удержаться от смеха, прости. Лежит значит на форме котролово 30-50 и все мигают в разноброс... Можно из этого цветомузыку сделать или ёлочную гирлянду.
← →
SerB (2003-06-05 11:38) [3]Цветомузыка и получается... Попробовал фоном под тест анимированные гифы (по 2 фрейма) один черт мигание вразнобой получается...
← →
Spawn (2003-06-05 22:44) [4]А каким способом ты меняешь myControl[n].Value?
← →
SerB (2003-06-11 07:07) [5]To NAlexey...
Значение MyControl[n].Value я получаю по OnMessage c WMCOPYDATA из внешнего приложения в виде строки наподобие "00100...01010". Нет проблем с получением его также и при помощи любой другой процедуры, в т.ч. (для тестирования) и по randomize. Вся проблема в том, что я не могу добиться синхронности изменения цвета одновременно у всех 40 контролов, получается по очереди с 0-го по 39-ый... Использование OnPaint тоже ничего не дает...Это дает очень интересный эффект, два рядом находящиеся элемента мигают поочереди (как фонари у светофора через ж\д переезд), хотя инициирующие мигание значения MyControl.Value приходят одновременно... Чувствую что собака зарыта в курсе школьной программы (работа циклов for... while)...
← →
Spawn (2003-06-11 12:46) [6]А может осуществлять мигание в разных потоках?
← →
SerB (2003-06-16 09:11) [7]To Spawn... Спасибо за внимание к проблеме...
Сомневаюсь, что это что-то даст, т.к. если все загнать в отдельный поток один черт опрос будет идти от 0-го до 40-го если создать 40 потоков, сомневаюсь что Win"98 что-нибудь интересное даст... Скорее надо попробовать модифицировать функцию flashWindow() в нечто наподобие FlashControl(), но как это сделать, я не знаю...
Кстати почти добился нужного эффеката добавив еще один таймер, по onTimer которого запускаю таймер по onTimer реализую мигание, но получаетсЯ некрасиво, тормозно...
← →
NAlexey (2003-06-16 10:41) [8]Не могу видеть без кода как у тебя это реализовано, провел простой эксперимент с 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-19 05:28) [9]Спасибо всем
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c