Форум: "Основная";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
ВнизПроблема с прорисовкой содержимого панелей (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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.054 c