Avatar billede Kim Neesgaard Seniormester
20. juni 2004 - 22:24 Der er 13 kommentarer og
1 løsning

Event ved hide form

Jeg har i min applikation en form, der kan lukkes med Esc, en knap eller med krydset øverst tilhøjre. Findes der en event, der kaldes, når brugeren trykker på krydset? Jeg kender unload og queryunload, men mener ikke at disse kan bruges ved hide form. Der er ifølge hjælpen en Sub object_hide(), men sætter jeg den til Sub Form_hide() får jeg den ikke aktiveret.
Avatar billede Slettet bruger
20. juni 2004 - 22:29 #1
Når man lukker på krydset lukker man jo formen så jeg mener du kan bruge Form_Unload.
Avatar billede Slettet bruger
20. juni 2004 - 22:30 #2
Prøv at sætte en msgbox "luk" ind i unload og se om den ikke fremkommer.
Avatar billede Slettet bruger
20. juni 2004 - 22:31 #3
Jeg har lige testet det, den kommer når du lukker på krydset.
Avatar billede martin_moth Mester
21. juni 2004 - 08:17 #4
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  If MsgBox("Vil du afslutte?", vbYesNo, "Afslut") = vbNo Then Cancel = True
End Sub
Avatar billede Kim Neesgaard Seniormester
21. juni 2004 - 19:29 #5
Nu har jeg afprøvet på form1 (hovedmenuen) og form2 (åbnes fra form1). Når jeg lukker form2 på krydset fanges dette ganske rigtigt af både Sub Form_QueryUnload og Sub Form_Unload, men problemet er, at når form1 herefter lukkes på krydset fanges den igen og det ønsker jeg ikke. Kan man ikke på en eller anden måde 'slå den ihjel', når form2 er lukket med krydset?
Avatar billede Slettet bruger
21. juni 2004 - 19:35 #6
Et gæt(har ikke lige adgang til VB):
Prøv at sætte
set form2 = Nothing
ind efter du har gjort det du skal gøre på Form2's enten unload eller queryunload.
Avatar billede Kim Neesgaard Seniormester
21. juni 2004 - 22:02 #7
Den kan stadig huske det, når krydset i form1 klikkes.
Avatar billede Slettet bruger
22. juni 2004 - 08:51 #8
Har du noget i Form1s unload eller queryunload?
Avatar billede martin_moth Mester
22. juni 2004 - 21:22 #9
Hmm, du må teste på hvilken form trykket sendes fra. Men det er jo ikke en parameter i _QueryUnLoad... Du kunne jo fx. tælle hvor mange forms der er i sving, og er der KUN en form, er det jo form1, og så sætter du bare Cancel = True
Avatar billede Kim Neesgaard Seniormester
22. juni 2004 - 22:34 #10
Hvordan tæller man antallet af forms?
Avatar billede martin_moth Mester
23. juni 2004 - 08:07 #11
Et gæt:
Application.forms.count - eller noget i den stil
Avatar billede Slettet bruger
23. juni 2004 - 16:26 #12
Forms.Count giver dig antallet af forms.
Avatar billede Kim Neesgaard Seniormester
23. juni 2004 - 21:33 #13
Nemlig!

Denne sat på form2 virker:

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  If Forms.Count = 1 Then
    Cancel = True
  Else
    Cancel = False
  End If
  Form2.Hide
End Sub

Tak!
Avatar billede martin_moth Mester
23. juni 2004 - 23:43 #14
Du behøver ikke
  Form2.Hide
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