Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

Проблема с прорисовкой содержимого панелей (TPanel)   Найти похожие ветки 

 
DevilDevil ©   (2007-08-06 16:12) [0]

Создал компонент на основе TPanel, который можно таскать за заголовок. В главном окне может располагаться несколько таких панелей ("окон" в терминалогии нашей программы). Перемещение происходит SetBounds-ом.

Если я перемещаю своё "окно" над другими, то всё содержимое таких окон очень плохо прорисовывается (очень редко).

Из-за чего такое может происходить?

P.S. DoubleBuffered не помогает


 
Инс ©   (2007-08-06 17:19) [1]


> Из-за чего такое может происходить?

А где в этом компоненте прорисовка осуществляется? Метод Paint перекрывали?


 
DevilDevil ©   (2007-08-07 09:01) [2]

> А где в этом компоненте прорисовка осуществляется? Метод
> Paint перекрывали?


Да, перекрывал.
Дочерние компоненты насильно не прорисовываю... а надо?


 
DevilDevil ©   (2007-08-08 10:22) [3]

Тогда:

- как корректнее прорисовывать дочерние компоненты ?
- почему нигде (я не видел) не встречается, что их надо прорисовывать?


 
DevilDevil ©   (2007-08-09 12:08) [4]

Удалено модератором
Примечание: Создание пустых сообщений


 
DimaBr ©   (2007-08-20 08:47) [5]

Я бы сделал так

procedure TTest.WMNCHITTEST(var M: TWMNCHITTEST);
var R: TRect;
   P: TPoint;
begin
 if not (csDesigning in ComponentState) then begin
   R := ClientRect;
   R.Bottom := R.Top + 20;
   P := ScreenToClient(Point(M.XPos, M.YPos));
   if PtInRect(R,P)
     then M.Result := HTCAPTION
     else inherited;
 end
 else inherited
end;


 
DevilDevil ©   (2007-08-21 11:28) [6]

> DimaBr ©   (20.08.07 08:47) [5]

спасибо, но....

не могу понять, WMNCHITTEST - это приватный метод компонента, доступа к нему получить что то не получается....

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


 
DimaBr ©   (2007-08-21 14:02) [7]

procedure WMNCHITTEST(var M: TWMNCHITTEST); message WM_NCHITTEST;


 
DevilDevil ©   (2007-08-21 14:29) [8]

> DimaBr ©   (21.08.07 14:02) [7]

самому объявить... а как тогда трактовать inherited ?


 
DimaBr ©   (2007-08-21 14:35) [9]

inherited - выполнить унаследованный метод


 
DevilDevil ©   (2007-08-21 15:09) [10]

хмм.....

выполнить метод предка...

как можно выполнить какой-то перекрываемый метод, если мы ничего не перекрываем? :) <-- я вот это спрашиваю


 
DimaBr ©   (2007-08-21 15:59) [11]

Мы не перекрываем, а перехватываем сообщение о положении мыши относительно контрола.


 
DevilDevil ©   (2007-08-21 17:25) [12]

хорошо, мы перехватываем сообщение. inherited тут причём? :)

или это эквивалентно M.Result := DefWindowProc(...) ?


 
DimaBr ©   (2007-08-22 10:51) [13]

Думаю что нет, попробуйте вообще убрать Inherited


 
wp2 ©   (2007-08-23 11:21) [14]

Честно говоря TPanel тот еще глючный компонент. Он и так сам по себе иногда не отображает что надо.


 
Игорь Шевченко ©   (2007-08-23 11:54) [15]


> Честно говоря TPanel тот еще глючный компонент. Он и так
> сам по себе иногда не отображает что надо.


Руки выпрямлять пробовал ?


 
wp2 ©   (2007-08-23 12:18) [16]

а что тут выпрямлять. У компонентов, что нет глюков?


 
Игорь Шевченко ©   (2007-08-23 13:48) [17]


> а что тут выпрямлять.


Руки


> У компонентов, что нет глюков?


Глюки компонентов VCL описаны в qc.borland.com

Поищи про TPanel


 
DevilDevil ©   (2007-08-27 10:26) [18]

> Игорь Шевченко ©   (23.08.07 13:48) [17]

хммм... Запарил я что-то... это раньше мы наследовались от панели, сейчас - от TCustomControl-а.

> DimaBr ©   (20.08.07 08:47) [5]

Спасибо, как всегда помог.
inherited заменил на M.Result := HTCLIENT
Я, правда, до сих пор не доконца понимаю, что же там происходит



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

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.024 c
2-1192861122
apic
2007-10-20 10:18
2007.11.11
win+d


15-1191966748
Petr V. Abramov
2007-10-10 01:52
2007.11.11
действительно сломалось все


8-1168953381
Agent[007]
2007-01-16 16:16
2007.11.11
Прозрачность текстур с помощью маски (OpenGL)


15-1191797155
Альберт Мобайл
2007-10-08 02:45
2007.11.11
посоветуйте


2-1192274364
apic
2007-10-13 15:19
2007.11.11
Рисование