Skip to main content

AccessTr.neT


Ana Menüden 2.Form Açtığımda Formu Görev çubuğuna Inmiyor. 32 den 64 e geçiş hatası

Oğuz Türkyılmaz
Oğuz Türkyılmaz
7
337

Ana Menüden 2.Form Açtığımda Formu Görev çubuğuna Inmiyor. 32 den 64 e geçiş hatası

Çözüldü #1
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

[Resim: do.php?img=15292]

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

.zip FORUM.zip (Dosya Boyutu: 254,92 KB | İndirme Sayısı: 11)
Access Çekirgesi 
[Resim: img-cray.gif]


Son Düzenleme: 11/04/2023, 13:28, Düzenleyen: Oğuz Türkyılmaz.
Cevapla
#2
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

Cevapla
#3
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
Cevapla
#4
(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.
Access Çekirgesi 
[Resim: img-cray.gif]


Cevapla
#5
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
.rar FORUM_Access_Gizle_hy.rar (Dosya Boyutu: 185,9 KB | İndirme Sayısı: 4)
Cevapla
#6
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ı
[Resim: do.php?img=15293]
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İ
.rar FORUM_Access_Gizle_TaskBar_hy2.rar (Dosya Boyutu: 184,84 KB | İndirme Sayısı: 9)
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da