Сваки пут када ставите плочу на образац и дугме на тај панел, успоставите "невидљиву" везу. Форма постаје власник дугмета, а плоча је постављена на свој начин родитељ.
Свака компонента Делпхија има својство Власника. Власник брине о томе ослобађање власничке компоненте када се ослобађа.
Слично, али различито, својство Парент указује на компоненту која садржи компоненту "цхилд".
Родитељ
Родитељ се односи на компоненту у којој се налази друга компонента, попут ТФорм, ТГроупБок или ТПанел. Ако једна контрола (родитељ) садржи друге, садржане контроле су дечије контроле родитеља.
Родитељ одређује како се компонента приказује. На пример, својства Лева и Горња су сва у односу на надређени.
Својство родитеља се може доделити и променити током извођења.
Нису све компоненте надређене. Многи облици немају родитеља. На пример, обрасци који се појављују директно на радној површини оперативног система Виндовс имају подешени родитељ на нулу. Компонента ХасПарент метода враћа логичку вриједност која показује је ли компоненти додијељен родитељ или не.
Ми користимо родитељ да бисмо добили или поставили родитељ контроле. На пример, поставите два панела (Панел1, Панел2) на образац и ставите једно дугме (Гумб1) на први панел (Панел1). Ово поставља својство родитеља Буттона на Панел1.
Буттон1.Парент: = Панел2;
Ако горњи код поставите у догађај ОнЦлицк за други панел, када кликнете на Панел2, тастер „прескаче“ са Панел1 на Панел2: Панел1 више није Родитељ за дугме.
Када желите да креирате ТБуттон током извођења, важно је да упамтимо да доделимо родитељ - контролу која садржи дугме. Да би компонента била видљива, она мора имати родитеља који ће се приказати у себи.
ПарентТхис и ПарентТхат
Ако у време пројектовања изаберете дугме и погледате Објецт Инспецтор, приметићете неколико својстава „Родитеља свесних“. Тхе ПарентФонт, на пример, означава да ли је фонт коришћен за натпис дугмета исти као онај који се користи за родитељ дугмета (у претходном примеру: Панел1). Ако је ПарентФонт тачно за све дугмад на плочи, промена својства Фонт панела у Болд узрокује да сви натписи дугмета на табли користе тај (подебљани) фонт.
Контролише имовину
Све компоненте које имају исти родитељ доступне су као део Контроле власништво тог родитеља. На пример, за контролу се могу користити поновите сву децу контроле прозора.
Сљедећи дио кода може се користити за скривање свих садржаних компоненти на Панел1:
за ии: = 0 до Панел1.ЦонтролЦоунт - 1 урадити
Панел1.Цонтролс [ии]. Видљив: = фалсе;
Трицккинг Трицкс
Контроле са прозора имају три основне карактеристике: могу примити улазни фокус, користе системске ресурсе и могу бити родитељи другим контролама.
На пример, компонента дугмета је прозорска контрола и не може бити родитељ неке друге компоненте - на њу не можете да поставите другу компоненту. Ствар је у томе што Делпхи скрива ову особину од нас. Пример је скривена могућност да ТСтатусБар на себи има неке компоненте као што је ТПрогрессБар.
Власништво
Прво, имајте на уму да је образац укупни власник било којих компоненти које се на њему налазе (смештених на обрасцу у време пројектовања). То значи да када се образац уништи, уништавају се и све компоненте на обрасцу. На пример, ако имамо апликацију са више од једног обрасца када позивамо методу Фрее или Релеасе за објект обрасца, ми не морате бринути да ћете експлицитно ослободити све предмете на том обрасцу - јер је облик власник свих његових компоненте.
Свака компонента коју креирамо током пројектовања или извођења мора бити у власништву друге компоненте. Власник компоненте - вриједност својине Овнер - одређује се параметром који је прослијеђен конструктору Цреате када је компонента креирана. Једини други начин да доделите власника је коришћење метода ИнсертЦомпонент / РемовеЦомпонент током трчања. Образац подразумевано поседује све компоненте на њему, а заузврат је у власништву апликације.
Када користимо кључну реч Ја као параметар методе Цреате - објект који стварамо је у власништву класе у којој се налази метода - која је обично Делпхи образац.
Ако с друге стране направимо другу компоненту (а не облик) власника компоненте, онда ту компоненту правимо одговорном за одлагање предмета када је уништен.
Као и било који други Делпхи компонента, ТФиндФиле компоненте по мери могу се креирати, користити и уништавати у току рада. За креирање, коришћење и ослобађање а ТФиндФиле компонента у току, можете да користите следећи исечак кода:
користи ФиндФиле;
...
вар ФФиле: ТФиндФиле;
процедура ТФорм1.ИнитиализеДата;
започети // форм („Селф“) је власник компоненте // нема родитеља јер је овај // невидљива компонента.
ФФиле: = ТФиндФиле. Креирајте (Селф);
...
крај;
Напомена: Будући да је ФФиле креиран са власником (Форм1), не морамо ништа да радимо да бисмо ослободили компоненту - биће ослобођен када је власник уништен.
Својство компонената
Све компоненте које имају истог власника доступне су као део Својство компонената тог Власника Следећи поступак се користи за брисање свих Уређивање компоненти које се налазе на обрасцу:
процедура ЦлеарЕдитс (АФорм: ТФорм);
вар
ии: Интегер;
започети
за ии: = 0 до Образац. ЦомпонентЦоунт-1 урадити
ако (Образац. Компоненте [ии] је ТЕдит) онда ТЕдит (АФорм. Компоненте [ии]) Текст: = '';
крај;
"Сирочад"
Неке контроле (као што су АцтивеКс контроле) садрже се у прозорима који нису ВЦЛ, а не у родитељској контроли. За ове контроле вредност Парент је нула и тхе ПарентВиндов својство специфицира не-ВЦЛ родитељски прозор. Постављање ПарентВиндов помиче контролу тако да се она налази у наведеном прозору. ПарентВиндов се аутоматски поставља када се створи контрола помоћу ЦреатеПарентед метод.
Истина је да у већини случајева не требате бринути о родитељима и власницима, већ када је реч о ООП и развој компоненти или када желите да учините Делпхи корак напријед, изјаве у овом чланку помоћи ће вам да корак учините брже.