Вниз
Скачать: CL | DM;

VCL   Найти похожие ветки 

← →
Sonder ©   (2002-12-02 22:59) [0]

Мастера! Пожалуйста, проясните для меня (и, возможно для многих), такой нюанс - если я, допустим, создаю контрол внутри другого таким типа образом:

Inherited Create(AOwner);
FInnerControl := TInnerControl.Create(Self);
TInnerControl.Parent := Self;


и далее в том же духе, то как мне в дизайне бросить на него(на FInnerControl) какой-то еще компонент. Вообще говоря, это касается компонента, содержащего в себе class(TCollection).


← →
Юрий Зотов ©   (2002-12-03 02:19) [1]

Непонятно, при чем тут коллекции, но, похоже, нужно вот что:

with FInnerControl do
ControlStyle := ControlStyle + [csAcceptsControls];


← →
Sonder ©   (2002-12-03 04:57) [2]

Не работает


← →
KSergey ©   (2002-12-03 07:12) [3]

Тогда не прячьтесь за InnerControl
Дайте нормальные названия и отчего наследуете каждый компонент


← →
Дмитрий К.К. ©   (2002-12-03 07:42) [4]

Ет гостайна ;)


← →
Кулюкин Олег ©   (2002-12-03 08:49) [5]

А почему
TInnerControl.Parent := Self;

а не

FInnerControl.Parent := Self;


← →
Sonder ©   (2002-12-03 18:53) [6]


> А почему
> TInnerControl.Parent := Self;

Ошибка. Извините, потерял дискуссию. Я думаю

> Кулюкин Олег ©

и сам понял, что подобное выражение привело бы и у меня к ошибке компилятора.

> KSergey © (03.12.02 07:12)
> Тогда не прячьтесь за InnerControl

А чего за ним прятаться. "Inner" - в переводе с аглицкого - внутренний. Это просто пример, мне было не досук приводить код модуля, да это и не обязательно.
Еще раз:

> with FInnerControl do
> ControlStyle := ControlStyle + [csAcceptsControls];

TInnerControl = class(TCustomPanel), если внимательно посмотреть, экземпляр этого класса изначально [csAcceptsControls].


> Юрий Зотов © (03.12.02 02:19)
> Непонятно, при чем тут коллекции..

По - моему, ничего непонятного. Есть компонент (Назовем TMasterControl, конструктор которого я попытался привести выше, но с недопустимой и грубой ошибкой / F/ T, которая, по-моему, всего-лишь опечатка). У него есть коллекция. У коллекции есть поле. " FInnerControl: TInnerControl". Я создаю экземп. TMasterControl. В его конструкторе создаю коллекцию, в конструкторе коллекции даю ей понять, что за итемы у неё есть, в конструкторе итема создаю экз. TInnerControl, Parent которого = компонент, владеющий коллекцией.

Именно поэтому я до насттоящего момента опустил эти детали, потому что главное :

FInnerControl := TInnerControl.Create(Self);
FInnerControl.Parent := Self;


И когда берешь и бросаешь на "MasterControl", например, Edit, Owner"ом у етого едита становится "MasterControl". Как сделать так, что-бы Owner"ом у всеми брошенного едита становился "FInnerControl"?





← →
Smithson ©   (2002-12-03 18:57) [7]

После создания FInner... руками перебрать контролы на объекте-хозяине (массив Controls) и задать для желаемых владельцем FInner...


← →
Sonder ©   (2002-12-03 18:59) [8]

Поправка:

> И когда берешь и бросаешь на "MasterControl", например,
> Edit

Этим я хотел сказать, что экземпляры FInnerControl уже созданы и бросить этот Edit я пытаюсь на них. Ну прям как на Panel1 на форме в Design-Time.


← →
Sonder ©   (2002-12-03 19:02) [9]


> Smithson © (03.12.02 18:57)
> После создания FInner... руками перебрать контролы на объекте-хозяине
> (массив Controls) и задать для желаемых владельцем FInner...

Какой-такой Controls? Это который Components?
Хорошо. RemoveComponent, InsertComponent. Ну не хочу я этим... в RunTime...


← →
icWasya ©   (2002-12-03 19:14) [10]

дело в том что в дизайнере Delphi может работать только с Control"ами, у которых Owner = Form - другие просто не видитю


← →
Sonder ©   (2002-12-03 19:19) [11]


> Юрий Зотов © (03.12.02 02:19)
> Непонятно, при чем тут коллекции, но, похоже, нужно вот
> что:
>
> with FInnerControl do
> ControlStyle := ControlStyle + [csAcceptsControls];

Склоняю голову. Мастер. Этого даже не надо делать. Епрст. Что за глюк. Когда пробовал, не работало. Сейчас работает. Развел тут базар... Кого покоробило, прошу прощения. Юрию спасибо за урок - не фиг кидаться в панику, посиди, подумай, попробуй ещё разок.


← →
Юрий Зотов ©   (2002-12-03 19:26) [12]

> И когда берешь и бросаешь на "MasterControl", например, Edit,
> Owner"ом у етого едита становится "MasterControl".

А на самом деле, Owner"ом у "етого едита" становится форма. А никакой не MasterControl. Азбука, однако.


> Как сделать так, что-бы Owner"ом у всеми брошенного едита
> становился "FInnerControl"?

InsertComponent. Но получите головную боль с сохранением формы.


> Ну прям как на Panel1

Вот Вам и сказали - csAcceptControls. Это и будет "прям как на Panel1". Никакие Owner"ы здесь ни при чем.


← →
Sonder ©   (2002-12-03 19:32) [13]


> И когда берешь и бросаешь на "MasterControl", например,
> Edit, Owner"ом (Parent"ом - горячка)...

Теперь другая проблема. Бросаешь Edit, все нормально - приклеился, как миленький. Только вот другая проблемка выскочила - папа то у этого Edit - все равно главный компонент. Ругаюсь. Ладноб, разберемся.



← →
Юрий Зотов ©   (2002-12-03 19:43) [14]

От чего наследуется TInnerControl?


← →
Sonder ©   (2002-12-03 19:45) [15]

TInnerControl = class(TCustomPanel)


← →
Юрий Зотов ©   (2002-12-03 20:01) [16]

Тогда у брошенного на TInnerControl Edit"а Owner"ом должна автоматически становится форма, а Parent"ом - этот самый TInnerControl. Все как у панели - если, конечно, не вмешиваться своим кодом в этот стандартный механизм.


← →
Sonder ©   (2002-12-03 20:12) [17]


> Тогда у брошенного на TInnerControl Edit"а Owner"ом

Дошло уже. Спасибо за помощь. Дело в том, что Edit не отображается на компоненте во время выполнения. Я не проверял, но наверное папа у него становится этот "мастер".


← →
Юрий Зотов ©   (2002-12-03 20:17) [18]

Проверяйте порядок создания. Посмотрите DFM в виде текста.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.011 c
8-36302
GSergey
2002-08-25 20:36
2002.12.12
TIFF class F


1-36229
sancho
2002-12-01 20:18
2002.12.12
Как унать на каком языке текст:англ. или русском?


6-36317
Driverrr
2002-09-17 19:04
2002.12.12
Про модем...


1-36161
wam
2002-12-03 21:42
2002.12.12
Рисование кривых методом сеток


1-36150
@andrew
2002-12-02 16:35
2002.12.12
ПРИВЕТ ВСЕМ!!! Кто знает, есть ли компонент на подобии




   Наверх