Tek bir eylem, örneğin nesnede bir denetimden başka bir denetime geçme eylemi belirli bir sırada gerçekleşen birkaç farklı olayı tetikleyebilir. Olayların ne zaman ve hangi sırayla gerçekleştiğini bilmek önemlidir, çünkü bu makrolarınızın ve olay yordamlarınızın nasıl ve ne zaman çalıştırılacağını etkileyebilir. Örneğin, belirli bir sırada çalıştırılması gereken iki olay yordamı varsa, bunların ilişkilendirildiği olayların aynı sırada gerçekleştiğinden emin olmak istersiniz.
Bu makalede
Formlardaki denetimler için olayların sırası
Odağı bir denetime taşıdığınızda ve denetimdeki verileri değiştirdiğinizde ve güncelleştirdiğinizde, formlardaki denetimler için olaylar gerçekleştir.
Not: Microsoft Office Access, Visual Basic Düzenleyicisi'nde olay adlarını özellik sayfasında ve Makro Oluşturucusu'nda gösterdiğinden biraz farklı gösterir. Örneğin, formun özellik sayfasında ve Makro Oluşturucusu'nda Odaklanıldığında adlı olay, Visual Basic Düzenleyicisi'nde GotFocus olarak adlandırılır. Bu makaledeki örneklerde olay adları için Visual Basic for Applications (VBA) biçimi kullanılmıştır.
Odağı bir denetime taşıma
Odağı formdaki bir denetime taşıdığınızda (örneğin, bir veya birden çok etkin denetim içeren bir formu açarak veya odağı aynı formda başka bir denetime taşıyarak), Enter ve GotFocus olayları şu sırayla gerçekleşir:
GotFocus girin
Formu açtığınızda, form açma işlemiyle ilişkilendirilmiş olaylardan (Open, Activate ve Current gibi) sonra Enter ve GotFocus olayları şu şekilde gerçekleşir:
Enter (denetim) GotFocus (denetim) Geçerli (form) Etkinleştir(form) aç (form)
Odak formdaki bir denetimden ayrıldığında (örneğin, bir veya birden çok etkin denetim içeren bir formu kapattığınızda veya aynı form üzerinde başka bir denetime geçtiğinizde, Exit ve LostFocus olayları şu sırayla gerçekleşir:
LostFocus dan çık
Formu kapattığınızda, form kapatma işlemiyle ilişkilendirilmiş olaylardan (Unload, Deactivate ve Close gibi) sonra Exit ve LostFocus olayları şu şekilde gerçekleşir:
LostFocus(denetim) çık (denetim) Kaldır (form) Devre Dışı Bırak (form) Kapat (form)
Denetimdeki verileri değiştirme ve güncelleştirme
Formdaki bir denetime veri girdiğinizde veya verilerini değiştirdiğinizde ve ardından odağı başka bir denetime taşıdığınızda, BeforeUpdate ve AfterUpdate olayları gerçekleşir:
BeforeUpdate Afte rUpdate
BeforeUpdate ve AfterUpdate olaylarından sonra, değeri değişen denetim için Exit ve LostFocus olayları gerçekleşir:
BeforeUpdate AfterUpdate LostFocus Çık
Metin kutusundaki veya birleşik giriş kutusunun metin kutusu bölümündeki metni değiştirdiğinizde, Change olayı gerçekleşir. Denetimin içeri her değiştiğinde, ama siz odağı farklı bir denetim veya kayda taşımadan önce (dolayısıyla, BeforeUpdate ve AfterUpdate olayları gerçekleşmeden önce) bu olay gerçekleşir. Metin kutusunda veya birleşik giriş kutusunun metin kutusu bölümünde bastığınız her tuş için aşağıdaki olay sırası gerçekleşir:
KeyDown KeyPress Kirli Değiştirme KeyUp
Birleşik giriş kutusuna birleşik giriş kutusu listesinde bulunmayan bir değer girdiğinizde ve ardından odağı başka bir denetime veya kayda taşımaya çalıştığınızda, NotInList olayı gerçekleşir. NotInList olayı, klavye olaylarından ve birleşik giriş kutusu için Change olaylarından sonra ancak diğer herhangi bir denetim veya formun olaylarından önce gerçekleşir. Birleşik giriş kutusunun LimitToList özelliği Yes olarak ayarlandıysa, formun Error olayı, NotInList olayından hemen sonra gerçekleşir:
KeyDown KeyPress Kirli Değiştirme KeyUp NotInList 0 Hatası
Formlardaki kayıtlar için olayların sırası
Formlardaki kayıtların olayları, odağı başka bir kayda taşıdığınızda, kayıttaki verileri güncelleştirdiğinizde, var olan kaydı veya kayıtları sildiğinizde ya da yeni kayıt oluşturduğunuzda gerçekleşir.
Odağı kayıtlara taşıma ve kayıtlardaki verileri güncelleştirme
Odağı formda var olan bir kayda taşıdığınızda, kayıtta verileri girdiğinizde veya değiştirdiğinizde ve ardından odağı başka bir kayda taşıdığınızda, form için aşağıdaki olay dizisi gerçekleşir:
Geçerli (form) BeforeUpdate (form) AfterUpdate (form) Current (form)
Verileri değiştirilmiş olan kayıttan çıktığınızda ama bir sonraki kayda girmeden önce, odağın bulunduğu denetim için Exit ve LostFocus olayları gerçekleşir. Bu olaylar, form için BeforeUpdate ve AfterUpdate olaylarından sonra aşağıdaki gibi gerçekleşir:
BeforeUpdate (form) AfterUpdate (form) Exit (denetim) LostFocus (denetim) Current (form)
Siz odağı formdaki denetimler arasında taşırken, her denetim için olaylar gerçekleşir. Örneğin, aşağıdakileri yaptığınızda şu olay dizisi gerçekleşir:
-
Formu açma ve denetimdeki verileri değiştirme:
Geçerli (form) Enter (denetim) GotFocus (denetim) BeforeUpdate (denetim) AfterUpdate (denetim)
-
Odağı başka bir denetime taşıma:
Exit (control1) LostFocus (control1) Enter (control2) GotFocus (control2)
-
Odağı başka bir kayda taşıma:
BeforeUpdate (form) AfterUpdate (form) Çıkış (denetim2) LostFocus (control2) Current (form)
Kayıtları silme
Kaydı sildiğinizde form için aşağıdaki olaylar gerçekleşir ve Microsoft Office Access silme işlemini onaylamanızı isteyen bir iletişim kutusu görüntüler:
BeforeDelConfirm AfterDelConfirm Silme
Delete olayını iptal ederseniz, BeforeDelConfirm ve AfterDelConfirm olayları gerçekleşmez ve iletişim kutusu görüntülenmez.
Yeni kayıt oluşturma
Odağı form üzerinde yeni (boş) bir kayda taşıdığınızda ve ardından bir denetime veri yazarak yeni kayıt oluşturduğunuzda, aşağıdaki olay dizisi gerçekleşir:
Geçerli (form) Enter (denetim) GotFocus (denetim) BeforeInsert (form) AfterInsert (form)
BeforeInsert (form) olayı, denetime yazmaya başladığınızda tetikler. AfterInsert (form) olayı, kayıttan ayrıldıktan sonra tetikler.
BeforeInsert olayından sonra ve AfterInsert olayından önce, formdaki denetimler için ve yeni kayıt için BeforeUpdate ve AfterUpdate olayları gerçekleşir.
Formlar ve alt formlar için olayların sırası
Bir formu açtığınızda veya kapattığınızda, formlar arasında geçiş yaptığınızda ya da formdaki veya alt formdaki verilerle çalıştığınızda, formlar için olaylar gerçekleşir.
Formu açma ve kapatma
Formu açtığınızda, form için aşağıdaki olay dizisi gerçekleştir:
Geçerli Etkinleştirme Yeniden Boyutlandırmak Yüklemesini Açma
Form üzerinde hiç etkin denetim yoksa, Activate olayından sonra ama Current olayından önce form için GotFocus olayı gerçekleşir.
Formu kapattığınızda, form için aşağıdaki olay dizisi gerçekleştir:
Kapatma Kaldırma Devre Dışı Bırakma
Form üzerinde hiç etkin denetim yoksa, Unload olayından sonra ama Deactivate olayından önce form için LostFocus olayı gerçekleşir.
Formlar arasında geçiş yapma
İki form arasında geçiş yaptığınızda, ilk form için Deactivate olayı ve ikinci form için de Activate olayı gerçekleşir:
Devre Dışı Bırak (form1) Etkinleştir (form2)
Formdan Access'teki başka bir nesne sekmesine geçtiğinizde de form için Deactivate olayı gerçekleşir. Öte yandan, bir iletişim kutusuna, PopUp özelliği Yes olarak ayarlanmış bir forma veya başka bir programın penceresine geçtiğinizde, Deactivate olayı gerçekleşmez.
Not: Odağı zaten açık olan bir forma taşırsanız, odağı bu forma taşırken OpenForm eylemini kullanmış olsanız bile, Open olayı gerçekleşmez.
Formdaki verilerle çalışma
Formdaki kayıtlar arasında geçiş yaptığınızda ve verileri değiştirdiğinizde, form ve denetim olayları gerçekleşir. Örneğin, formu ilk kez açtığınızda aşağıdaki olay dizisi gerçekleştir:
Aç (form) Yükle (form) Yeniden Boyutlandırma (form) Etkin (form) Geçerli (form) Enter (denetim)0 GotFocus (denetim)
Benzer şekilde, formu kapattığınızda aşağıdaki olay dizisi gerçekleştir:
Çıkış (denetim) LostFocus (denetim) Kaldır (form) Devre Dışı Bırak (form) Kapat (form)
Denetimdeki verileri değiştirdiyseniz, denetim için Exit olayından önce hem denetim hem de form için BeforeUpdate ve AfterUpdate olayları gerçekleşir.
Alt formlarla çalışma
Alt form içeren bir formu açtığınızda, ana formdan önce alt form ve onun kayıtları yüklenir. Dolayısıyla, alt form ve onun denetimleri için olaylar (Open, Current, Enter ve GotFocus gibi), form için olan olaylardan önce gerçekleşir. Öte yandan, alt formlar için Activate olayı gerçekleşmez. Bu nedenle, ana formun açılması yalnızca ana form için Activate olayını tetikler.
Benzer biçimde, alt form içeren bir formu kapattığınızda, alt form ve onun kayıtlarının yüklemesi, ana formdan sonra kaldırılır. Alt formlar için Deactivate olayı gerçekleşmez. Bu nedenle, ana formun kapatılması yalnızca ana form için Deactivate olayını tetikler. Denetimler, form ve alt form için olaylar şu sırada gerçekleşir:
-
Alt formun denetimleri için olaylar (Exit ve LostFocus gibi)
-
Formun denetimleri için olaylar (alt form denetimi de içinde)
-
Form için olaylar (Deactivate ve Close gibi)
-
Alt form için olaylar
Not: Alt form için olaylar ana form kapatıldıktan sonra gerçekleştiğinden, bir alt form olayından ana formu kapatma işlemini iptal etme gibi bazı olaylar gerçekleşmez. Bu tür doğrulama testlerini ana formdaki bir olaya taşımanız gerekir.
Tuş vuruşları ve fare tıklamaları için olayların sırası
Odak formda veya denetimdeyken tuşlara bastığınızda veya tuş vuruşları gönderdiğinizde klavye olayları gerçekleşir. Fare işaretçisi bir form, bölüm veya denetimdeyken fare düğmelerine tıkladığınızda, formlar, form bölümleri ve denetimler için fare olayları gerçekleşir. Fare işaretçisini form, bölüm veya denetim üzerinde taşıdığınızda da fare olayları gerçekleşir.
Klavye olayları
Odak formdaki bir denetimin üzerindeyken bir tuşa basıp bırakırsanız (veya tuş vuruşu göndermek için SendKeys eylemi veya deyim kullanırsanız), aşağıdaki olay dizisi gerçekleşir:
KeyDown KeyPress KeyUp
ANSI karakter kümesinde bir tuşa basıp bıraktığınızda veya bir tuş vuruşu gönderdiğinizde, KeyDown, KeyPress ve KeyUp olaylarının tümü gerçekleşir. Bir ANSI tuşuna basıp basılı tutarsanız, siz tuşu bırakana kadar birbiri ardından KeyDown ve KeyPress olayları tekrar tekrar gerçekleşir (KeyDown, KeyPress, KeyDown, KeyPress, vb.); sonra da KeyUp olayı gerçekleşir.
ANSI dışında bir tuşa basıp bırakırsanız, KeyDown ve KeyUp olayları gerçekleşir. ANSI dışında bir tuşa basıp basılı tutarsanız, siz tuşu bırakana kadar tekrar tekrar KeyDown olayı gerçekleşir ve sonra da KeyUp olayı gerçekleşir.
Bir tuşa basılması denetim için başka bir olayı tetikliyorsa, söz konusu olay KeyPress olayından sonra ama KeyUp olayından önce gerçekleşir. Örneğin, bir tuş vuruşu metin kutusundaki metni değiştiriyorsa, yani Change olayını tetikliyorsa, aşağıdaki olay dizisi gerçekleşir:
KeyDown KeyPress KeyUp Değiştir
Tuş vuruşu odağın bir denetimden başka bir denetime geçmesine neden oluyorsa, ilk denetim için KeyDown olayı oluşurken ikinci denetim için KeyPress ve KeyUp olayları gerçekleşir. Örneğin, denetimdeki verileri değiştirir ve ardından SEKME tuşuna basarak bir sonraki denetime geçerseniz, aşağıdaki olay dizisi gerçekleşir:
-
İlk denetim:
KeyDown BeforeUpdate AfterUpdate Exit LostFocus
-
İkinci denetim:
KeyPress KeyUp GotFocus girin
Fare olayları
Fare işaretçisi bir denetim veya formun üzerindeyken fare düğmesine tıklayıp bıraktığınızda, denetim için aşağıdaki olay dizisi gerçekleşir:
MouseDown MouseUp Tıklayın
Odak denetimdeyse ve odağı başka bir denetime taşımak için bu ikinci denetime tıklarsanız, aşağıdaki olay dizisi gerçekleşir:
-
İlk denetim:
LostFocus dan çık
-
İkinci denetim:
GotFocus MouseDown MouseUp girin Tıklayın
Başka bir kayda geçer ve sonra bir denetime tıklarsanız, denetim için Enter olayından önce form için Current olayı da gerçekleşir.
Denetime çift tıklamak, hem Click hem de DblClick olaylarının gerçekleşmesine neden olur. Örneğin komut düğmesi dışında bir denetime çift tıkladığınızda, denetim için aşağıdaki olay dizisi gerçekleşir:
MouseD kendi MouseUp 'a tıklayın MouseUp DblClick
Komut düğmesine çift tıkladığınızda, önceki olay dizisi gerçekleşir ve bunu ikinci bir Click olayı izler.
Fare işaretçisini form, bölüm veya denetim üzerinde hareket ettirdiğinizde, form, bölüm veya denetim için MouseMove olayı gerçekleşir. Bu olay, diğer fare olaylarından bağımsızdır.
Raporlar ve rapor bölümleri için olayların sırası
Raporu yazdırmak veya önizlemek için açtığınızda ya da raporu kapattığınızda, raporlar ve rapor bölümleri için olaylar gerçekleşir.
Raporlar için olaylar
Yazdırmak veya önizlemek üzere bir raporu açtığınızda ve daha sonra raporu kapattığınızda veya Access'te başka bir nesne sekmesine geçtiğinizde, rapor için aşağıdaki olay dizisi gerçekleşir:
Açma Etkinleştir Kapat Devre Dışı Bırak
İki açık rapor arasında geçiş yaptığınızda, ilk rapor için Deactivate olayı ve ikinci rapor için de Activate olayı gerçekleşir:
Devre Dışı Bırak (rapor1) Etkinleştir (rapor2)
Rapordan Access'teki başka bir nesne sekmesine geçtiğinizde de rapor için Deactivate olayı gerçekleşir. Öte yandan, bir iletişim kutusuna, PopUp özelliği Yes olarak ayarlanmış bir forma veya başka bir programın penceresine geçtiğinizde, Deactivate olayı gerçekleşmez.
Sorguyu temel alan bir raporu açtığınızda, Access temel sorguyu çalıştırmadan önce rapor için Open olayını tetikler. Sonuç olarak, Open olayını yanıtlayan bir makro veya olay yordamı kullanarak raporun ölçütlerini ayarlayabilirsiniz. Örneğin makro veya olay yordamı, rapor ölçütlerini girebileceğiniz özel bir iletişim kutusu açabilir.
Rapor bölümleri için olaylar
Raporu yazdırdığınızda veya önizlediğinizde, rapor için Open ve Activate olayları gerçekleştikten sonra ama Close veya Deactivate olayları gerçekleşmeden önce, rapor bölümleri için Format ve Print olayları gerçekleşir:
Etkinleştir (rapor) Etkinleştir (rapor) Biçimi (rapor bölümü) Yazdır (rapor bölümü) Kapat (rapor) Devre Dışı Bırak (rapor)
Güvenlik Raporların kullanıcı filtrelemesini etkinleştirmek için Rapor Görünümü'nü kullanabilirsiniz. Ancak Baskı Önizleme'nin aksine, herhangi bir bölümdeki Biçim ve Yazdırma olayları Rapor Görünümü'nde gerçekleşmez. Bu durum, bu olaylar içindeki denetimlerde (etiket resim yazıları, görüntüleme durumu, koşullu biçimlendirme, denetimlerin yeniden boyutlandırılması vb.) görüntülenen VBA işlev sonuçları ve kullanıcı tanımlı yordamlar için de geçerlidir. Bu nedenle, bu olaydaki kodu gizli verileri biçimlendirmek, gizlemek veya yazdırmak için kullanmayın; bu veriler açığa çıkabilir. AllowReportView özelliğini Hayır olarak ayarlayarak verileri önceden filtrelemenizi veya Rapor Önizlemesini devre dışı bırakmanızı öneririz.
Buna ek olarak, biçimlendirme sırasında veya sonrasında ama Print olayından önce aşağıdaki olaylar gerçekleşir:
-
Rapor biçimlendirmesi sırasında Access önceki bir bölüme döndüğünde Retreat olayı gerçekleşir.
-
Rapor tarafından görüntülenen kayıt yoksa NoData olayı gerçekleşir.
-
Biçimlendirme sonrasında ama yazdırma öncesinde Page olayı gerçekleşir. Yazdırılan raporun görünümünü özelleştirmek için bu olayı kullanabilirsiniz.