Nascondere la Finestra del DB - maschera POPUP

di il
8 risposte

Nascondere la Finestra del DB - maschera POPUP

Ciao Ragazzi,
ho creato un DB piccolo piccolo da eseguire, se possibile, ad ogni avvio di Windows da salvare quindi poi in formato COMPILATO.
Quello che voglio fare è però di aprire solo la maschera in formato POPUP (e questo l'ho già impostato) senza però che mi si apra la finestra grigia del DB dietro.

ho letto un pochino su internet ma ci sono codici vecchi che mal si adattano a quanto voglio fare io.
Mi sapete aiutare?
Grazie

8 Risposte

  • Re: Nascondere la Finestra del DB - maschera POPUP

    Se vuoi ci dai i LINK per capire cosa hai trovato, noi capiamo se è il codice giusto si fa solo in un modo, e se lo è, sicuramente quella tua nota "mal si adattano..." deve essere spiegata meglio di come hai fatto... perchè la voglia di rendere HIDDEN la MDI di Access è tipica di chi non ha proprio la percezione di cosa sta facendo... e nasconde molte più rogne dei vantaggi...!

    Access è studiato per funzionare conlogica MDI e MDI-CHILD.
  • Re: Nascondere la Finestra del DB - maschera POPUP

    Ciao,
    questo da mettere in un modulo :
    Option Compare Database
    Const SW_HIDE = 0
    Const SW_NORMAL = 1
    
    Private Declare Function ShowWindow Lib "user32" _
    (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    mentre questo da mettere ONLOAD nella maschera:
    Private Sub Form_Open(Cancel As Integer)
    Dim hWindow As Long
    Dim nResult As Long
    Dim nCmdShow As Long
    hWindow = Application.hWndAccessApp
    nCmdShow = SW_HIDE
    nResult = ShowWindow(ByVal hWindow, ByVal nCmdShow)
    Call ShowWindow(Me.hwnd, SW_NORMAL)
    End Sub
    
    Access mi da qualche problema nel modulo e soprattutto nella parte
    Private Declare Function ShowWindow Lib "user32" _
    (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Ditemi ...
  • Re: Nascondere la Finestra del DB - maschera POPUP

    Innanzitutto le dichiarazioni API che hai fatto sono vecchie, devi adattarle ale nuove sintassi...
    
    #If VBA7 Then
        Private Declare PtrSafe Function ShowWindow Lib "USER32" (ByVal hwnd As LongPtr, ByVal nCmdShow As Long) As Boolean
    #Else
        Private Declare Function ShowWindow Lib "USER32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Boolean
    #End If
    Attenzione nel tuo caso anche alla variabile che riceve l'Handle... [Dim hWindow As Long] che devi rendere condizionata e dichiararla nei 2 modi... oppure vai a scrivere direttamente nella chiamata
    
    nResult = ShowWindow(Application.hWndAccessApp, nCmdShow)[code]
    
    Poi non potrà mai funzionare, il ByVal è solo nella dichiarazione dei Parametri delle Funzioni/Sub non nelle loro chiamate, poi quello che hai scritto in quanto la nascondi poi la ripristini...!!!
    [code]
    nResult = ShowWindow(hWindow, nCmdShow)
    Call ShowWindow(Me.hwnd, SW_NORMAL)
    La 2° chiamata non la devi usare...

    Insomma... credo quel codice sia molto fuori dal tuo normale.
  • Re: Nascondere la Finestra del DB - maschera POPUP

    Non ho capito nulla
  • Re: Nascondere la Finestra del DB - maschera POPUP

    alessandro.vitale ha scritto:


    Non ho capito nulla
    Appunto... allora dovrebbe essere chiaro cosa devi fare.
  • Re: Nascondere la Finestra del DB - maschera POPUP

    Simpatico….

    Allora ho provato questo in modulo:
    Option Compare Database
    Option Explicit
    
    Declare Ptrsafe Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
    
    Public Const api_constSW_HIDE = 0
    Public Const api_constSW_NORMAL = 1
    Public Const api_constSW_MINIMIZE = 2
    Public Const api_constSW_MAXIMIZE = 3
      
    
    Public Sub ShowAccessWindow(objAccess As Object, FShow As Boolean, Optional lShowW As Long = api_constSW_NORMAL)
            '  Show the Access main window using ShowWindow
            '  with the api_constSW_NORMAL constant
            If Not objAccess Is Nothing Then
                    If FShow Then
                            Call apiShowWindow(objAccess.hWndAccessApp, _
                              lShowW)
                    Else
                            Call apiShowWindow(objAccess.hWndAccessApp, _
                              api_constSW_HIDE)
                    End If
    End If
    End Sub
    
    mentre in Onload:
    ShowAccessWindow Application, False, api_constSW_HIDE 
    aprendo però il db non visualizzo nulla… ACCESS sembra aperto perché mi si crea il file di LOCK ma non visuazlizzo nulla
  • Re: Nascondere la Finestra del DB - maschera POPUP

    Non confondere la simpatia con il sarcasmo... e prova a capire meglio cosa sia nelle tue possibilità in modo più realistico.

    Se non metti una form Popup come maschera di default all'apertura, oppure una macro AutoExec che apre una Form sempre Popup, avendo nascosto la MDI ci spieghi cosa dovrebbe essere visualizzato secondo te...?
  • Re: Nascondere la Finestra del DB - maschera POPUP

    Probabilmente puo servire una soluzione maccheronica che ho già utilizzato...
    in realta si tratta di minimizzare la maschera di access al centroschermo in chiusura del db... quando aprirai e autoexec ti lancia la tua popup come mashera HOME di spostamento... la finestrella di access resterà nascosta dietro di essa perchè l'ultima volta hai chiuso access(applicazione) con quella impostazione... è una soluzione poco professionale ma in compenso aiuta gli occhi di chi crede di aver realizzato un applicativo...

    fai solo attenzione alle proprietà delle varie maschere report che saranno ovviamente tutte popup...
Devi accedere o registrarti per scrivere nel forum
8 risposte