Avatar billede twister10 Nybegynder
20. maj 2001 - 14:08 Der er 19 kommentarer og
1 løsning

Lukning af program

\"To\" spørgsmål :-) egentlig !

Hvordan fjerne man \"lukke\" knappen X\'et oppe i hjørnet på sit program ?

Hvordan laver man så når brugeren trykker på X\'et, at programmet går ind og ser om det må lukke, hvis en variabel er sat til eks. 1 så må det IKKE lukke ned men skal forsat køre, hvordan gøres dette ?
Avatar billede lord_fantomos Nybegynder
20. maj 2001 - 14:23 #1
Spm 1:



Option Explicit
Private Declare Function GetSystemMenu Lib \"user32\" _
    (ByVal hwnd As Long, _
    ByVal bRevert As Long) As Long
Private Declare Function GetMenuItemCount Lib \"user32\" _
    (ByVal hMenu 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 DrawMenuBar Lib \"user32\" _
    (ByVal hwnd As Long) As Long
Private Const MF_BYPOSITION = &H400&
Private Const MF_REMOVE = &H1000&


Private Sub DisableX()
    Dim hMenu As Long
    Dim nCount As Long
    hMenu = GetSystemMenu(Me.hwnd, 0)
    nCount = GetMenuItemCount(hMenu)

    Call RemoveMenu(hMenu, nCount - 1, MF_REMOVE Or MF_BYPOSITION)
    Call RemoveMenu(hMenu, nCount - 2, MF_REMOVE Or MF_BYPOSITION)

    DrawMenuBar Me.hwnd
End Sub


Private Sub Form_Load()
    DisableX
End Sub



2: ??????
Avatar billede twister10 Nybegynder
20. maj 2001 - 14:27 #2
2: Der menes der dette at :

Når der TRYKKET på X (LUK), så køres Private Sub Form_Unload(Cancel As Integer), jo inde i programmet.
Kan man så ikke lave det sådanne at at der i denne funktion spørges på en variabel :

If (lukikke = 1) Then
<LUK IKKE PROGRAMMET ALLIGEVEL KODE>
End If

lukikke = er en variabel der sættes af andre dele i programmet.

Altså, hvis variablen lukikke = 1, så sker der INTET når man trykker på X\'et !

Ang. 1:

SKAL der SÅ meget kode til for at få det til at virke ?
Avatar billede lord_fantomos Nybegynder
20. maj 2001 - 14:30 #3
Spm 1: Ja, det skal der!!! den der kode gør at lukknappen(X) liver grå(ufarvet) og så kan man ikke trykke på den!
Avatar billede twister10 Nybegynder
20. maj 2001 - 14:34 #4
Hmmm....Den skal HELT væk :-)

Kan du ikke løse spørgsmål 1 ???
Avatar billede lord_fantomos Nybegynder
20. maj 2001 - 14:36 #5
Du kan ikke få den helt væk...
Så skal du ihvertfald vælge dit program type i menuen til højre!!!
Avatar billede twister10 Nybegynder
20. maj 2001 - 14:36 #6
Program type ??
Avatar billede lord_fantomos Nybegynder
20. maj 2001 - 14:38 #7
\"none\" kunne du jo tage!:-)
Avatar billede twister10 Nybegynder
20. maj 2001 - 14:40 #8
Sorry, jeg må være lidt tumpet, NONE i PROGRAMTYPE ???
Avatar billede lord_fantomos Nybegynder
20. maj 2001 - 14:40 #9
Ja, det er jo selvfølgelig VIRSUAL BASICS
Avatar billede twister10 Nybegynder
20. maj 2001 - 14:41 #10
OKay, det har du vidst ret vildt styr på :-B
Avatar billede lord_fantomos Nybegynder
20. maj 2001 - 14:43 #11
??? Hvad mener du ???
Avatar billede twister10 Nybegynder
20. maj 2001 - 14:45 #12
Der er ikke noget der hedder none derovre, prøv at forklare det lidt mere så man kan forstå det.
Avatar billede lord_fantomos Nybegynder
20. maj 2001 - 14:47 #13
Du klikker på din dialogbox (dit program) så får du til højre en menu hvor du kan vælge baggrundsfarve etc. Der er en der hedder \"BorderStyle\" der kan du vælge nogle forskellige ting. Vælg \"none\"
Avatar billede twister10 Nybegynder
20. maj 2001 - 14:58 #14
Det er rigtigt, den kender jeg :-)

Men da du skrev :
>Så skal du ihvertfald vælge dit program type i menuen til højre!!!

Giver jo ikke megen mening :-)

Nå men jeg skal jo have løst det andet spm 1: osse ,så jeg venter og ser om der er andre der kan finde ud af at løse dette.
Avatar billede winkill Nybegynder
20. maj 2001 - 15:03 #15
twister >>

1) For at fjerne X\'et skal du sætte formens ControlBox property til false.

2) Easy !!
Private Sub Form_Unload(Cancel As Integer)
If (lukikke = 1) Then
  Cancel = 1
End If
End Sub
Avatar billede twister10 Nybegynder
20. maj 2001 - 15:05 #16
TAAAKK :-)

Jeg VIDSTE der var en nemmere måde :-)

Tak for hjælpen WINKILL !
Avatar billede razersedge Nybegynder
20. maj 2001 - 21:14 #17
du kan også bruge formens form_queryunload alt som kommer deri bliver kørt ved tryk på formens X
Avatar billede twister10 Nybegynder
20. maj 2001 - 21:51 #18
razersedge>> Takker, det skal jeg huske :-)
Avatar billede razersedge Nybegynder
20. maj 2001 - 22:57 #19
point :O))))
Avatar billede blueeye97 Nybegynder
22. maj 2001 - 08:01 #20
winkill :

Du kan nøjes med at skrive Cancel=true ...
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