![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перекрытый Paint. [D7, Win2k]
Ice © (2006-03-16 13:49:00)Есть компонент, наследник TPanеl... Его пайнт я перекрыл, ибо надо было рисовать на канве самой панели. Но. Иногда это рисование задевает контролы, которые на этой панели размещены. А если вызывать у этих контролов Repaint, Refresh, Invalidate - то обновление оных вызывает обновление панели, которое, в свою очередь, ну и т.д. ...
Как быть ?
procedure TXPanel.Paint;
var i : integer;
begin
inherited;
{......}
if self.ControlCount > 0 then
for i:=0 to self.ControlCount - 1 do
(self.Controls[i] as TControl).Repaint;
end;
clickmaker (2006-03-21 11:17:00) [1]
> if self.ControlCount > 0 then
> for i:=0 to self.ControlCount - 1 do
> (self.Controls[i] as TControl).Repaint
вот это зачем?
и как ты рисуешь на панели?
Ice (2006-03-16 16:43:00) [2]Есть наследник TPanel.
Помещаю его на форму. Все ОК.
Помещаю уже на него TLabel. Все тоже ОК.
Если после этого меняю какие-то свойства, затрагивающие метод Paint моего компонента, TLabel тут же пропадает.
Если переключиться в редактор и снова на форму - TLabel появится. Если нажать F9 - в рантайме TLabel тоже появится.
Проблема в том, чтобы в дизайнтайме обновить контролы на панели, не зацикливая её Paint...
MBo (2006-03-16 16:30:00) [3]>Тогда я чего то не понимаю...
Разъясни, в чем у тебя проблема-то
Ice (2006-03-16 16:01:00) [4]
> MBo © (16.03.06 15:29) [1]
> >А если вызывать у этих контролов
> Так контролы сами перерисовываются же...
> TWinControl.PaintHandler
> TWinControl.PaintControls
В дизайн-тайме тоже ? Тогда я чего то не понимаю...
MBo (2006-03-16 15:29:00) [5]>А если вызывать у этих контролов
Так контролы сами перерисовываются же...
TWinControl.PaintHandler
TWinControl.PaintControls