Gestione della finestra tramite API ShowWindow

di il
4 risposte

Gestione della finestra tramite API ShowWindow

Buongiorno. Premesso che non ho mai giocherellato con le API e ho sempre tratto inspirazione modificando codici visti qua e la avrei bisogno di consigli sulla fattibilità di una cosa.

Sono riuscito tramite questa semplice funzione

Public Sub Finestra(ByRef Frm As Form, ByVal Caso As String)
Dim hWindow As Long
Dim nResult As Long
Dim nCmdShow As Long
Dim AppAccess As Access.Application
 
 If Not Aperta("Frm_error") Then Evento = "Finestra"
 If GetBolHid("Debugging", "DB") Then
   Forms(Frm.Name).ShortcutMenu = True
   If Frm.Name <> "Frm_lavload" Then Forms(Frm.Name).Moveable = False
   Exit Sub
 Else
   Forms(Frm.Name).ShortcutMenu = False
   Forms(Frm.Name).Moveable = True
 End If
 hWindow = Application.hWndAccessApp
 Select Case Caso
   Case "NASCONDI"
     nCmdShow = NASCONDI
   Case "VEDI"
     nCmdShow = VEDI
 End Select
 nResult = ShowWindow(ByVal hWindow, ByVal nCmdShow)
 Call ShowWindow(Frm.hwnd, VEDI)
End Sub

a fare in modo di dare al mio database un aspetto meno “Work in progress” eliminando i menù a tendina con il tasto destro e “soprattutto” rendendo invisibile la parte dell'interfaccia di Access che proprio non digerisco.

Così facendo però ho perso la possibilità di avere nella taskbar l'icona relativa al database (La classica icona di Access in esecuzione per intenderci).

E' possibile quindi chiedo nascondere l'interfaccia ma tenere l'icona comunque visibile? Ho provato le varie costanti ma il risultato non l'ho ottenuto.

Chiedo come ho detto fattibilità o idea alternativa.

4 Risposte

  • Re: Gestione della finestra tramite API ShowWindow

    Se la rendi invisibile (HIDE) allora è ovvio che non appare neanche nella taskbar.

    Il caso che vuoi tu sarebbe MINIMIZED e puoi usare il valore 7 per il parametro. E' ovvio che dalla taskbar con un click puoi rivedere l'interfaccia.

    Per quanto riguarda il codice, ti chiedo soltanto perchè non scrivi le ultime due righe in maniera simile

    ShowWindow hWindow, nCmdShow
    ShowWindow Frm.hwnd, VEDI
  • Re: Gestione della finestra tramite API ShowWindow

    Grazie Oregon… 

    In effetti dato che sto facendo prove grafiche mi dedicavo alla pulizia del codice una volta ottenuto il risultato desiderato.

    Come immaginavo (ed ha senso) se io metto la finestra in Hide perdo ogni possibilità di aver l'icona nella taskbar. Speravo ci fosse la possibilità di avere entrambe le soluzioni. Ovvero interfaccia nascosta ma icona visibile…

    E' un problema di poco conto avendo creato una frm “menù” che replica i pulsanti di chiusura ecc ecc.

    Però se ho 30 finestre aperte sovrapposte (tra chrome, vlc, word, ecc ecc) essendo il DB in modalità HIDE dovrò tutte minimizzarle per tornare ad interagire con lui in quanto finirà “dietro” al resto…

    Poco male.

    Grazie della pronta risposta

  • Re: Gestione della finestra tramite API ShowWindow

    Ricordo che in Access l'unica Form definibile MDI è quella di Access, le altre sono Child, quindi non serve usare le API… per le Form hanno la proprietà VISIBLE, ed ovviamente se non metto le Form POPUP, quindi slego l'oggetto FORM dalla MDI, l'azione di HIDE/SHOW della MDI inibisce l'indipendenza delle Form.

    Insomma per il codice scritto sulla Form non serve usare le API. 

  • Re: Gestione della finestra tramite API ShowWindow

    Ciao,

    puoi ottenere quello che cerchi in maniera più semplice senza scomodare le API.

    • nelle opzioni di Access > Current Database : 

                   deseleziona le opzioni:

                           - Display Navigation Pane + Allow full menus + Allow Default SM

                         

    • Nell'evento Open del primo form che si apre, inserisci:
    'Nascondere Ribbon
         DoCmd.ShowToolbar "Ribbon", acToolbarNo
    
    ' Status bar
        DoCmd.ShowToolbar "Status Bar", acToolbarNo
    
    ' barra laterale
        DoCmd.NavigateTo "acNavigationCategoryObjectType"
        DoCmd.Minimize
Devi accedere o registrarti per scrivere nel forum
4 risposte