![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Handle окна
DimaBr © (2005-07-22 13:34:00)Удалено модератором
Примечание: СПАМ
DimaBr (2005-07-22 16:40:00) [1]Спасибо огромное всем, пошёл на "Компоненты"
Юрий Зотов (2005-07-22 16:35:00) [2]> DimaBr (22.07.05 16:26) [17]
> Да, пишу эксперт.
Тогда советую задать вопрос в конференции "Компоненты", поскольку здесь он явно не по теме и может быть удален. И хорошо его сформулировать, чтобы было понятно, о чем идет речь и в чем состоит проблема.
Юрий Зотов (2005-07-22 16:32:00) [3]> DimaBr (22.07.05 15:59) [15]
> как определить Handle этого окна ? Delphi - то различает
> соотношение компонент - окно.
Раз IDE сама создает и компонент, и окно, то она, естественно о них обоих все знает. В том числе, знает, какое окно какому компоненту сопоставлено - так что для IDE проблем нет.
А вот для нас они есть. Скорее всего, TContainer - это недокументированный потомок TWinControl, используемый только внутри IDE и содержащий ссылку на связанный с ним невизуальный компонент. И, поскольку для нас он недокументирован, то нам остается либо найти внутреннюю документацию Borland (что вряд ли реально), либо заняться исследованиями (или, говоря по-простому - хакерством). Причем:
- раз это окно существует только в IDE, то и определить его может только код, работающий в design-time;
- раз оно создается только для невизуальных компонентов, то и определить его можно только для них;
- и в любом случае сам такой компонент никакого хэндла не имеет, поэтому исходный вопрос все равно поставлен некорректно.
DimaBr (2005-07-22 16:26:00) [4]Да, пишу эксперт. Хочу прятать невизуальные компонеты выборочно, бо вместе с хранимыми процедурами прячется ActionList, а это мне не нравится.
Digitman (2005-07-22 16:05:00) [5]
> DimaBr (22.07.05 15:59) [15]
ты дизайн-тайм-эксперт что-ли пишешь ?
DimaBr (2005-07-22 15:59:00) [6]> Юрий Зотов
Огромное спасибо, теперь наконец понятно. Но как определить Handle этого окна ? Delphi - то различает соотношение компонент - окно.
Юрий Зотов (2005-07-22 15:04:00) [7]> DimaBr (22.07.05 14:45) [12]
Невизуальные компоненты сами по себе невидимы. Но в design-time они должны быть видны, поэтому для отображения невизуального компонента среда разработки (IDE) создает окно класса TContainer и работает с ним. То есть, такое окно представляет компонент и является частью IDE, а не компонента. Сам же компонент о наличии такого окна не подозревает и не имеет к нему никакого отношения.
Для визуальных компонентов IDE окон-представителей не создает, поскольку это не нужно (они видны и сами по себе, без представителей).
Digitman (2005-07-22 14:51:00) [8]
> класс этого Handle - TContainer
> Вывод - компонент обладает Handlom
галиматья полная
DimaBr (2005-07-22 14:45:00) [9]Народ, чего кипятитесь. Берём FastExperts или что-нибуть наподобе и смотрим как он прячет все невизуальные компоненты с формы:
Перебор всех компонентов (Handle) на форме, если класс этого Handle - TContainer, то ShowWindow(Handle, SW_HIDE);
Вывод - компонент обладает Handlom
Юрий Зотов (2005-07-22 14:40:00) [10]> DimaBr
1. Компоненты - это класс TComponent и все его потомки.
2. Компоненты подразделяются на визуальные (TControl и все его потомки) и невизуальные (все остальные).
3. Визуальные компоненты, в свою очередь, подразделяются на оконные (TWinControl и все его потомки) и графические (TGraphicControl и все его потомки).
4. Окнами являются только оконные компоненты. Прочие компоненты тоже могут создавать окна (напр. TTimer), но сами по себе окнами не являются.
5. Поэтому вопрос лишен смысла и ответить на него невозможно.
alpet (2005-07-22 14:32:00) [11]>Даже невизуальный компонент имеет дискриптор иначе как бы мы его >видели и двигали по форме.
Правда ? Ну-ка для примера, приведи значение свойства Handle любого невизуальногокомпонента на свой выбор.
Digitman (2005-07-22 14:27:00) [12]
> Компонент, помещённый на форму (в дизайнере) является окном
> со своим Handle
в общем случае неверно.
Чапаев (2005-07-22 14:26:00) [13]Может он имеет в виду, что каждый прямоугольничек в дизайнере является окном?
Alexander Panov (2005-07-22 14:20:00) [14]DimaBr (22.07.05 14:00) [5]
Компонент, помещённый на форму (в дизайнере) является окном со своим Handle, которое Винда и перерисовывает когда нужно. Может быть я не прав ?
Обрати внимание на компонент TLabel.
Джо (2005-07-22 14:20:00) [15]
> [5] DimaBr (22.07.05 14:00)
> Компонент, помещённый на форму (в дизайнере) является окном
> со своим Handle
Не обязательно.
> которое Винда и перерисовывает когда нужно
Не обязательно.
> Может быть я не прав ?
Скорее всего.
---
См. иерархию объектов-наследников TWinControl, TControl, прочитай о них справку и почувствую разницу ;-)
DimaBr (2005-07-22 14:00:00) [16]Компонент, помещённый на форму (в дизайнере) является окном со своим Handle, которое Винда и перерисовывает когда нужно. Может быть я не прав ?
Джо (2005-07-22 13:56:00) [17]
> [3] DimaBr (22.07.05 13:50)
> Харош прикалываться,
Не-а.
> лучше помогли бы.
А ты уже ответил на уточняющие вопросы или я что-то пропустил?
DimaBr (2005-07-22 13:50:00) [18]Харош прикалываться, лучше помогли бы.
Alx2 (2005-07-22 13:38:00) [19]DimaBr (22.07.05 13:34)
Неверно. Например, TDataSource не имеет дескриптора (Handle), но двигать его можно. :)
Джо (2005-07-22 13:35:00) [20]Что есть "дескриптор"? Что есть "Handle окна"? Сплошная каша...