Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
ВнизНе рисуется компонента, и все тут... Найти похожие ветки
← →
Юрий Зотов (2001-12-18 14:30) [4]> csf
1. > Перезапусти Delphi, говорят, помогает.
Ценнейший совет.
2. > Про stored можно еще почитать...
Можно. Только к сабжу это не имеет никакого отношения.
3. > ... хорошо бы проверять при Paint FPen & FBrush на nil...
Зачем? Oни созданы в конструкторе компонента. Nil там быть никак не может.
Итого: Вы написали 3 фразы и все 3, извините, чушь. Стоило ли писать? Стоит ли вообще отвечать на вопросы, тема которых Вам, мягко говоря, не очень хорошо знакома?
> Aleksandr
С override Вы уже сами разобрались, но это еще не все - у Вас идет двойная перерисовка:
procedure TWayTree.SetBrush;
begin
if Value=nil then // Это лишнее и даже вредно - маскирует ошибки юзера
Exit;
FBrush.Assign(Value); // Генерит FBrush.OnChange и вызов RePaintRequest
Invalidate // Это лишнее - идет повторная перерисовка
end;
И то же самое в SetPen. Кроме того, переменная ARect в Paint совершенно не нужна - используйте ClientRect или Canvas.ClipRect.
Наконец, главное - свои FBrush и FPen абсолютно ни к чему - только лишние ресурсы гробят. Используйте встроенные в Canvas:
published
property Pen: TPen read GetPen write SetPen;
...
function ...GetPen: TPen;
begin
Result := Canvas.Pen
end;
procedure ...SetPen(const Value: TPen);
begin
Canvas.Pen.Assign(Value)
end;
Вывод - даже такие простейшие компоненты надо продумывать более тщательно и делать более акккуратно.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c