![]() |
|
| |||||||
|
| WebMasTer SiTeSi |
| | Seçenekler |
|
#1
| |||
| | |||
Event 'lerin Oluşturulması Ve YakalanmasıWindows mesaj tabanlı çalışan bir işletim sistemidir. Win32 terminolojisin 'de sistem tarafından tespit edilen girdi bilgilerine mesaj denilir. Her girdi bilgisi yani mesaj belirli bir nedenden dolayı oluşur. Örneğin klavyede bir tuşa basılması ya da mouse ile çift tıklama gibi. Windows, herhangi bir nedenden oluşan bir mesajı, bir veri yapısı biçiminde ifade ederek mesaj kuyruğuna yerleştirir. Programcı ise, geleneksel olarak bu mesaj 'ları yakalama teması üzerine hareket ederek windows programlarını oluşturur. Ancak sistem mesajlarının oluşturulması, mesaj kuyruğuna eklenmesi yada kuyruktan alınması gibi rutin 'ler windows 'un aşağı seviyeli çalışması ile ilgili bilgiler gerektirir. Visual Basic gibi görsel dillerde ise mesaj kavramı, event kavramı ile karşılanarak, yukarıda bahsedilen mesaj işleme rutin 'lerinin programcının algısından uzaklaştırılması sağlanır. Bu sayede, aslında programlama tekniği açısından oldukça karmaşık olan windows programlaması kolay hale getirilir. Ancak bu durum; windows 'un aşağı seviyeli çalışması hakkında bilgi sahibi olmadan, görsel dilleri kullanarak program yazan kişilerde, arka planda gerçekleşen bir takım olayların sanki kendi kendine oluyormuş izlenimine kapılmalarına neden olmaktadır. Visual Basic .NET 'te, programcı yazdığı sınıflar içerisinde çeşitli event 'ler tanımlayıp, bu event 'leri; client kod içerisinde kullanabilir (handle eder ). Visual Basic .NET'te; event tanımlamanın genel biçimi; [Skop Belirten Anahtar Sözcük] Event Event_İsmi ( ) şeklinde yapılır. Örneğin; Public Event Load( ) gibi. Event oluşturma (Raise etme ); RaiseEvent deyimi ile yapılır. Kullanımı : RaiseEvent Event_İsmi ( ) şeklinde yapılır. Örneğin; RaiseEvent Load( ) gibi. Bu şekilde oluşturulan bir event 'in, client tarafta bir prosedüre bağlanarak çalıştırılması ve bu sayede o event oluştuğunda yapılması istenen işlerin gerçekleştirilmesi sağlanır. (Buton 'a click yapıldığında bir takım işlemlerin gerçekleştirilmesi gibi ...) Bunun için yaratılan event 'in mesaj döngüsüne eklenmesi gerekmektedir. VB .NET 'te mesaj döngüsüne bir mesajın eklenmesi işlemi AddHandler deyimi ile yapılmaktadır. AddHandler deyimi; bir event ile event handler olarak anılan bir prosedürün ilişkilendirilmesini sağlar. Kullanımı : AddHandler Event_İsmi, AddressOf Prosedür_İsmi Örneğin; AddHandler obj.AlarmCalacak, AddressOf BeforeAlarm gibi. Böylece sözkonusu event oluştuğu zaman ilişkilendirildiği prosedür'ün çalışması sağlanacaktır. Örnek : CalarSaat sınıfında tanımlanmış olan AlarmCalacak() ve AlarmCaldi() isimli event 'ler, AlarmCal() isimli fonksiyonda raise edilmiştir. Daha sonra bu event 'ler client tarafta AddHandler deyimleri kullanılarak BeforeAlarm() ve AfterAlarm() isimli prosedürlerle ilişkilendirilmiştir. Kodun çalışmasını adım adım incelersek; CalarSaat sınıfı türünden tanımlanan obj isimli nesne kullanılarak AlarmCal() isimli fonksiyon çağrıldığında sırası ile önce AlarmCalacak() event 'i oluşmakta ve kendisi ile ilişkilendirilen BeforeAlarm() prosedürü otomatik olarak çalıştırılmaktadır. (Bu aşamada konsol ekranına "Alarm Çalacak" mesajı basılır) Daha sonra programın akışı tekrar AlarmCal() fonksiyonuna gelerek alarm çalınmakta ve konsol ekranına "Beep !" mesajı basılmaktadır. Bu aşamada akış "RaiseEvent AlarmCaldi() " kod satırına gelerek AlarmCaldi() event 'inin oluşması sağlanır. AlarmCaldi() event 'i oluştuğu anda ise kendisi ile ilişkilendirilen AfterAlarm() prosedürü otomatik olarak çalıştırılmakta ve konsol ekranına "Alarm Çaldı" mesajı basılmaktadır. Not : Konunun anlaşılması bakımından örneği F8 ile adım adım çalıştırarak incelemenizi tavsiye ederim ! Public Class CalarSaat 'Event tanımlamaları Public Event AlarmCalacak() Public Event AlarmCaldi() 'Fonksiyon Tanımlamaları Public Function AlarmCal() RaiseEvent AlarmCalacak() Beep() Console.WriteLine("Beep !") RaiseEvent AlarmCaldi() End Function End Class -------------------------------------------------------------------------------- Module Module1 'AlarmCalacak() event'i oluşunca yapılacak işlemlerin tanımlandığı 'prosedür Public Sub BeforeAlarm() Console.WriteLine("Alarm Çalacak") End Sub 'AlarmCaldi() event'i oluşunca yapılacak işlemlerin tanımlandığı 'prosedür Public Sub AfterAlarm() Console.WriteLine("Alarm Çaldı") End Sub Sub Main() Dim obj As CalarSaat = New CalarSaat() 'Break Point AddHandler obj.AlarmCalacak, AddressOf BeforeAlarm AddHandler obj.AlarmCaldi, AddressOf AfterAlarm obj.AlarmCal() End Sub End Module RemoveHandler Deyimi RemoveHandler deyimi; AddHandler deyiminin aksine davranarak bir event ile event handler olarak anılan bir prosedürün arasındaki ilişkiyi yok eder. Kullanımı : RemoveHandler Event_İsmi, AddressOf Prosedür_İsmi Örneğin; RemoveHandler obj.AlarmCalacak, AddressOf BeforeAlarm gibi. |
![]() |
| Arama Etiketleri: event, lerin, olusturulmasi, yakalanmasi |
| Seçenekler | |
| |
Benzer Konular | ||||
| Konu | Konu Açanlar | Forum | Cevaplar | Güncel Mesajlar |
| VB .Net 'te ActiveX Component 'lerin Kullanımı | W-S | ASP | 0 | Dün 09:46 |
| 2000 lerin Dünya Özet Çocuk Raporu | capi | İnsan Hakları | 2 | 28-11-2008 05:03 |
| Sitene Sorunsuz İnen Mp3 lerin Listesini Koy | becerikliforum | Html kodları | 0 | 08-07-2008 08:52 |
| E-posta Dağıtım Listesinin Oluşturulması | kadınca | Network-internet | 0 | 04-11-2007 12:51 |
| Zarar görmüş partition tablolarının yeniden oluşturulması | kadınca | Harici Bileşenler | 0 | 03-11-2007 11:29 |
![]() |