Parent Changed за контроли
5 отговора
63 прегледа
Parent Changed за контроли
Как разбирам кога се сменя родителя (Parent) на някой контрол? Има ли Message за това или трябва да го правя с Timer?
-------------
Special killer double trouble triple extra nicotine monster!
-------------
Special killer double trouble triple extra nicotine monster!
Re: Parent Changed за контроли
Има notification (или с други думи message - ама под различна форма) обаче това е само за design time. За това ли ти трябва - или за нещо различни - примерно да правиш нещо в run-time ????? ако сменяш родителя. Забрави таймера!!!!!
---
Е т'ва е живот!
---
Е т'ва е живот!
Re: Parent Changed за контроли
Malko е smeshno
Създавам си контрол, който трябва вдясно от себе си да създаде бутонче (това става в конструктора на контрола). А то (бутончето) трябва да е върху същия родител. Обаче при създаване на контрола Parent-а му още не е инициализиран, т.е. дори и да го сетна в конструктура, ще му сет-на nil.
И още: част от лудостта: имам
published
property DropForm: TCustomForm read fDropForm write fDropForm;
Когато се опитвам да го инициализирам от Object Inspector ми казва, че е невалидна стойността му. Цялото нещо е смешно ;)
-------------
Special killer double trouble triple extra nicotine monster!
И още: част от лудостта: имам
published
property DropForm: TCustomForm read fDropForm write fDropForm;
Когато се опитвам да го инициализирам от Object Inspector ми казва, че е невалидна стойността му. Цялото нещо е смешно ;)
-------------
Special killer double trouble triple extra nicotine monster!
Редактирано от z_free на
Re: Parent Changed за контроли
Значи по първия въпрос - може да не съм доразбрал
Имаш контрола която има конструктор от вида Create (AOwner : TControl) (Ако не бъркам класа за win контролите?) ??? - ами в момента в който той се извиква имаш Parent -а вече и в този конструктор можеш да създадеш този допълнителен бутон като го инициализираш със същия parent.
Всъщност кой точно е родителя на бутона ???? - новосъздадения компонент или parent -а на компонента- ако е първия случай подай Self на create- a на бутона, а във втория просто предай AOwner параметъра - и в двата случая няма начин parent-a да не е създаден - трябва да има някаква доста извратена логика която не разбирам.
По втория въпрос - ами най-вероятно си в грешка - ако искаш да ползваш TCustomForm - ще трябва да си регистрираш редактор (ако няма регистриран ) който работи на принципа на combo - сканира всички форми и ги пълни - след като напишеш нещо (ако не си го избрал от комбото) претърсва списъка и ако има такава форма assign -ва истинската стойност - т.е. създадения TCustomForm - като указател а не името на формата ;-))) Ако разбира се това искаш да направиш. Ако мислиш, че като напишеш името на формата и ObjectInspector- а ще се сети - има да чакаш ;-)))))
---
Е т'ва е живот!
Имаш контрола която има конструктор от вида Create (AOwner : TControl) (Ако не бъркам класа за win контролите?) ??? - ами в момента в който той се извиква имаш Parent -а вече и в този конструктор можеш да създадеш този допълнителен бутон като го инициализираш със същия parent.
Всъщност кой точно е родителя на бутона ???? - новосъздадения компонент или parent -а на компонента- ако е първия случай подай Self на create- a на бутона, а във втория просто предай AOwner параметъра - и в двата случая няма начин parent-a да не е създаден - трябва да има някаква доста извратена логика която не разбирам.
По втория въпрос - ами най-вероятно си в грешка - ако искаш да ползваш TCustomForm - ще трябва да си регистрираш редактор (ако няма регистриран ) който работи на принципа на combo - сканира всички форми и ги пълни - след като напишеш нещо (ако не си го избрал от комбото) претърсва списъка и ако има такава форма assign -ва истинската стойност - т.е. създадения TCustomForm - като указател а не името на формата ;-))) Ако разбира се това искаш да направиш. Ако мислиш, че като напишеш името на формата и ObjectInspector- а ще се сети - има да чакаш ;-)))))
---
Е т'ва е живот!
Редактирано от PhantomAS на
Re: Parent Changed за контроли
Накратко: не е вярно, че Контролите получава Parent при създаването им. Също не е вярно, че Owner-a (TComponent) и Parent (TWinControl) са задължително едни и същи, въпреки че ако си ги кликаш от палитрата с компоненти това се получава.
В моя случай и контролата и бутончето трябва да имат един и същи Parent - проблема с него е задоволително решен :) Обаче по втория въпрос:
Object Inspector-а си ги лист-ва възможните форми в Combo, обаче като избера някоя от тях и казва, че не е валидна стойност :)
-------------
Special killer double trouble triple extra nicotine monster!
В моя случай и контролата и бутончето трябва да имат един и същи Parent - проблема с него е задоволително решен :) Обаче по втория въпрос:
Object Inspector-а си ги лист-ва възможните форми в Combo, обаче като избера някоя от тях и казва, че не е валидна стойност :)
-------------
Special killer double trouble triple extra nicotine monster!
Редактирано от z_free на
Re: Parent Changed за контроли
значи таковата, за parent-а:
type
TSmeshka = Class(TControl)
...
protected
...
procedure SetParent(AParent: TWinControl); override;
...
end;
и това ти е мястото да сетнеш parent-а на копчето...
--------------------------------------
Започва Път от моят праг...
type
TSmeshka = Class(TControl)
...
protected
...
procedure SetParent(AParent: TWinControl); override;
...
end;
и това ти е мястото да сетнеш parent-а на копчето...
--------------------------------------
Започва Път от моят праг...