Avatar billede mihl Nybegynder
24. januar 2006 - 15:06 Der er 8 kommentarer og
1 løsning

Åbent program?

Det er svært at sætte en overskrift på, men jeg vil gerne checke om hvorvidt mit program allerede er åbent, og hvis det er skal man ikke kunne starte endnu en instans af programmet.
Avatar billede sjh Nybegynder
24. januar 2006 - 16:00 #1
Private Sub Form_Load()
  If App.PrevInstance = True Then
    Unload Me
  End If
End Sub
Avatar billede joern Nybegynder
24. januar 2006 - 16:42 #2
Hvis brugeren ligeskal orienteres:

If App.PrevInstance = True Then
    X = MsgBox("Regnskabs-programmet kører allerede.  Ses det ikke i proceslinien, er det muligvis ikke korrekt afsluttet.  Tryk CTRL + ALT + DEL og tjek om det står i 'tasklisten'.  Hvis det gør det, så afslut det dér.  Ellers kommer du til at genstarte din maskine.  Undersøg evt. om din genvej refererer til din lokale PC og ikke til et netværksdrev.  Regnskabs-programmet skal være installeret på alle klienter!", 16, "Medd. fra start af JkfSoft Privat Regnskab.")
    End
    Exit Sub
  End If
Avatar billede sjh Nybegynder
24. januar 2006 - 16:48 #3
joern :
tasklisten = (På dansk hedder det : Jobliste eller Joblisten)

:D
Avatar billede joern Nybegynder
24. januar 2006 - 17:06 #4
sjh>>  Så kan jeg spørge, - selv om det ikke er min tråd - hvad er bedst til at sikre at et program afsluttes:  End eller Unload me?  Risikerer man ikke med 'undload me' at kun den aktulle form fjernes.  Der kunne være flere forme indlæst, som ikke er synlige.  Det bruger jeg i hvert fald selv.
Avatar billede sjh Nybegynder
24. januar 2006 - 17:22 #5
1) man bør ikke bruge Me.Hide til at "LUKKE" et vindue..
2) End kan man godt bruge, men har man fx. noget api som skal afsluttes under Form_Unload() så bliver det ikke afsluttet.
3) Unload Me så bliver vinduet afsluttet + det som står under Form_Unload()

et lille trick..

' Lukker alle Forms
Private Sub UnloadAll()
Dim objForm As Form
  For Each objForm In Forms
    Unload objForm
  Next
End Sub
Avatar billede joern Nybegynder
24. januar 2006 - 17:38 #6
sjh>>

Jeg bruger ikke ME.Hide.  Når mine programmer - med måske 5 forme - startes, er det kun åbningsformen der ses.  Når andre forme skal benyttes, kalder jeg dem med form2.visible = true og når de skal skjules bruger jeg form2.visible = false.

Min er erfaring - under win2000 - er, at der normalt ikke er problemer med at programmer afsluttes helt med 'End'.  De afsluttes også når det lukkes på krydset i kontrolboksen, selv om der ingen kode står til udførelse under 'Unload'.

Det er dog forekommet, at programmer kan 'hænge', men jeg har ikke kunnet se, hvorfor det er sket.  Kan et par linier sikre at det aldrig sker, så skal de selvfølgelig tilføjes.  Tak.  Håber at også spørgeren kan få glæde af denne præcisering.
Avatar billede sjh Nybegynder
24. januar 2006 - 20:56 #7
joern:

Ja nu er det jo ikke fordi der er den store forskel på (.Show/.Hide og .Visible) .Visible kan bare fortælle dig om vinduet er (.Show eller .Hide)

fx.
Form2.Show
MsgBox Form2.Visible ' den vil vise True
Form2.Hide
MsgBox Form2.Visible ' den vil vise False

"End" kan man da godt bruge. ligeledes kan man da også bare åbne bildøren og hoppe ud af bilen og vente på at den køre ind i et hus eller andet for at stoppe..

Et lille eksempel mere.. ofte bruger man en control på sin form.. og den skulle også afsluttes korrekt..
Lad og teste det.

' ------------- UserControl -------------
Option Explicit

Private Sub UserControl_Terminate()
  MsgBox "Terminate"
End Sub
' ------------- UserControl -------------

' ------------- Form1 -------------
Option Explicit

Private Sub Command1_Click()
  End
End Sub
' ------------- Form1 -------------

prøv så at sette din UserControl på Form1 og "Make Project1.exe".. Først prøver vi at afslutte ved at trykke på krydset, nu vil der komme en besked "Terminate"
nu kan vi så prøve at afslutte med "End" nu vil der ikke komme nogle besked.. det betyder at din UserControl ikke har nået at afslutte det som ville stå under UserControl_Terminate()
det er også derfor der er mange nybegynder som ikke kan forstå hvorfor deres program altid går ned når de afslutter med "End"
Avatar billede mihl Nybegynder
24. januar 2006 - 21:08 #8
Tak for præciseringerne ....
Avatar billede sjh Nybegynder
24. januar 2006 - 21:12 #9
selv tak..

håber også du fik lidt ud af det :D
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