Hej Varför har du behov av det? Hej Andreas Varför ska man inte det? Vad är din anledingt till att tvinga användaren? Ok kanske en förenklad variant, Det var detta jag ville att du skulle berätta. När du stänger word och excel frågar ju de om du vill avsluta programmet.<br> Hej Andreas Satt ju inte vid datorn. Så jag chansade på datatypen. DisableX i mdiform
Jag disablar close knappen i en form funkar i en vanlig form men om jag lägger formen i en MDIForm och öppnar den då funkar det inte.
'Form1
Option Explicit
Dim hMenu As Long
Dim nCount As Long
Private Sub DisableX()
hMenu = GetSystemMenu(Me.hWnd, 0)
nCount = GetMenuItemCount(hMenu)
'Get rid of the Close menu and its separator
Call RemoveMenu(hMenu, nCount - 1, MF_REMOVE Or MF_BYPOSITION)
Call RemoveMenu(hMenu, nCount - 2, MF_REMOVE Or MF_BYPOSITION)
'Make sure the screen updates
'our change
DrawMenuBar Me.hWnd
End Sub
Private Sub Form_Load()
DisableX
End Sub
'Modul
Option Explicit
Public Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Public Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Public Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Public Const MF_BYPOSITION = &H400&
Public Const MF_REMOVE = &H1000&
/TobbeSv: DisableX i mdiform
Om du lyckas kommer du bara reta användarna.Sv: DisableX i mdiform
Detta beror på att man inte skall kunna stänga av programmet med X knappen enbart med en egen skapad knapp.
Föe även om jag skriver t,ex i form_Unloade
If txtA1 = empty then
exit sub
else
unload me
end if
så stängs programmet av och detta vill inte jag.
Mvh tobbe Sv: DisableX i mdiform
Försöker du bli nominerad till "Interface Hall of Shame" http://www.iarchitect.com/mshame.htm Sv: DisableX i mdiform
Det är så att användaren plockar fram data som kan gå förlorat om man stänger av programmet utan att först kolla om man har sparat.
Jag sitter och försöker få till något i form_unload som kollar om txtA1 är tom så skall programmet kunna stängas av men hur jag än försöker så får jag inte till detta att funka så min lösning var att rent av Disabla X kappen innan man har sparat alla siffror.
/TobbeSv: DisableX i mdiform
<br>
Mitt förslag är att du gör likadant(KAn finnas stav- eller syntaxfel):
<code>
Private Sub Form_Unload(Cancel As Long)
If Len(txtA1.Text) > 0 Then
Select Case Msgbox("Vill du spara texten?",vbQuestion Or vbYesNoCancel)
Case vbYes
'Här anropar du eller skriver koden som sparar
Case vbCancel
Cancel = True
End Select
End If
End Sub
</code>
* Trycker man Yes i dialogen Sparas dokumentet och programet avslutas sedan.<br>
* Trycker man No i dialogen avslutas programet utan att spara.<br>
* Trycker man Cancel i dialogen så avslutas inte programmet.<br>Sv: DisableX i mdiform
Nu fick jag till annan variant på detta "tack för att du fick mig på andra tankar"
Funkade med din kod efter liten ändring fick felmeddelande på
Form_Unload(Cancel AS Long) ändrade till (Cancel AS Integer) då funkade det.
Tack
/TobbeSv: DisableX i mdiform
Dra att du löste den utan att dissabla X knappen. Du har säker undvike en del arga brev från användare. ;o)