Главная страница
    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.01 c
6-2244
stud
2003-11-25 15:41
2004.02.02
как расшарить ресурс в досе


3-2010
Baloo
2004-01-06 11:21
2004.02.02
Поля TEXT в MSSQL


4-2412
Aalexis
2003-11-21 13:34
2004.02.02
Дата создания файла и использование структуры FileTime.


1-2230
LordAlex
2004-01-20 14:16
2004.02.02
Время выполнения...


3-1965
Bezsonov Yuri
2004-01-09 11:47
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский