Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-68265
seregin
2003-08-07 08:30
2003.08.21
Замена Firebird на Yaffil


4-68595
dimonf
2003-06-19 12:29
2003.08.21
Как считать из ресурса иконку с параметрами 16x16 8bit???


14-68477
race1
2003-08-06 11:54
2003.08.21
Возможно ли это


14-68514
Magic
2003-08-06 12:37
2003.08.21
Как программировать под сеть


1-68397
дим
2003-08-07 17:28
2003.08.21
Как можно зациклить





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский