Would you like to react to this message? Create an account in a few clicks or log in to continue.



 
AnasayfaPortalliGaleriAramaLatest imagesKayıt OlGiriş yap

 

 Delphi bileşen yazımı anlatım 2

Aşağa gitmek 
YazarMesaj
ByHeart
WebMaster
WebMaster
ByHeart


Mesaj Sayısı : 46
Kayıt tarihi : 01/01/08

Delphi bileşen yazımı anlatım 2 Empty
MesajKonu: Delphi bileşen yazımı anlatım 2   Delphi bileşen yazımı anlatım 2 Icon_minitimeC.tesi Şub. 23, 2008 3:36 pm

2.bölüm

Property

IDE’nin özellikleri tanıyabilmesi için özelliklerin Class’ın Published alanında tanımlanması gerekir. IDE bu özellikleri kullanabilmesi önce tanıması lazımdır.

Aynı zamanda özellikleri tekrar kullanabilmek için kalıcılığında sağlanması gerekir. IDE basit veri tipleri için kalıcılığın sağlanmasını otomatik olarak yapar. Integer, string, boolean basit veri tiplerindendir. Daha karmaşık yapıda olan özellikler için fonksiyonlar tanınmıştır. TMemo’da bulunan Lines özelliği bu tip özelliklerindendir.

Event

Bir özelliğin tipi metot işaretçisi ise o özellik Event olarak adlandırılır. Metot işaretçileri bir çeşit değişkendirler. Class içindeki fonksiyon ve prosedürlerin işaretçilerini tutarlar. Metot işaretçisi tanımlarken;

1. Metot işaretçisinin tipi tanımlanır.

2. Bu tip ile oluşturulmuş bir değişken, metotların çağrılması gibi çağrılır.



Type

TBOlayim = procedure(Param1: string) of object;



Burada metot işaretçisi TBOlayim’dir. Arkasından Event tanımlıyoruz.



TMyObject = class

Private

FOnMyEvent: TBOlayim;

Published

Property OnMyevent: TMyObject read FOnMyEvent write FOnMyEvent;

End;







Burada oluşan yeni Event’ımızın adı OnMyEvent’dır. Yukarıda tanımlı olan TBOlayim metot işaretci tipinden türeyen ve aynı zamanda Property’de Getter ve Setter olarak girdiğimiz FOnMyevent değişkeni metot işaretçisidir.

Şimdi form1’in Class’ında bir metot oluşturalım burada olay tetiklemeyi göreceğiz.



Olay tetikleme(Event Triggering)



Procedure MyMetot(Parameter1: string );



Daha önceden de dediğimiz gibi Bu metodu otomatik olarak Ctrl + Shift + C tuş kombinasyonları ile deklare edebilirsiniz.

Şimdi istediğiniz Class’a aşağıdaki kodları yazınz.



Var

BenimNesne : TMyObject;

Begin

BenimNesne:= TMyObje.create;

BenimNesne.OnMyevent := MyMetot;

End;

Burayı iyice anlamanızı öneririm.Yukarıda anlaşılacağı üzere Form1’de bulunan MyMetot isminde olan bir metot her hangi bir sınıfta oluşturulmuş BenimNesne nesnesinin OnMyEvent olayına atanmıştır. TMyObject sınıfında oluşturulmuş property’nin Getter’ı ve Setter’ı hükmünde olan FOnMyEvent metot işaretçisi, Form1’de bulunan MyMetot ismindeki gerçek metoda işaret eder olmuştur. Buna olay tetikleme denir. Öğrendiğimiz bu bilgilerin ardından şimdi ikinci bileşenimizi yazmaya başlayalım.



İnterface

uses

SysUtils, Classes, Controls, StdCtrls, Dialogs;

Type

TMyLabel = class (TLabel)

Private

Function GCaption: TCaption;

Procedure SCaption: TCaption;

Public

Constructor Create(AOwner: TComponent); override;

Published

Property Caption: TCaption read GCaption write SCaption;

End;



Procedure Register;// bileşenimizi kaydedeceğiz



İmplementation



Procedure Register;

Begin
RegisterComponents(‘Samples’, [TMyLabel]);

End;



constructor TMyLAbel.Create(AOwner: TComponent);

begin

inherited Create(AOwner);

Caption := ’0’;

end;

function TMyLabel.GCaption: TCaption;

begin

Reult := inherited Caption;

end;

procedure TMyLabel.SCaption(const Value: TCaption);

var

E, Number: Integer;

begin

Val(Value, Number, E);

if E <> 0 then

ShowMessage(’neden bir sayı girmiyorsun kardeşim Very Happy….!....’)

else

inherited Caption := Value;

end;



Şimdi kodlara bir göz atalım.



TMyLabel isminde TLabel bileşeninden türeyen bir Class’ımız var. TLabel bileşeninin bütün özelliklerini miras almıştır. Published alanında tanımladığımız Property’nin Getter’ı ve Setter’ı hükmünde olan GCaption fonksiyonu ve SCaption prosedürü tanımlanmıştır. Ata bileşenimizin üzerine yazmak için Constructor’u override ediyoruz. Bileşenimiz bileşen paletine kaydetmek için Register prosedürün kullanımına göz atıyoruz.



RegisterComponents(’Samples’, [TMyLabel]);



İlk parametre hangi sekmede olacağını gösterir. İkinci parametre bileşenimizin ismidir. Constructor’un create metodunda inherited ile ata sınıfın değişkenine işaret edilmiştir. GCaption Getter metoduna baktığımızda çıkış olarak ata sınıfın Caption’ını veriyor. SCAption Setter metoduna baktığımızda Captiona girilen sayının geçerli bir sayı olup olmadığını kontrol ediyor. Geçerli bir sayı değilse hata mesajını gönderiyoruz. Captiona girilen sayının geçerli bir sayı olması durumunda ata sınıfın Caption özelliğine bu yeni değeri atıyoruz. Şimdi aklıma geldi bileşenin create constructor’ına CAption’a sıfır değerini atamıştık. Çünkü Delphi bileşenin Caption ve tex özelliğinde bulunan string’İ bileşen ismi olarak atıyor. Bu geçerli bir sayı değildir. Programdan anlayacağınız gibi TMyLabel’a girilen sayının geçerli bir sayı olup olmadığını kontrol eder. İkinci bölüm biraz kısa oldu. Gelecek bölümde buluşmak ümidiyle vesselam
Sayfa başına dön Aşağa gitmek
 
Delphi bileşen yazımı anlatım 2
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
 :: CatirCatir Web :: Programlama-
Buraya geçin: