Discussione:
Disattivare pulsante chiusura apertura maschera
(troppo vecchio per rispondere)
Fanciullo
2008-10-20 17:16:09 UTC
Permalink
Salve sono Fanciullo,
access97

Come posso all'apertura di una maschera disattivare il pulsante di chiusura
(x) in alto a destra?

Ho provato nelle proprietà della maschera a scegliere
no nella proprieta pulsante di chiusura.

ma la x rimane e funziona!

grazie
MA
2008-10-21 06:52:04 UTC
Permalink
Post by Fanciullo
Salve sono Fanciullo,
access97
Come posso all'apertura di una maschera disattivare il pulsante di
chiusura (x) in alto a destra?
Ho provato nelle proprietà della maschera a scegliere
no nella proprieta pulsante di chiusura.
ma la x rimane e funziona!
grazie
Guarda su www.sitocomune.com c'è la soluzione
--
--
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
Fanciullo
2008-10-22 06:13:51 UTC
Permalink
Post by Fanciullo
Salve sono Fanciullo,
access97
Come posso all'apertura di una maschera disattivare il pulsante di
chiusura (x) in alto a destra?
Ho provato nelle proprietà della maschera a scegliere
no nella proprieta pulsante di chiusura.
ma la x rimane e funziona!
grazie
Guarda su www.sitocomune.com c'è la soluzione
--
--
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access

Ho trovato nella sezione generale il file AccessBtnControl

dentro c'è una maschera con un pulsante che su click
mi nasconde i bottoni di comando a destra della finesta di access.

Ho visto in codice, ma non so come fare a applicarlo alla maschera aperta

Option Compare Database
Option Explicit

Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam 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

Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long) As Long

Private Const GWL_STYLE = -16
Private Const WS_SYSMENU = &H80000
Private Const WM_NCPAINT = &H85

Public Sub ShowAccessBtn(ShowIt As Boolean)
On Error GoTo Errors
Dim lngOldStyle As Long
Dim lngNewStyle As Long
Dim mhWnd As Long
mhWnd = Application.hWndAccessApp

'Legge il valore attuale
lngOldStyle = GetWindowLong(mhWnd, GWL_STYLE)

If ShowIt Then
lngNewStyle = lngOldStyle Or WS_SYSMENU
Else
lngNewStyle = lngOldStyle And Not WS_SYSMENU
End If

'Questa è l'unica Funzione indispensabile
'che esegue realmente il comando Hide/Show
'dei Pulsanti
Call SetWindowLong(mhWnd, GWL_STYLE, lngNewStyle)

'Manda un Repaint alla Finestra di Access
Call SendMessage(mhWnd, WM_NCPAINT, 1, 0)

ExitHere:
Exit Sub

Errors:
MsgBox Err.Description, vbCritical, "Errore n° = " & Err.Number
Resume ExitHere
End Sub


Grazie Massimiliano, puoi fare qualcosa?
miciomao
2008-10-22 15:09:25 UTC
Permalink
quello che trovi nel click del pulsante lo devi inserire in Form_Load
della maschera
che da quel che ho capito dovrebbe essere così:

Private Sub Form_Load()
ShowAccessBtn(False)
End Sub

mentre la parte di codice che hai postato incollala in un modulo
Fanciullo
2008-10-23 05:43:53 UTC
Permalink
"miciomao" <***@tiscali.it> ha scritto nel messaggio news:87cb0b39-2e85-4747-8073-***@v28g2000hsv.googlegroups.com...
quello che trovi nel click del pulsante lo devi inserire in Form_Load
della maschera
che da quel che ho capito dovrebbe essere così:

Private Sub Form_Load()
ShowAccessBtn(False)
End Sub

mentre la parte di codice che hai postato incollala in un modulo

Grazie, funziona così.
Ho guardato attentamente tutto il codice è ho capito qualcosa...ma non a
fondo.
Fanciullo
2008-10-23 16:21:58 UTC
Permalink
Post by miciomao
quello che trovi nel click del pulsante lo devi inserire in Form_Load
della maschera
Private Sub Form_Load()
ShowAccessBtn(False)
End Sub
mentre la parte di codice che hai postato incollala in un modulo
Grazie, funziona così.
Ho guardato attentamente tutto il codice è ho capito qualcosa...ma non a
fondo.
Nienteeee, mi sono sbagliato. Viene sempre nascosto il pulsante della
finestra di access non
quello della maschera attiva.
Geppo
2008-10-23 19:05:26 UTC
Permalink
Ciao Fanciullo <***@alice.it>, hai scritto:
---cut---
Post by Fanciullo
Nienteeee, mi sono sbagliato. Viene sempre nascosto il pulsante della
finestra di access non
quello della maschera attiva.
Se vuoi disattivare quello della form attiva, tra le proprietà della
maschera nella scheda formato setta no alla voce Pulsante di Chiusura.
--
Ciao
Geppo
Fanciullo
2008-10-24 12:30:37 UTC
Permalink
Post by Geppo
---cut---
Post by Fanciullo
Nienteeee, mi sono sbagliato. Viene sempre nascosto il pulsante della
finestra di access non
quello della maschera attiva.
Se vuoi disattivare quello della form attiva, tra le proprietà della
maschera nella scheda formato setta no alla voce Pulsante di Chiusura.
--
Ciao
Geppo
L'ho fatto Geppo, ma pare che access97 abbia un baco (l'ho letto su un
sito)
e quindi la proprietà non viene attivata: insomma il pulsante rimane ed è
effettivo.

Per questo sto cercando una soluzione via codice
grazie
Alessandro Baraldi
2008-10-24 13:39:16 UTC
Permalink
..
Post by Fanciullo
Post by Geppo
L'ho fatto Geppo, ma pare che access97 abbia un baco (l'ho letto su un
sito)
e quindi la proprietà non viene attivata: insomma il pulsante rimane ed è
effettivo.
Per questo sto cercando una soluzione via codice
grazie
[Casella Menù Controllo]=No
[Pulsante Chiusura]=No
Così a me non si presenta il Button [X].... se imposto solo la 2° è
disabilitato ma presente.

@Alex
Geppo
2008-10-24 13:56:02 UTC
Permalink
Post by Alessandro Baraldi
..
Post by Fanciullo
Post by Geppo
L'ho fatto Geppo, ma pare che access97 abbia un baco (l'ho letto su
un sito)
e quindi la proprietà non viene attivata: insomma il pulsante rimane
ed è effettivo.
Per questo sto cercando una soluzione via codice
grazie
[Casella Menù Controllo]=No
[Pulsante Chiusura]=No
Così a me non si presenta il Button [X].... se imposto solo la 2° è
disabilitato ma presente.
@Alex
Effettivamente Fanciullo ha ragione, la [X] non compare ma se massimizzi la
form ciccia fuori.
--
Ciao
Geppo
Alessandro Baraldi
2008-10-24 14:31:36 UTC
Permalink
Post by Geppo
Post by Alessandro Baraldi
..
Post by Fanciullo
Post by Geppo
L'ho fatto Geppo, ma pare che access97 abbia un baco (l'ho letto su
un sito)
e quindi la proprietà non viene attivata: insomma il pulsante rimane
ed è effettivo.
Per questo sto cercando una soluzione via codice
grazie
[Casella Menù Controllo]=No
[Pulsante Chiusura]=No
Così a me non si presenta il Button [X].... se imposto solo la 2° è
disabilitato ma presente.
@Alex
Effettivamente Fanciullo ha ragione, la [X] non compare ma se massimizzi la
form ciccia fuori.
--
Ciao
Geppo
No se massimizzi la Form quello che vedi è la [X] di Access.

@Alex
Geppo
2008-10-24 16:41:51 UTC
Permalink
Post by Alessandro Baraldi
No se massimizzi la Form quello che vedi è la [X] di Access.
@Alex
Ok, è la [X] di access che fa chiudere la form. Comunque indipendentemente
dalla [X], non si può eliminare ne utilizzando le API tanto meno
disabilitando le proprietà. Dunque il problema della [x] permane.
--
Ciao
Geppo
Alessandro Baraldi
2008-10-25 06:05:24 UTC
Permalink
...
Post by Geppo
Ok, è la [X] di access che fa chiudere la form. Comunque indipendentemente
dalla [X], non si può eliminare ne utilizzando le API tanto meno
disabilitando le proprietà. Dunque il problema della [x] permane.
--
Ciao
Geppo
No stai sbagliando...!

@Alex
Geppo
2008-10-25 08:08:22 UTC
Permalink
Post by Alessandro Baraldi
No stai sbagliando...!
Ok, mi arrendo. :-)
Post by Alessandro Baraldi
@Alex
--
Ciao
Geppo
Geppo
2008-10-25 10:07:36 UTC
Permalink
Ciao Fanciullo <***@alice.it>, hai scritto:
---cut---
Post by Fanciullo
Post by Geppo
L'ho fatto Geppo, ma pare che access97 abbia un baco (l'ho letto su
un sito)
e quindi la proprietà non viene attivata: insomma il pulsante rimane
ed è effettivo.
Per questo sto cercando una soluzione via codice
Se devi gestire la chiusura della form, usa l'evento Unload.
Post by Fanciullo
grazie
--
Ciao
Geppo
Fanciullo
2008-10-28 19:31:32 UTC
Permalink
Post by Geppo
---cut---
Post by Fanciullo
Post by Geppo
L'ho fatto Geppo, ma pare che access97 abbia un baco (l'ho letto su
un sito)
e quindi la proprietà non viene attivata: insomma il pulsante rimane
ed è effettivo.
Per questo sto cercando una soluzione via codice
Se devi gestire la chiusura della form, usa l'evento Unload.
Post by Fanciullo
grazie
--
Ciao
Geppo
non ti dico cosa è successo quando sull'evento unload
ho impostato
cancel = true

si è bloccato tutto, ovvero non chiudevo la maschera con il pulsante X
ma neanche access e qualsiasi altra finestra. Non si esce da access
manco morto. CTRL+ALT+CANC

ciao


ciao
Geppo
2008-10-28 20:28:31 UTC
Permalink
Ciao Fanciullo <***@alice.it>, hai scritto:
----cut---
Post by Fanciullo
Post by Geppo
non ti dico cosa è successo quando sull'evento unload
ho impostato
cancel = true
si è bloccato tutto, ovvero non chiudevo la maschera con il pulsante X
ma neanche access e qualsiasi altra finestra. Non si esce da access
manco morto. CTRL+ALT+CANC
bene, allora funziona :-)

Devi gestire il tutto, ad esempio puoi utilizzare una funzione che controlla
se le textbox sono state debitamente compilate e che restituisca un valore
boolean, nell'evento unload agisci di conseguenza.



private sub form_unload(cancel as integer)

if TuaFunzione = true then
la form si chiude
else
msgbox"Compilare tutte le Textbox"
Cancel = true
end if
end sub




Non so se ho reso l'idea.
Post by Fanciullo
ciao
--
Ciao
Geppo
Fanciullo
2008-10-30 13:19:37 UTC
Permalink
Post by Geppo
----cut---
Post by Fanciullo
Post by Geppo
non ti dico cosa è successo quando sull'evento unload
ho impostato
cancel = true
si è bloccato tutto, ovvero non chiudevo la maschera con il pulsante X
ma neanche access e qualsiasi altra finestra. Non si esce da access
manco morto. CTRL+ALT+CANC
bene, allora funziona :-)
Devi gestire il tutto, ad esempio puoi utilizzare una funzione che
controlla se le textbox sono state debitamente compilate e che restituisca
un valore boolean, nell'evento unload agisci di conseguenza.
private sub form_unload(cancel as integer)
if TuaFunzione = true then
la form si chiude
else
msgbox"Compilare tutte le Textbox"
Cancel = true
end if
end sub
Non so se ho reso l'idea.
Post by Fanciullo
ciao
--
Ciao
Geppo
A parte la gestione del tutto, come dici tu,
forse ti devo spiegare una cosa:

La maschera in questione serve all'avvio a
selezionare un valore che poi sarà usato in tutte
le altre operazioni: il valore è es. 2007/08.

La maschera con un pulsante viene nascosta ma rimane
aperta e sempre operante
Me.Form.Visible = False

Il fatto è che l'utilizzatore a volte distrattamente clicca sulla X,
la maschera viene chiusa e perdo il valore selezionato (2007/08), impedendo
il funzionamento di tutto il database.

Io dovrei impedire che la maschera venga chiusa.

se uso l'evento unload
cancel = true
è vero che non può chiudermi la maschera.
Ma non si chiude nulla altro compreso in database.
Capisci ora che c'è qualcosa di strano?

grazie
miciomao
2008-10-30 14:54:43 UTC
Permalink
scrivi quel valore su una tabella con un campo solo

poi in un modulo te la dichiari tipo

Property Get TuoValoreFisso() As String 'o quello che è
TuoValoreFisso= DLookup("[NomeCampo]", "NomeTabella")
End Property

da qualsiasi parte avrai il valore restituito semplicemente scrivendo
TuoValoreFisso
Geppo
2008-10-30 15:11:58 UTC
Permalink
Ciao Fanciullo <***@alice.it>, hai scritto:
---cut----
Post by Fanciullo
Post by Geppo
A parte la gestione del tutto, come dici tu,
La maschera in questione serve all'avvio a
selezionare un valore che poi sarà usato in tutte
le altre operazioni: il valore è es. 2007/08.
La maschera con un pulsante viene nascosta ma rimane
aperta e sempre operante
Me.Form.Visible = False
Il fatto è che l'utilizzatore a volte distrattamente clicca sulla X,
la maschera viene chiusa e perdo il valore selezionato (2007/08),
impedendo il funzionamento di tutto il database.
Io dovrei impedire che la maschera venga chiusa.
se uso l'evento unload
cancel = true
è vero che non può chiudermi la maschera.
Ma non si chiude nulla altro compreso in database.
Capisci ora che c'è qualcosa di strano?
Dunque hai provato con:


private sub Form_Unload(Cancel as integer)

if me.visible = true then
Cancel = True
end if

end sub
Post by Fanciullo
grazie
Prego
--
Ciao
Geppo
Loading...