Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];

Вниз

Мигание элемента в TTreeView   Найти похожие ветки 

 
WondeRu   (2004-01-19 15:41) [0]

Здравствуйте! Подскажите, пожалуйста, как изменять цвет шрифта конкретного дерева по таймеру (4 раза в сек.)? При стандартной реализации картинка мигает!
Вот мой код:

var
flash: Boolean;

procedure TfmMain.TreeView1AdvancedCustomDrawItem(
Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState;
Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);
begin
if Flash and (Stage = cdPrePaint) and Assigned(node.Data) and (TObject(node.Data) is TBasicGraphic)
then
TreeView1.Canvas.Font.Color := clRed;
end;

а в таймере:
flash := not flash;


 
Amoeba   (2004-01-19 15:44) [1]

А если DoubleBuffered
+ F1


 
Семен Сорокин   (2004-01-19 15:45) [2]

а что ты хочешь чтобы 4 раза в секунду и не мигала? :)
я непойму зачем это?


 
WondeRu   (2004-01-19 16:19) [3]

>Amoeba © (19.01.04 15:44) [1]
все равно он будет жрать проц как сволочь!))

>Семен Сорокин © (19.01.04 15:45) [2]

Необходимо отображать состояния устройств в реальном времени


 
NAlexey   (2004-01-19 16:23) [4]

>Необходимо отображать состояния устройств в реальном времени
А причем здесь цвет всего компонента? Изменяй значения узлов, перед этим делая BeginUpdate а после EndUpdate. Никакого мигания.


 
WondeRu   (2004-01-19 16:31) [5]

>NAlexey © (19.01.04 16:23) [4]
>Изменяй значения узлов, перед этим делая BeginUpdate а после >EndUpdate. Никакого мигания.
А можно примерчик? У меня с фантазией туговато)))


 
NAlexey   (2004-01-19 16:41) [6]

Хм... Ну вопервых попробуй на события таймера:

TreeView1.Items.BeginUpdate;
try
Flash := not Flash;
TreeView1.Refresh;
finally
TreeView1.Items.EndUpdate;
end;

Будет ли мерцание?


 
Семен Сорокин   (2004-01-19 16:56) [7]

а может InvalidateRect поможет?


 
WondeRu   (2004-01-19 17:07) [8]

попробовал

>TreeView1.Items.BeginUpdate;
> try
> Flash := not Flash;
> TreeView1.Refresh;
> finally
> TreeView1.Items.EndUpdate;
> end;

не помогает

Twincontrol(TreeView1).DoubleBuffered := True;
+
InvalidateRect(TreeView1.Handle,nil,false);
не мигает, зато проц жрет в двое больше((


 
AKul   (2004-01-19 17:09) [9]

InvalidateRect тут не при чем!
Если мне не изменяет память, то InvalidateRect "говорит" Windows"у, что переданный ей в параметрах "кусок" окна содержит неправильную информацию и его следует перерисовать (OnPaint)
А вот DoubleBuffered := True это другое дело!


 
WondeRu   (2004-01-20 09:37) [10]

Добрый день!
Хотелось бы перерисовывать только название узла, а не всю канву!


 
Erik   (2004-01-20 10:17) [11]

Наверное надо логику поменять. Заведи переменую где будеш определять было ли изменения в устройствах. Если было то
Flash := not Flash;
TreeView1.Refresh;
А если небыло, то ничего делать ненужно.


 
WondeRu   (2004-01-20 10:55) [12]

>Наверное надо логику поменять
Сейчас я так и делаю. Проблема в том, чтобы моргать постоянно, если произоло определенное событие!


 
WondeRu   (2004-01-20 12:53) [13]

Откланиваюсь!)) Хоть проблема и не решена, зато пообщался с хорошими людьми!
Всем СПАСИБО!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
14-2282
den74
2004-01-12 09:39
2004.02.02
Delphi глазами хакера


1-2126
zamkom
2004-01-19 17:07
2004.02.02
Поиск текста в файле


3-2021
dimkaaa
2004-01-06 16:07
2004.02.02
EOleException -


1-2170
такой же циник
2004-01-21 14:29
2004.02.02
изменение разрешения экрана


3-1950
Dmitriy
2004-01-05 15:16
2004.02.02
глючит





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский