Avatar billede tt2002 Nybegynder
31. marts 2006 - 22:24 Der er 5 kommentarer og
1 løsning

form uden luk-knap

Kan man i VB / Excel lave en form, der ikke har nogen luk-knap og derfor kun kan lukkes ned ved f.eks. en button med en "luk-ned"-kode på?
Avatar billede sjh Nybegynder
31. marts 2006 - 23:36 #1
http://word.mvps.org/faqs/userforms/DisableClose.htm

Option Explicit

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
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private hWnd As Long

Private Sub UserForm_Initialize()
  Dim hMenu          As Long
  Dim menuItemCount  As Long

  'Obtain the window handle to the userform
  hWnd = FindWindow(vbNullString, Me.Caption)
  'Obtain the handle to the form's system menu
  hMenu = GetSystemMenu(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 - 2, MF_REMOVE Or MF_BYPOSITION)
    'Force a redraw of the menu. This
    'refreshes the titlebar, dimming the X
    Call DrawMenuBar(hWnd)
  End If
End Sub

Private Sub CommandButton1_Click()
  Unload Me
End Sub
Avatar billede blueeye97 Nybegynder
01. april 2006 - 10:17 #2
Du kan bare sætte controlbox=false, så er der slet ingen lukkeknap.

Alternativt kan du deaktivere lukknappen med denne lille kode

Private Sub Form_Unload(Cancel As Integer)
Cancel = True
End Sub
Avatar billede tt2002 Nybegynder
01. april 2006 - 13:14 #3
blueeye97 -
hvad mener du med controlbox = false ?
mener du form1.controlbox = false, for den virker nemlig ikke...
Avatar billede sjh Nybegynder
01. april 2006 - 13:28 #4
tt2002 > Ja det virker ikke i (VB / Excel) kun i Visual Basic 5/6
Avatar billede blueeye97 Nybegynder
01. april 2006 - 19:05 #5
Ahhh... jeg så ikke at det var excel...

Jeg mente properties for formen men det er nok ikke set samme..

Lyt til sjh i stedet for.. :o))
Avatar billede tt2002 Nybegynder
05. april 2006 - 20:22 #6
det virker perfekt, sjh... tusind tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester