Access Penceresini Gizleme Hakkında Her Şey
#1
access-sql-11 
Merhaba arkadaşlar..

Bu konuda hazırlanmış videolu bir anlatım olsa da yazıya dökmek ve olayı detaylandırmak sanırım en iyisi.. Bunun devamındaki birkaç mesajda da karşılaşabileceğimiz sorunlar ve de ilave seçenekleri soru cevap şeklinde açıklamaya çalışacağım..

Hazırladığımız uygulamaların bir windows programı gibi açılmasını, görünmesini isteyebiliriz.. Access'e ait hiç bir şey görünmesin, sadece bizim hazırladığımız formlar, raporlar görünsün bencilliği içimizi kasıp kavurabilir.. Dd

İşte bu durumda yapmamız gerekenler..

Öncelikle uygulamamıza bir başlangıç formu, yani ilk açılışta ekrana gelmesini istediğimiz formu belirlememiz gerekiyor.. Bunun için;
  • 2003 sürümünde: Araçlar / Başlangıç / Form-Sayfa Görüntüle
  • 2007 sürümünde: Office Simgesi / Access Seçenekleri / Geçerli Veritabanı / Form Görüntüle
  • 2010 sürümünde: Dosya / Seçenekler / Geçerli Veritabanı / Form Görüntüle

kısmından istediğimiz formu seçelim..

Sonra tüm formlarımızı ve varsa raporlarımızı tek tek tasarım görünümünde açıp Özellikler / Diğer Sekmesinde bulunan Açılan ve Kalıcı kısımlarını Evet yapalım..

[Resim: pencere1.jpg]

Şimdi Access penceresini (ve tüm menülerini) gizlemek için bir prosedüre ihtiyacımız var.. Aşağıdaki kodları yeni modül oluşturup Option Compare Database altına yapıştıralım..:


Visual Basic
  1. Option Explicit
  2.  
  3. Global Const SW_HIDE = 0
  4. Global Const SW_SHOWNORMAL = 1
  5. Global Const SW_SHOWMINIMIZED = 2
  6. Global Const SW_SHOWMAXIMIZED = 3
  7.  
  8. Private Declare Function apiShowWindow Lib "user32" _
  9. Alias "ShowWindow" (ByVal hwnd As Long, _
  10. ByVal nCmdShow As Long) As Long
  11.  
  12. Function fSetAccessWindow(nCmdShow As Long)
  13. Dim loX As Long
  14. Dim loForm As Form
  15. On Error Resume Next
  16. Set loForm = Screen.ActiveForm
  17. If Err <> 0 Then
  18. If nCmdShow = SW_HIDE Then
  19. loX = apiShowWindow(hWndAccessApp, nCmdShow)
  20. Err.Clear
  21. End If
  22. Else
  23.  
  24. loX = apiShowWindow(hWndAccessApp, nCmdShow)
  25.  
  26. End If
  27. fSetAccessWindow = (loX <> 0)
  28. End Function



Devam ediyoruz.. Şimdi açılış formumuzu tasarım görünümünde tekrardan açalım ve Özellikler / Olay / Açıldığında satırına imleci yerleştirim kenarda beliren üç noktalı düğmeye tıklayalım.. Seçeneklerden Kod Oluşturucuyu seçelim ve açılan kod sayfasında bu komutu yapıştıralım..:

[Resim: pencere2.jpg]

Visual Basic
  1. Call fSetAccessWindow(0)



Sonra, varsa raporlarımızı tasarım görünümünde açıyoruz ve yine Özellikler / Olay / Açıldığında kod sayfasına bu komutu yapıştırıyoruz..

Visual Basic
  1. DoCmd.Maximize



Bu komut raporlarımızı tam ekran görünümünde açar.. Diğer türlü raporumuz formun altında ve çok küçük bir şekilde durur..

Şimdi uygulamayı kapatıp tekrardan açalım.. Göreceğiniz gibi Access penceresi artık yok ve sadece formumuz ekranda..:

[Resim: pencere5.jpg]






Eklenti Dosyaları
.rar   trz-pencere-gizle-ornek.rar (Boyut: 37,13 KB / İndirilme: 2.419)



  Alıntı
Bu mesajı beğenenler: tugayguler , x_f1_x
#2
Soru:

"Uygulamayı kapatmak için formun sağ köşesindeki kapat düğmesini kullanıyorum. Uygulama kapandı gibi görünüyor ama tekrar açmak istediğimde açılmıyor. Görev yöneticisinde dosyanın halen açık olduğunu görüyorum.. Ne yapabilirim?"

Cevap:

Unutmayalım, yukarıda yaptığımız işlem Access penceresini gizler. Biz tüm formları veya diğer objeleri kapatmış bile olsak Access'i kapatmış sayılmayız..

Sorunu aşmak için; uygulamayı kapatacağınız formunuzun üstüne bir düğme yerleştirin ve tıklandığında olayına bunu komutu yazın..:

Visual Basic
  1. DoCmd.Quit



Köşedeki kapat düğmesinden çıkışı engellemek içinse formunuzun Özellikler / Biçim / Kapat Düğmesi seçeneğini Hayır olarak değiştirin..

Sabit bir ana form kullanıyorsanız ve çıkışı bu formdan yapacaksanız yukarıdaki komutu biçim detaylarıyla uğraşmadan formunuzun kapandığında olayına da yazabilirsiniz..



  Alıntı
Bu mesajı beğenenler: tugayguler
#3
Soru:

"Her şey iyi güzel de raporları önizlemede menü yok. Raporu nasıl yazdıracağız?"

Cevap:

Pencereyle birlikte menülerimiz de gitti.. Ee Dolayısıyla raporlardaki görünümlerde kullandığımız seçenekler de artık yok..

Bunu aşmanın bir kaç yolu var..

En kolayı, raporu önizleme için bir düğme, yazdırmak için ayrı bir düğme kullanmak.. Araç kutusundan bir düğmeyi forma koyup ekrana gelen denetim sihirbazında bulunan rapor seçeneklerinden önizlemeyi değil de yazdırı seçersek rapor direkt yazdırılır..

Raporu önizlemede sağ tıkla yazdırayım derseniz öncelikle en başta her sürüme göre yerlerini belirttiğim, açılışta ekrana gelecek formu belirlemek için kullandığımız seçenekler sayfasına gidelim.. Araç Çubuğu kısmında, pasif ettiğimiz seçenekler varsa aktifleştirelim..

[Resim: pencere3.jpg]

Sonra aşağıdaki fonksiyonları ilk modülün altına yerleştirelim..:

Visual Basic
  1. Public Function MenuGizle()
  2. 'Menü ve Araç çubuklarınız gizler..
  3.  
  4. Dim i As Integer
  5. For i = 1 To CommandBars.Count
  6. CommandBars(i).Enabled = False
  7. Next i
  8.  
  9. End Function
  10.  
  11. Public Function MenuGoster()
  12. 'Menü ve Araç çubuklarınız gösterir..
  13.  
  14. Dim i As Integer
  15. For i = 1 To CommandBars.Count
  16. CommandBars(i).Enabled = True
  17. Next i
  18.  
  19. End Function



Peşinden raporun açıldığında olayına daha önce yazdığımız DoCmd.Maximize komutunun altına bunu yazalım.:

Visual Basic
  1. MenuGoster



Raporun kapandığında olayına da bunu yazalım ki rapor kapandıktan sonra formlarda sağ tıklama ile açılan kısayol menüsü yeniden pasif olsun..:

Visual Basic
  1. MenuGizle



Bir üstteki komutu başlangıç formumuzun açıldığında olayına yazdığımız Call fSetAccessWindow(0) ifadesinin altına da yazalım..

Artık rapor önizlemesinde sağ tıklarsak yazdırma ve diğer seçeneklere kavuşmuş oluruz..:

[Resim: pencere4.jpg]



  Alıntı
Bu mesajı beğenenler:
#4
Soru:

Office sürümüm 64 bit ve yukarıdaki işlemleri tam olarak yapmama rağmen açılışta hata alıyorum.. Nasıl aşabiliriz?

Cevap:

64 Bit sistemlerde deklarasyon farklı olduğundan bu sistemde kullanacaklar ilgili kısmı bu şekilde değiştirsinler..

Visual Basic
  1. Private Declare PtrSafe Function apiShowWindow Lib "user32" _
  2. Alias "ShowWindow" (ByVal hwnd As Long, _
  3. ByVal nCmdShow As Long) As Long



"Ben uygulamayı hem 32 hem de 64 bit olan farklı makinelerde de kullanıyorum / kullanmak istiyorum" diyenler bu deklarasyonu bu şekilde değiştirsinler..:

Visual Basic
  1. #If VBA7 And Win64 Then
  2. Private Declare PtrSafe Function apiShowWindow Lib "user32" _
  3. Alias "ShowWindow" (ByVal hwnd As Long, _
  4. ByVal nCmdShow As Long) As Long
  5. #Else
  6. Private Declare Function apiShowWindow Lib "user32" _
  7. Alias "ShowWindow" (ByVal hwnd As Long, _
  8. ByVal nCmdShow As Long) As Long
  9. #End If





  Alıntı
Bu mesajı beğenenler:
#5
Soru:

"Açılışta, form ekrana gelene kadar pencere görünüyor. Ne yaparız?"

Cevap:

Yeni bir makro oluşturun ve Kod Çalıştır'ı seçin İşlev Adı kısmına da fSetAccessWindow(0) yazıp makroyu autoexec adıyla kaydedin..

Gerekirse açılışta yaptığımız başlangıç formu ayarını boşaltıp formu bu radaki makroya ekleyeceğimiz Form Aç seçeneği ile de açılışta istediğimiz formu açtırabiliriz..:

[Resim: pencere6.jpg]

Bu yöntem açılışta görünen pencereyi nispeten ilk uyguladığımız yöntemden daha hızlı gizler..


Konuyu ayrıntısıyla anlatmaya çalıştım.. Anlatımda kullandığım dosya ilk mesajıma eklidir.. Shift tuşuna basılı olarak açarsanız normal içeriğe ulaşabilirsiniz.. Konu hakkında daha farklı soru veya sorunlarınız olursa yanıtlamaya çalışırım..

Taruz..



  Alıntı
Bu mesajı beğenenler: AltugD
#6
Elinize sağlık. Çok yararlı bir çalışma olmuş. Teşekkürler....



  Alıntı
Bu mesajı beğenenler:


Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi