Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


DevilDevil ©   (2007-08-06 16:12:00) 

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

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

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

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


DevilDevil   (2007-08-27 10:26:00) [1]

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

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

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

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


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


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


Руки


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


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

Поищи про TPanel


wp2   (2007-08-23 12:18:00) [3]

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


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


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


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


wp2   (2007-08-23 11:21:00) [5]

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


DimaBr   (2007-08-22 10:51:00) [6]

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


DevilDevil   (2007-08-21 17:25:00) [7]

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

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


DimaBr   (2007-08-21 15:59:00) [8]

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


DevilDevil   (2007-08-21 15:09:00) [9]

хмм.....

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

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


DimaBr   (2007-08-21 14:35:00) [10]

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


DevilDevil   (2007-08-21 14:29:00) [11]

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

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


DimaBr   (2007-08-21 14:02:00) [12]

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


DevilDevil   (2007-08-21 11:28:00) [13]

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

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

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

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


DimaBr   (2007-08-20 08:47:00) [14]

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

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-09 12:08:00) [15]

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


DevilDevil   (2007-08-08 10:22:00) [16]

Тогда:

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


DevilDevil   (2007-08-07 09:01:00) [17]

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


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


Инс   (2007-08-06 17:19:00) [18]


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо