Merhaba Hayırlı Ramazanlar. Hazırladığım dosyada Forumlardan aldığım destekle sona yaklaştım. Sorunum uygulumada birden fazla form açık çalışırken komple programı ekrandan sistem tepsisine yada görev çubuğuna indiremiyorum. Sadece AnaMenu Formum açıksa aşağıya iniyor ve masaüstümde işlem yapabiliyorum. Forumdan bulduğum konu ile ilgili kod da 32 bit için yazılmış 64 bite çevirmeye çalıştığımda hata veriyor. Bu düzenleme hakkında yardımlarınızı rica ederim.
Aşağıda modülde yazılı kodları dosyama adapte edemedim. Bu kodların işimi göreceğini umut ediyorum.
kullanıcı : ADMIN
parola : 171717
Kod:
Option Compare Database
Option Explicit
Global Const SW_HIDE = 0
Global Const SW_SHOWNORMAL = 1
Global Const tr = 2
Global Const SW_SHOWMAXIMIZED = 3
Private Declare PtrSafe Function apiShowWindow Lib "user32" _
Alias "ShowWindow" (ByVal hwnd As Long, _
ByVal nCmdShow As LongPtr) As Long
'Private Declare Function apiShowWindow Lib "user32" _
'Alias "ShowWindow" (ByVal hwnd As Long, _
'ByVal nCmdShow As Long) As Long
Function gizle(nCmdShow As Long)
Dim loX As Long
Dim loForm As Form
On Error Resume Next
Set loForm = Screen.ActiveForm
If Err <> 0 Then
If nCmdShow = SW_HIDE Then
MsgBox "deneme" _
& "a form is on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)
Err.Clear
End If
Else
If nCmdShow = tr And loForm.Modal = True Then
MsgBox "deneme" _
& (loForm.Caption + " ") _
& "form on screen"
ElseIf nCmdShow = SW_HIDE And loForm.PopUp <> True Then
MsgBox "deneme" _
& (loForm.Caption + " ") _
& "form on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)
End If
End If
gizle = (loX <> 0)
End Function
Option Compare Database
Option Explicit
Global Const SW_HIDE = 0
Global Const SW_SHOWNORMAL = 1
Global Const tr = 3
Global Const SW_SHOWMAXIMIZED = 3
#If Win64 Then
Private Declare PtrSafe Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
#Else
Private Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
#End If
Function gizle(nCmdShow As Long)
Dim loX As Long
Dim loForm As Form
On Error Resume Next
Set loForm = Screen.ActiveForm
If Err <> 0 Then
If nCmdShow = SW_HIDE Then
MsgBox "deneme" & "a form is on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)
Err.Clear
End If
Else
If nCmdShow = tr And loForm.Modal = True Then
MsgBox "deneme" & (loForm.Caption + " ") & "form on screen"
ElseIf nCmdShow = SW_HIDE And loForm.PopUp <> True Then
MsgBox "deneme" & (loForm.Caption + " ") & "form on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)
End If
End If
gizle = (loX <> 0)
End Function
yanlış yorumlamış olabilirim ama kodun çalışabilmesi için birkaç şey gerekiyor
1 - tüm formların kalıcı özelliği hayır yapılmalı
2 -
login penceresinin yüklenme olayına
gizle(tr) kodu eklenmeli
3 -
login penceresi kapatılmayıp görünmez yapılmalı
4 - normal gizleme kodu
fAccessWindow fonksiyonu ve
Autoexec makrosu silinmeli
Not: ama bu yöntem de aslında
Access penceresini gizlemiyor
(12/04/2023, 01:39)berduş yazdı: yanlış yorumlamış olabilirim ama kodun çalışabilmesi için birkaç şey gerekiyor
1 - tüm formların kalıcı özelliği hayır yapılmalı
2 - login penceresinin yüklenme olayına gizle(tr) kodu eklenmeli
3 - login penceresi kapatılmayıp görünmez yapılmalı
4 - normal gizleme kodu fAccessWindow fonksiyonu ve Autoexec makrosu silinmeli
Not: ama bu yöntem de aslında Access penceresini gizlemiyor
Berduş hocam pencereyi gizlemek 1.önceliğim. Onu gizleyemeyeceksem zaten bu isteğimden vazgeçmek zorunda kalırım. Akşam deneyeceğim @
feraz hocam la sizin çözümlerinizi. Çok teşekkür ederim.
Oğuz bey sayın @
ozanakkaya 'nın
https://accesstr.net/konu-access-pencere...zleme.html konusunda önerdiği 3. yöntemi kullandım dilerim işinize yarar
sadece
F_Login formunda hem
Açılan hem de
kalıcı özellikleri
evet diğer formların sadece açılan özellikleri evet kalıcı özellikleri hayır
ayrıca
login ekranı aslında kapatılmıyor sadece görünmez yapılıyor
login ekranı yüklenirken kod çalışıyor
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
Bu dosyada bazı değişiklikler yaptım normalde formları küçültünce taskbara gitmek yerine aşağıdaki gibi taskbar üzerinde küçülüyorlardı
yeni dosyada taskbara küçülüyor
Not tüm formlara uygulamadım diğer formların yüklenme olayına eklemeniz gerek
Form_Load() olayında
ShowInTaskbar Me.hWnd, True kodu eklenmeli
TaskBar için eklenen kodlar
#If Win64 Then
'ShowInTaskbar________________________________________
Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
'ShowInTaskbar________________________________________
#Else
'ShowInTaskbar________________________________________
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
'ShowInTaskbar________________________________________
#End If
'ShowInTaskbar________________________________________
Private Const WS_EX_APPWINDOW = &H40000
Private Const GWL_STYLE = -20
Public Function ShowInTaskbar(Lhwnd As Long, Show As Boolean)
Dim lStyle As Long
lStyle = GetWindowLong(Lhwnd, GWL_STYLE)
If Show Then
lStyle = lStyle Or WS_EX_APPWINDOW
Else
lStyle = lStyle And Not WS_EX_APPWINDOW
End If
Call SetWindowLong(Lhwnd, GWL_STYLE, lStyle)
End Function
'ShowInTaskbar________________________________________BİTTİ