Главная страница
    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.49 MB
Время: 0.054 c
2-1192915547
Falcon
2007-10-21 01:25
2007.11.11
Получить дату без года в формате текущих региональных настроек


2-1192695391
Lebedev
2007-10-18 12:16
2007.11.11
Как в своей процедуре создать динамический объект?


2-1192795996
Sat
2007-10-19 16:13
2007.11.11
получить данные с сервера


2-1192884365
user1024
2007-10-20 16:46
2007.11.11
Как записать значение типа Memo в таблицу БД?


15-1191581507
s_t_d
2007-10-05 14:51
2007.11.11
BIOS для MotherBoard VERTEX M1 94V-0





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский