Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.48 MB
Время: 0.068 c
1-1186402346
DevilDevil
2007-08-06 16:12
2007.11.11
Проблема с прорисовкой содержимого панелей (TPanel)


8-1169318785
mary84
2007-01-20 21:46
2007.11.11
как создать в базе данных таблицу картинок jpg


15-1191322414
dumka
2007-10-02 14:53
2007.11.11
Юридический вопрос


1-1187854786
Krants
2007-08-23 11:39
2007.11.11
Управление Excel через ProcessID


11-1175523578
Fregl
2007-04-02 18:19
2007.11.11
Поддержка MySQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский