Forum üzerinde çok sayıda Tedit bileşeni olsun, hepsinin de eventlerinde aynı işlemler yapılıyor olsun.
Örneğin:
Tform1. Edit1.change(sender: Tobject)
begin
if hata=true then edit1.color:=clred
else edit1.color:=green;
edit1.font.height:=-11;
edit1.font.size:=8;
end;
Tform1. Edit2.change(sender: Tobject)
begin
if hata=true then edit2.color:=clred
else edit2.color:=green;
edit2.font.height:=-11;
edit1.font.size:=8;
end;
....
....
Şimdi herbir TEditie bu şekilde kod yazmak yerine bir fonksiyon yada procedure yazayım ona parametre olarak komponentin adını ve komponentde değişmesini istediğim verileri yollayayım bana o komponent üzerinde gerekli işlemleri yapsın.
Bu işlem nasıl yaptırılır?
Sender o eventi oluşturan objedir. Data doğrusu burada o objenin adresidir.
Tform1. Edit1change(sender: Tobject)
begin
if hata then
Tedit(Sender).color:=clred
else
Tedit(Sender).color:=green;
Tedit(Sender).font.height:=-11;
Tedit(Sender).font.size:=8;
end;
şeklinde yazarsan olur...
hepsini aynı olaya bağla,
bi tane tedit nesnesi tanımla,
beginden sonra te:=sender as tedit; de yapacağın işlemleri te üzerinde yap
Sağolun varolun sayenizde kodlarımda müthiş bir sadeleşme oldu.
fonksiyon içinde Tedit(sender) yazınca kafama şimdi de aşağıdaki soru taklıldı.
Peki fonksiyona Tedit, Statik text, Groupbox vs gönderip caption değerini değiştirmesini isteyebilirmiyim.
Object oriented galiba tam olarak bu oluyor değilmi?
Alıntı yapılan: "bunalmis"Sağolun varolun sayenizde kodlarımda müthiş bir sadeleşme oldu.
fonksiyon içinde Tedit(sender) yazınca kafama şimdi de aşağıdaki soru taklıldı.
Peki fonksiyona Tedit, Statik text, Groupbox vs gönderip caption değerini değiştirmesini isteyebilirmiyim.
Object oriented galiba tam olarak bu oluyor değilmi?
İsteyebilirsin şöyle yapacaksın.
if sender is TEdit then
TEdit(sender).Caption := 'blabla'
else if sender is TGroupBox then
TGroupBox(Sender).ItemIndex := 2........
Diyerek istediğini yapabilirsin. Object oriented a gelince bu söylediklerin tam olarak object oriented diyemeyiz. Sadece object oriented programlama sayesinde bunları bu şekilde yapabiliyoruz diyebiliriz.
Object oriented'ın tam tanımını yapabilirmiyiz peki.
Alıntı yapılan: "SpeedyX"hepsini aynı olaya bağla,
bi tane tedit nesnesi tanımla,
beginden sonra te:=sender as tedit; de yapacağın işlemleri te üzerinde yap
Bu tanımlayacağım yardımcı Tedit nesnesi kullanılmayacak ama diğer kullanacaklarıma rehber olacak öylemi?
Tanımlayacağın tedit nesnesi kullanılacak. diğerlerini temsil edecek.
Alıntı yapılan: "bunalmis"Object oriented'ın tam tanımını yapabilirmiyiz peki.
Bence tam olarak bir cümlede anlatamayız. Nesne yönelimli diyerek Türkçe ye çevirebiliriz :)