24. januar 2006 - 15:06Der 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.
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
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.
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
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.
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.
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"
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.