Newsgroup: it.comp.appl.access
Titolo: Come si fa (tramite vba) ad impedire all' utente di chiudere una  maschera ?

Non riesco ad individuare la proprieta' da impostare
tramite vba, perche' i nomi delle proprieta' sono in
inglese e quelli che vado a modificare a mano sono
in italiano, quindi non riesco a metterli in relazione tra
loro !
Cmq, ho letto sulle istruzioni che una maschera si
puo' chiudere anche tramite ALT + F4 , ma vorrei
impedirlo (con gli utenti non si sa mai ...).
Spero in un vostro aiuto.

 Spero in un vostro aiuto.
-- 
Ciao
Geppo 


Si, grazie, ma io volevo togliere all' utente la possibilita' di
chiudere
la maschera anche cliccando col mouse sulla crocetta in alto a destra
(hai presente, sta in ogni maschera)

 ha scritto nel messaggio 
news:eaa8652a-0c38-4c41...@y4g2000yqy.googlegroups.com...
cut
Si, grazie, ma io volevo togliere all' utente la possibilita' di
chiudere
la maschera anche cliccando col mouse sulla crocetta in alto a destra
(hai presente, sta in ogni maschera)
Dalle proprietą della maschera:
Pulsante chiusura = NO
Ciao, Carlo 

 Pulsante chiusura = NO
Ehm ... Si ...  :D
Intendevo : usando VBA.

 (hai presente, sta in ogni maschera)
ti ho suggerito questa faq l'hai letta?
 
www.donkarl.com/it?FAQ1.12
-- 
Ciao
Geppo 

 Intendevo : usando VBA.
Propriet� CloseButton...
--
sv
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Propriet CloseButton...
Macche' ...
ne questa :
Set frm1.CloseButton = False
ne quest' altra :
frm1.CloseButton = False
Danno errore ... BOH.
Tu come hai fatto ????

 ti ho suggerito questa faq l'hai letta?
Certo !
Ma non e' quello che serve a me.
Almeno, cosi' mi pare.
Cmq grazie !

 Cmq grazie !
prego
-- 
Ciao
Geppo

 Macche' ...


Mai utilizzata questa propriet�. Del resto la puoi solo impostare in
visualizzazione struttura.
Devi per forza di cose utilizzare le API.
Vedi:
http://vbnet.mvps.org/index.html?code/forms/killclose.htm
Le dichiarazioni le metti in un modulo, poi sull'evento "LOAD" della
maschera inserisci:
Call MenuRemoveClose(Me)


 Call MenuRemoveClose(Me)
Diavolo, non ci sarei mai arrivato da solo.
Grazie mille !

 ti pare male......
Ehm ... E' probabile, umilmente parlando.
Il fatto e' che devo impedire all' utente non di chiudere
una maschera qualsiasi, ma il suo clone.
Quindi se metto cancel = true dentro l' evento chiusura,
poi l' utente non puo' chiudere nemmeno la maschera
originale. Invece quello deve poterlo fare.
Dico bene ?


ma questa � un'altra cosa, non � quello che hai chiesto inizialmente.
-- 
Ciao
Geppo 

 ma questa un'altra cosa, non quello che hai chiesto inizialmente.
Si, e' vero. Dovevo essere piu' preciso.
Scusami.


Vabbe' per questa volta ti lascio vivere. :-D
-- 
Ciao
Geppo 

Scusate l'intromissione, ho cercato di utilizzare anch'io questa
soluzione.
Ho messo in un modulo tutto il codice preso dal link.
Nella mia maschera su evento caricamento oltre a
BildArray
DoCmd.Movesize 0,0,10000,8000
docmd.gotocontrol "IdTipoDocumento"
ho messo
Call MenuRemoveClose(Me)
ma quando chiudo la maschera dalla X, mi esce il seguente messaggio:
errore di compilazione: sub o function non definita
e mi evidenzia
Call MenuRemoveClose
Cosa ho sbagliato?
Grazie.
Giuseppe.

Giuseppe ha scritto:

Una funzione per poterla chiamare deve essere definita o nel codice o 
nelle librerie collegate. MenuRemoveClose e' evidentemente una "user 
function" e non ti e' stato fornito il codice relativo e/o non c'e' 
accenno a cosa debba fare.
--
ac

 Call MenuRemoveClose(Me)
e ho visto che radicale.002 o radicale 004 ha risposto che funziona.
Scusami Alessandro, ma da solo non saprei cosa modificare. Potresti
darmi una mano.
Grazie.
Giuseppe.

Giuseppe ha scritto:

Ho guardato il link.
Ho l'impressione che sia stata rinominata la sub "Private Sub Form_Load()"
in "Public Function MenuRemoveClose(f as frm)"
e quindi a quel punto puo' essere chiamata dall open del tuo form ("Call 
MenuRemoveClose(Me)").
Questo per poter generalizzare la chiamata.
Non capisco per quale motivo debba essere passata la form attuale (me) 
poiche' non mi sembra sia necessaria ai fini della esecuzione.
--
ac


prova in questo modo copiando il listato sottostante in un modulo standard:
Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Copyright ©1996-2009 VBnet, Randy Birch, All Rights Reserved.
' Some pages may also contain other copyrights by the author.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Distribution: You can freely use this code in your own
'               applications, but you may not reproduce
'               or publish this code on any web site,
'               online service, or distribute as source
'               on any media without express permission.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Const MF_BYPOSITION = &H400
Private Const MF_REMOVE = &H1000
Private Declare Function DrawMenuBar Lib "user32" _
      (ByVal hwnd As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" _
      (ByVal hMenu As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" _
      (ByVal hwnd As Long, _
       ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
      (ByVal hMenu As Long, _
       ByVal nPosition As Long, _
       ByVal wFlags As Long) As Long
Function MenuRemoveClose(f As Form)
   Dim hMenu As Long
   Dim menuItemCount As Long
  'Obtain the handle to the form's system menu
   hMenu = GetSystemMenu(f.hwnd, 0)
   If hMenu Then
     'Obtain the number of items in the menu
      menuItemCount = GetMenuItemCount(hMenu)
     'Remove the system menu Close menu item.
     'The menu item is 0-based, so the last
     'item on the menu is menuItemCount - 1
      Call RemoveMenu(hMenu, menuItemCount - 1, _
                      MF_REMOVE Or MF_BYPOSITION)
     'Remove the system menu separator line
      Call RemoveMenu(hMenu, menuItemCount - 3, _
                      MF_REMOVE Or MF_BYPOSITION)
     'Force a redraw of the menu. This
     'refreshes the titlebar, dimming the X
      Call DrawMenuBar(f.hwnd)
   End If
End Function
adesso riprova.
-- 
Ciao
Geppo 


Ciao Geppo, grazie.
Ho sostituito il codice presente nel mio "Modulo 1" con quello da te
postato.
Nella mia form su evento "su caricamento" ho:
BildArray
DoCmd.MoveSize 0, 500, 10000, 8000
Me.IdTipoDocumento.BackColor = 65535
 Call MenuRemoveClose(Me)
Apro la maschera e quando tento di chiudere la form cliccando sulla X
me la chiude tranquillamente.
Ciao.

 Ciao
-- 
Ciao
Geppo


Si Geppo so che dalle proprietà posso decidere se visualizzare o meno
il pulsante di chiusura.
Vorrei utilizzare per tutte le form del mio db un'impostazione unica.
Il discorso è che in alcune maschere ci sono dei controlli associati
che assumono dei valori automatici.
Se l'utente non riempe tutti i controlli obbligatori (che non ho
definito) ed esce tramite il click sulla X il record viene cmq
salvato.
Sul pulsante "uscita" invece ho impostato la richiesta se, prima di
uscire, salvare o eliminare il record, e la chiusura della form
mediante Alt+F4 l'ho disabilitata.
Ciao.
Giuseppe.

 Giuseppe.
-- 
Ciao
Geppo 

Risolto Geppo.
Ho scaricato un esempio da 
http://www.access-programmers.co.uk/forums/showthread.php?t=98554
La X resta ma non chiude la form, per chiuderla con il mio pulsante
cambio il valore della casella di controllo cbTest da 0 a -1.
Ovviamente su apertura riporto il valore a 0.
Ancora grazie.
Giuseppe.

 Giuseppe.
-- 
Ciao
Geppo