Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 3/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Bileşenden bileşen türetme veya özellik ekleme
#1
Smile 
Merhaba, 
  Bir bileşenden yeni bileşen oluşturup ek özellik ekleyerek kendi bileşenini oluşturmayı öğrenmek istiyorum. Bu konu hakkında epey bir araştırma yaptım fakat görsel olarak anlatılmış (video veya resimli açıklamalar ) bir kaynak bulamadım.  Class yapıları , miras alma, yeni class oluşturma gibi konulara okuyarak deneyerek azda olsa bilgi sahibiyim. Benim tek istediğim Delphiyi açtık. Sonraki adımlar nedir, new unit diyerekmi oluşturmaya başlıyoruz. Adımlar neler bunları gösteren veya yazan bir bilgi bulamadım. Elimde 4 adet delphi kitabı var fakat hiç birinde bunu göremedim.
  Konu hakkında bilginizi benle paylaşır gösterirseniz sevinirim (Tabiki  derin bir konu olduğunu biliyorum, sadece başlangıç aşamasını )
İmkanı olan arkadaşlarımız varsa  bu konu hakkında basit bir video paylaşmaları çok güzel olabilir. Böylece bu konuda ilk türk kaynak olma özelliğinede sahip olmuş olur Smile

Örnek yeni ek bir özelliğe sahip edit veya label gibi....

Teşekkürler
Cevapla
#2
Merhaba,

Bileşenlerden yeni bileşenler oluşturmak için Delphi Package uygulaması oluşturmalısınız.

1. İlk önce IDE üzerinden File > New > Package - Delphi seçeneğini seçerek projeyi oluşturun.
2. Daha sonra normal bir Unit oluşturur gibi ToolPalette'te yer alacak olan komponentinizin (bileşeninizin) ismini yazarak bir pas dosyası oluşturun.
3. Ardından miras alacağınız komponentin kullandığı kütüphaneleri interface'in altındaki uses kısmına ekleyin.
(Standart bir FMX komponenti için; (System.SysUtils, System.Classes, FMX.Types, FMX.Controls))
4. Yeni yazacağınız komponentin miras alacağı komponenti referans alın.
(type TYeniKomponentinAdi = class(TComboBox) gibi)
4. interface'in içerisindeki private deklarasyonlarımıza Object Inspector yada kod üzerinden erişmek, doldur-çağır (write-read) işlemleri yapacağınız özellikleri (property) ekleyin.
(EkAlan:string; gibi)
5. Daha sonra Get ve Set metodlarını yazmamız gerekiyor. (function GetEkAlan:string; ) ve (procedure SetEkAlan(alan:string); ) fonksiyonlarının imzalarını ekleyin.
6. Implementation gövdelerini yazmak için CTRL + SHIFT + C yapın.
7. Şimdi fonksiyonlarınızın gövdelerini şu şekilde doldurun;

function TYeniKomponentinAdi.GetEkAlan:string; 
begin
Result := EkAlan;
end;

procedure TYeniKomponentinAdi.SetEkAlan(alan:string);
begin
EkAlan := alan;
end;


8. Şimdi bu özelliklerin yer aldığı yeni komponentimizin oluşma ve yok olma anlarına göz atalım.
9. public belirtecinin altına yapıcı ve yıkıcı metodları override eden metodları ekleyin.

constructor Create(AOwner: TComponent); override; 
destructor Destroy; override; 

10. Create'in içinde ( inherited; ) yazarak varsayılan metodu tetikleyin. Şimdi de yeni eklediğiniz gelişmiş özellikleri (TStringList, TList vb.) oluşturmanız gerekir.
(FStringList := TStringList.Create; gibi)
11. Destroy'un içinde önce bu gelişmiş özellikleri Free edin. Daha sonra ( inherited; ) yapın.

Şimdi gelelim bu özelliklere komponentinizi kurduğunuzda nasıl erişeceğinize;
12.  "published" isminde eni bir belirteç açmanız gerekiyor. (public'in altına açabilirsiniz) daha sonra;
* property OzelEkAlan: string read EkAlan write SetEkAlan;  şeklinde tüm özel alanlarınızı ekleyin.

13. Şimdi derleyin ve sağ taraftaki Project Manager'dan sağ tuş yaparak Install Component'e basın.
14. IDE'yi yeniden başlatın ve komponentlerinizi kullanmaya başlayın.
{ talk is cheap show me the code. }
Cevapla
#3
Emeğinize sağlık çok teşekkür ediyorum. Harika anlatmışsınız..
Cevapla
#4
Çok açıklayıcı olmuş, elinize sağlık...
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Quick Report ile boş satır ekleme boreas 1 66 10-04-2018, Saat: 18:53
Son Yorum: boreas
  Dosya veya klasorlere en son erisim zamanını ogrenme klavye 11 263 14-03-2018, Saat: 15:11
Son Yorum: klavye
  IdHTTP1.Post veya NetHTTPRequest1.Post elixir84 2 263 08-03-2018, Saat: 17:27
Son Yorum: elixir84
  Başlık ekleme Dostk 2 254 01-02-2018, Saat: 14:23
Son Yorum: Abdullah ILGAZ
Question Uzak Bir Bilgisayar İçin Port Ekleme? hyperxman 21 1.022 22-11-2017, Saat: 00:03
Son Yorum: nguzeller



Konuyu Okuyanlar: 1 Ziyaretçi