Sahibi ve Anlayışı Anlama Delphi Uygulamalarında Üst Öğe

click fraud protection

Bir forma bir panel ve bu panelde bir düğme her yerleştirdiğinizde "görünmez" bir bağlantı kurarsınız. Form, sahip ve Panel, ebeveyn.

Her Delphi bileşeninin bir Owner özelliği vardır. Sahibi ilgilenir azat serbest bırakılırken sahip olunan bileşenler.

Parent özelliği benzer ancak farklı, "alt" bileşeni içeren bileşeni belirtir.

ebeveyn

Üst öğe, TForm, TGroupBox veya bir TPanel gibi başka bir bileşenin içerdiği bileşeni ifade eder. Bir denetim (üst öğe) başkalarını içeriyorsa, içerdiği kontroller ebeveynin alt kontrolleridir.

Üst öğe bileşenin nasıl görüntüleneceğini belirler. Örneğin, Sol ve Üst özelliklerinin tümü Üst Öğeye göredir.

Parent özelliği, çalışma zamanı sırasında atanabilir ve değiştirilebilir.

Tüm bileşenlerde Ebeveyn bulunmaz. Birçok formun bir Ebeveyni yoktur. Örneğin, doğrudan Windows masaüstünde görünen formların Üst öğesi nil olarak ayarlanmıştır. Bir bileşenin HasParent yöntemi, bileşene bir üst öğe atanıp atanmadığını gösteren bir boolean değeri döndürür.

Bir denetimin üst öğesini almak veya ayarlamak için Parent özelliğini kullanırız. Örneğin, iki paneli (Panel1, Panel2) bir forma yerleştirin ve bir düğmeyi (Button1) ilk panele (Panel1) yerleştirin. Bu, Button'ın Parent özelliğini Panel1 olarak ayarlar.

instagram viewer

 Button1.Parent: = Panel2; 

Yukarıdaki kodu ikinci Panel için OnClick olayına yerleştirirseniz, Panel2'yi tıklattığınızda, Panel1'den Panel2'ye "atlar": Panel1 artık Düğmenin Üst Öğesi değildir.

Çalışma zamanında bir TButton oluşturmak istediğinizde, bir ebeveyn (düğmeyi içeren kontrol) atamayı hatırlamamız önemlidir. Bir bileşenin görünür olması için içinde kendini gösterecek bir ebeveyne sahip olmalı.

ParentThis ve ParentThat

Tasarım zamanında bir düğme seçer ve Nesne Denetçisine bakarsanız birkaç "Ebeveyn tanıyan" özellik görürsünüz. ParentFont, örneğin, Button'ın altyazısı için kullanılan Yazı Tipinin Button'ın üst öğesi için kullanılan yazı tipiyle aynı olup olmadığını belirtir (önceki örnekte: Panel1). ParentFont, Paneldeki tüm Düğmeler için Doğru ise, panelin Font özelliğini Kalın olarak değiştirmek, Paneldeki tüm Düğmelerin açıklamasının bu (kalın) yazı tipini kullanmasına neden olur.

Özelliği Kontrol Eder

Aynı Üst Öğeyi paylaşan tüm bileşenler, Kontroller ebeveynin malı. Örneğin, Kontroller aşağıdakiler için kullanılabilir: pencereli denetimin tüm çocukları üzerinde yineleme.

Sonraki kod parçası, Panel1'de bulunan tüm bileşenleri gizlemek için kullanılabilir:

için ii: = 0 için Panel1.ControlCount - 1 yapmak

 Panel1.Kontroller [ii] .Görünebilir: = yanlış;


Hileler

Pencereli denetimlerin üç temel özelliği vardır: giriş odağını alabilirler, sistem kaynaklarını kullanırlar ve diğer denetimlerin ebeveynleri olabilirler.

Örneğin, Button bileşeni pencereli bir denetimdir ve başka bir bileşenin üst öğesi olamaz - üzerine başka bir bileşen yerleştiremezsiniz. Mesele şu ki, Delphi bu özelliği bizden gizliyor. Bir örnek, TStatusBar'ın TProgressBar gibi bazı bileşenlere sahip olması için gizli olasılıktır.

sahiplik

İlk olarak, bir Formun, üzerinde bulunan tüm bileşenlerin (Form zamanında tasarım zamanında konumlandırılmış) genel Sahibi olduğunu unutmayın. Bu, bir form yok edildiğinde, formdaki tüm bileşenlerin de yok edildiği anlamına gelir. Örneğin, bir form nesnesi için Serbest veya Serbest Bırakma yöntemini çağırdığımızda birden fazla forma sahip bir uygulamamız varsa, bu formdaki tüm nesneleri açıkça serbest bırakma konusunda endişelenmenize gerek yoktur; çünkü form, tüm formlarının sahibidir. bileşenler.

Tasarım veya çalışma zamanında oluşturduğumuz her bileşenin başka bir bileşene ait olması gerekir. Bir bileşenin sahibi - Sahip özelliğinin değeri - bileşen oluşturulduğunda Oluşturma yapıcısına iletilen bir parametre tarafından belirlenir. Sahip'i yeniden atamanın diğer tek yolu çalışma zamanı sırasında InsertComponent / RemoveComponent yöntemlerini kullanmaktır. Varsayılan olarak, bir form üzerindeki tüm bileşenlere sahiptir ve Uygulamaya aittir.

Anahtar kelimeyi kullandığımızda öz Oluştur yönteminin parametresi olarak - oluşturduğumuz nesne, genellikle bir Delphi formu olan yöntemin içerdiği sınıfa aittir.

Öte yandan, başka bir bileşeni (form değil) bileşenin sahibi yaparsak, o bileşeni yok edildiğinde nesnenin atılmasından sorumlu hale getiririz.

Diğerleri gibi Delphi bileşeni, ısmarlama TFindFile bileşeni, çalışma zamanında oluşturulabilir, kullanılabilir ve yok edilebilir. Bir oluşturmak, kullanmak ve ücretsiz TFindFile bileşeni çalıştırıldığında, bir sonraki kod snippet'ini kullanabilirsiniz:

kullanımları Dosyayı bul;

...
var FFile: TFindFile;

prosedür TForm1.InitializeData;

başla // form ("Self"), bileşenin Sahibidir // bu // görünmez bir bileşen olduğu için Ebeveyn yoktur.

 FFile: = TFindFile. (Kendini) Yarat;

 ...

son;

Not: FFile bir sahiple (Form1) oluşturulduğundan, bileşeni boşaltmak için hiçbir şey yapmamız gerekmez; sahip yok edildiğinde serbest bırakılır.

Bileşenler Özelliği

Aynı Sahibi paylaşan tüm bileşenler, Bileşenler özelliği o Sahibin. Aşağıdaki yordam, formdaki tüm Edit bileşenlerini temizlemek için kullanılır:

prosedür ClearEdits (AForm: TForm);

var

 ii: Tam sayı;

başla

için ii: = 0 için Form. ComponentCount-1 yapmak

Eğer (Form. Bileşenler [ii] dır-dir TTimer) sonra TEdit (AForm. Bileşenler [ii]) .Metin: = '';

son; 

"Kimsesiz çocuklar"

Bazı denetimler (ActiveX denetimleri gibi), bir üst denetim yerine VCL olmayan pencerelerde bulunur. Bu kontroller için Ebeveynin değeri sıfır ve ParentWindow özelliği, VCL olmayan ana pencereyi belirtir. ParentWindow ayarı, denetimi belirtilen pencerede yer alacak şekilde taşır. ParentWindow, kontrol kullanılarak bir kontrol oluşturulduğunda otomatik olarak ayarlanır. CreateParented yöntem.

Gerçek şu ki, çoğu durumda Ebeveynleri ve Sahipleri önemsemeniz gerekmez, ancak OOP söz konusu olduğunda ve bileşen geliştirme ya da Delphi'yi bir adım ileri götürmek istediğinizde, bu makaledeki ifadeler bu adımı daha hızlı atmanıza yardımcı olacaktır.

instagram story viewer