class reference type

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
macicek
Üye
Mesajlar: 13
Kayıt: 04 Eki 2007 11:44
Konum: K.K.T.C

class reference type

Mesaj gönderen macicek »

merhaba arkadaslar

Kod: Tümünü seç

type TControlClass = class of TControl; 

function CreateControl(ControlClass: TControlClass; 
const ControlName: string; X, Y, W, H: Integer): TControl; 
begin 
     Result := ControlClass.Create(MainForm); 
     with Result do 
      begin 
        Parent := MainForm; 
        Name := ControlName; 
        SetBounds(X, Y, W, H); 
        Visible := True; 
      end; 
end;
ile asagidaki kod arasinda fark nedir acaba?eger iki kodda ayni anlama geliyorsa class reference typelarin varolus amaci nedir?cevaplariniz icin simdiden tesekkurler.saygilar

Kod: Tümünü seç

function CreateControl(ControlClass: TControl; 
const ControlName: string; X, Y, W, H: Integer): TControl; 
begin 
     Result := ControlClass.Create(MainForm); 
     with Result do 
      begin 
        Parent := MainForm; 
        Name := ControlName; 
        SetBounds(X, Y, W, H); 
        Visible := True; 
      end; 
end;
Ne yüksek bir zeka ne büyük hayal gücü Her ikisi de insani dahi yapamaz.Deha'nın ruhu sevgidir,sevgidir ve yine sevgidir.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Bu kodlar aynı kodlar değildir. 2. yazdığınız kodun hata çıkaracağı kanaatindeyim. Çünkü bir nesne oluşturulurken onun sınıfı kullanılır, nesnenin kendisi değil. Yani bir buton oluşturmak için TButton.Create kodu kullanılır. Button1.Create hata oluşturacaktır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
macicek
Üye
Mesajlar: 13
Kayıt: 04 Eki 2007 11:44
Konum: K.K.T.C

Mesaj gönderen macicek »

Kesinlikle haklisiniz.Bu noktayi gozden kacirmisim.Tesekkurler
Ne yüksek bir zeka ne büyük hayal gücü Her ikisi de insani dahi yapamaz.Deha'nın ruhu sevgidir,sevgidir ve yine sevgidir.
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

sabanakman yazdı:Bu kodlar aynı kodlar değildir. 2. yazdığınız kodun hata çıkaracağı kanaatindeyim. Çünkü bir nesne oluşturulurken onun sınıfı kullanılır, nesnenin kendisi değil. Yani bir buton oluşturmak için TButton.Create kodu kullanılır. Button1.Create hata oluşturacaktır.
Yanlız Button1 eğer önceden oluşturulmuş ise Nesne üzerinden de constructor çağırabilirsiniz. Yani Button1 öncden oluşmuş ise

Kod: Tümünü seç

Button2 := Button1.Create(Self)
hata vermez. Ama bu durumda yeni bir nesne oluşmaz sadece oluşmuş olan nesnenin referansını başka bir değişkene kopyalamış olursunuz. Yani

Kod: Tümünü seç

Button2 := Button1;
demek ile aynı şey.
Kullanıcı avatarı
macicek
Üye
Mesajlar: 13
Kayıt: 04 Eki 2007 11:44
Konum: K.K.T.C

Mesaj gönderen macicek »

Bir sey daha ogrenmis oldum.Cok tesekkurler Fatih hocam.
Ne yüksek bir zeka ne büyük hayal gücü Her ikisi de insani dahi yapamaz.Deha'nın ruhu sevgidir,sevgidir ve yine sevgidir.
Cevapla