Fonksiyon içinden komponentlere mudahale

Başlatan bunalmis, 18 Haziran 2005, 18:47:01

z

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?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

birumher

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...
Birkan.Herguner

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

z

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?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

birumher

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.
Birkan.Herguner

z

Object oriented'ın tam tanımını yapabilirmiyiz peki.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

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?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

SpeedyX

Tanımlayacağın tedit nesnesi kullanılacak. diğerlerini temsil edecek.

birumher

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 :)
Birkan.Herguner