Access Penceresini Gizleme

07/11/2008, 00:13

ozanakkaya

1. YOL

Access Penceresini gizlemek için uygulamanızda yeni bir modül oluşturun ve içerisine aşağıdaki kodları yazın.

Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
Dim dwReturn As Long

Const SW_HIDE = 0
Const SW_SHOWNORMAL = 1
Const SW_SHOWMINIMIZED = 2
Const SW_SHOWMAXIMIZED = 3

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long
Public Function fAccessWindow(Optional Procedure As String, Optional SwitchStatus As Boolean, Optional StatusCheck As Boolean) As Boolean
If Procedure = "Hide" Then
dwReturn = ShowWindow(Application.hWndAccessApp, SW_HIDE)
End If
If Procedure = "Show" Then
dwReturn = ShowWindow(Application.hWndAccessApp, SW_SHOWMAXIMIZED)
End If
If Procedure = "Minimize" Then
dwReturn = ShowWindow(Application.hWndAccessApp, SW_SHOWMINIMIZED)
End If
If SwitchStatus = True Then
If IsWindowVisible(hWndAccessApp) = 1 Then
dwReturn = ShowWindow(Application.hWndAccessApp, SW_HIDE)
Else
dwReturn = ShowWindow(Application.hWndAccessApp, SW_SHOWMAXIMIZED)
End If
End If
If StatusCheck = True Then
If IsWindowVisible(hWndAccessApp) = 0 Then
fAccessWindow = False
End If
If IsWindowVisible(hWndAccessApp) = 1 Then
fAccessWindow = True
End If
End If
End Function

Başlangıçta ilk açılan formun "Yüklendiğinde" olayına

Kod:
Call fAccessWindow("Hide", False, False)
yazın

veya

yeni bir makro oluşturun. makronun "Eylem" alanına "Kod Çalıştır", "Eylem Değişkenleri" bölümündeki "İşlev Adı" alanına
Alıntı:
fAccessWindow ("Hide", False, False)
yazın ve "Autoexec" adıyla kaydedin.


Uygulamanızdaki tüm formların ve raporların özelliklerinden "Açılan" ve "Kalıcı" alanlarındaki değerleri "Evet" olarak belirleyin.



Uygulamanızdaki tüm raporların Açıldığında olayına aşağıdaki kodu yazın
Kod:
Private Sub Report_Open(Cancel As Integer)
DoCmd.Maximize
End Sub


2. YOL

Access Penceresini gizlemek için uygulamanızda yeni bir modül oluşturun ve içerisine aşağıdaki kodları yazın.

Global Const SW_HIDE = 0
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWMAXIMIZED = 3

Private Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Function fSetAccessWindow(nCmdShow As Long)
Dim loX As Long
Dim loForm As Form
On Error Resume Next
Set loForm = Screen.ActiveForm

If Err <> 0 Then
loX = apiShowWindow(hWndAccessApp, nCmdShow)
Err.Clear
End If

If nCmdShow = SW_SHOWMINIMIZED And loForm.Modal = True Then
MsgBox "Cannot minimize Access with " _
& (loForm.Caption + " ") _
& "form on screen"
ElseIf nCmdShow = SW_HIDE And loForm.PopUp <> True Then
MsgBox "Cannot hide Access with " _
& (loForm.Caption + " ") _
& "form on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)
End If
fSetAccessWindow = (loX <> 0)
End Function



Başlangıçta ilk açılan formun "Yüklendiğinde" olayına

Kod:
fSetAccessWindow (SW_HIDE)
yazın

Uygulamanızdaki tüm formların ve raporların özelliklerindeki "Açılan" ve "Kalıcı" alanlarındaki değerleri "Evet" olarak belirleyin.


Uygulamanızdaki tüm raporların Açıldığında olayına aşağıdaki kodu yazın

Private Sub Report_Open(Cancel As Integer)
DoCmd.Maximize
End Sub




3. YOL (Tavsiye Edilen)

Access Penceresini gizlemek için uygulamanızda yeni bir modül oluşturun ve içerisine aşağıdaki kodları yazın.

Option Compare Database
Option Explicit

Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, _
   ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Public Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, _
   ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, _
   ByVal Y3 As Long) As Long
Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, _
   ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, _
   ByVal nCombineMode As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, _
   ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Public Const RGN_AND = 1
Public Const RGN_COPY = 5
Public Const RGN_DIFF = 4
Public Const RGN_OR = 2
Public Const RGN_XOR = 3

Public Function degistir()
Dim rgn1 As Long, rgn2 As Long
 
  rgn1 = CreateRectRgn(0, 0, 1, 1)
  CombineRgn rgn1, rgn1, rgn2, RGN_OR
  SetWindowRgn Application.hWndAccessApp, rgn1, True
End Function
Public Function degistir2()
Dim rgn1 As Long, rgn2 As Long
 
  rgn1 = CreateRectRgn(0, 0, 1500, 1500)
  CombineRgn rgn1, rgn1, rgn2, RGN_OR
  SetWindowRgn Application.hWndAccessApp, rgn1, True
End Function

Başlangıçta ilk açılan formun "Yüklendiğinde" veya "açıldığında" olayına

Kod:
Modul1.degistir
yazın (Modul1, modülün adı)



Uygulamanızdaki tüm formların ve raporların özelliklerinden "Açılan" ve "Kalıcı" alanlarındaki değerleri "Evet" olarak belirleyin.



Uygulamanızdaki tüm raporların Açıldığında olayına aşağıdaki kodu yazın
Private Sub Report_Open(Cancel As Integer)
DoCmd.Maximize
End Sub

3. yolda belirtilen işlemler uygulandığında pencere gizlenmiyorsa ekteki yol3örnek.rar isimli örneği inceleyiniz.

Access 2007 ile hazır yapılmış örnek için lütfen 85 numaralı mesaj daki örnek dosyayı inceleyiniz.
07/11/2008, 12:33

askaskeri

paylaşım için teşekkürler
08/11/2008, 00:44

accessAE

paylaşımınız için teşekkürler.
08/11/2008, 13:44

triopas

yazınızdakilerin hepsini uyguladım. sorunsuz olarak çalıştı. ancak formu kapatıp yeniden açmaya çalıştığımda açılmıyor.. ancak bilgisayarı kapatıp açarsam yeniden açabiliyorum bunun nedeni ne olabilir düzeltmek için ne yapmalıyım bu konuda yardımcı olursanız çok sevinirim
08/11/2008, 13:50

ozanakkaya

Bu uygulamayı kullanacaksan her zaman bir form açık kalmalı, programı tamamen kapatacağında butona "docmd.quit" kodu yerine "application.quit" kodunu kullanmalısın.
08/11/2008, 18:13

triopas

programcılık konusunda çok acemiyim. kısaca birşey bilmiyorum diyelim. hazırladığım form'u kapatmak için herhangi bir buton eklemediğim için normal pencere kapatmadaki sağ üstteki çarpıyı kullanıyorum bu durum için komutun nasıl olması gerek? birde accessi gizleyince düzenleme moduna geçemiyorum. yardımcı olursanız çok sevinirim