|
||||
|
|
#1 (permalink) |
|
Utente della community ![]() ![]()
385 Messaggi
![]() |
Unload Me.. Load Me
Non sapevo come descrivere questo mio dubbio, tutto è nato nellaa creazione di un Loader ( vi ricordate? ) per le mie applicazioni, riassuamento controlla se c'è una nuova versione, se c'è la scarica e avvia il programma aggiornato altrimenti si chiude e avvia il programma come al solito.
Tutto era nato a causa di un problema nel chiudere tutto il programma per fare l'aggiornamento, ed eravamo venuti a capo del problema dicendo che cnviene fare un Loader. Ora mi trovo di fronte a un problema che mi era già capitato tempo fa e che avevo aggirato, cioè che, come in questo caso il comando Unload Me, quando lanciato, invece che scaricare la Form me la riesegue, cioè se io alla fine di FormActivate (o FormLoad) metto questo comando invece che andare in QueryUnload mi ricarica tutto il progetto come se lo avessi appena aperto, ecco il codice: codice:
Option Explicit
Private Sub Form_Load()
'##### Posiziono la Form #####
Me.Top = (Screen.Height - Me.Height) / 2
Me.Left = (Screen.Width - Me.Width) / 2
frm_main.Caption = " Applicazione"
'##### Controllo se bisogna aggiornare #####
Dim Linea As String
Dim Attuale As Date
Dim Nuova As Date
'##### Trovo la data della versione in uso #####
Open App.Path & "\Version.ini" For Input As #1
Input #1, Linea
Attuale = CDate(Linea)
Close #1
'##### Trovo la data dell'ultima versione #####
Open "\\DiscoRete\Applicazioni$\Applicazione\Version.ini" For Input As #1
Input #1, Linea
Nuova = CDate(Linea)
Close #1
'##### Controllo se bisogna aggiornare #####
If Nuova > Attuale Then
Me.Show
Else
Call Shell("Client.exe", vbNormalFocus)
Unload Me '##### Al momento risolvo con il comando End #####
End If
'##### Inserisco il Change Log #####
Open "\\DiscoRete\Applicazioni$\Applicazione\Change Log.txt" For Input As #1
Do Until EOF(1)
Input #1, Linea
txt_change_log.Text = txt_change_log.Text & Linea & vbCrLf
Loop
Close #1
'##### Svuoto le variabili #####
Linea = 0
Attuale = 0
Nuova = 0
End Sub
Private Sub cmd_aggiorna_Click()
Dim FSO As New Scripting.FileSystemObject
FSO.CopyFolder "\\DiscoRete\Applicazioni$\Applicazione", App.Path, True
Call Shell("Client.exe", vbNormalFocus)
Unload Me
End Sub
__________________
Luca Corrarati .it MDB/ASP/VB6 Developer & IntraNet Administrator Ultima modifica di StegcO : 16-03-2010 a 17:19. |
|
|
|
|
|
#2 (permalink) | |
|
Very Important Person ![]() ![]()
1,118 Messaggi
![]() ![]() ![]() ![]() ![]() |
Quote:
Queste istruzioni tentano di riempire una TextBox - mi pare - che è contenuta nel form che tenti di scaricare. Un'altra cosa: a cosa serve quello che chiami "Svuoto le variabili" ?
__________________
Il regolamento del forum: la prima cosa da leggere. ![]() |
|
|
|
|
|
|
#3 (permalink) | |
|
Utente della community ![]() ![]()
385 Messaggi
![]() |
Quote:
E, per esempio, come in questo in cui io devo popolare quella Texbox SOLO se si verifica una condizione, e quando non succede voglio troncare il tutto come farebbe il tanto deprecato End? ![]() Riporto le variabili al valore iniziale, se è testo ="" se è numerica =0 ecc, lo faccio più che altro per ricordarmi in ogni Sub quali variabili uso e quali sono sono invece globali, oltre al fatto che quando mi insegnarono VB6 mi dissero che così facendo libero spazio in memoria (un pò come quando si distrugge Rs o Conn).
__________________
Luca Corrarati .it MDB/ASP/VB6 Developer & IntraNet Administrator |
|
|
|
|
|
|
#4 (permalink) |
|
Moderatore Globale ![]() ![]()
6,521 Messaggi
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Sinceramente non vedo perchè impelagarsi gestendo tutto dal Form, che comunque è soggetto almeno al suo caricamento. Se devi eseguire del codice a prescindere dall'utilizzo del Form, come il controllo della versione, non è necessario affatto sfruttare il Form, basta la Sub Main():
codice:
Sub Main()
'##### Trovo la data della versione in uso #####
'...
'##### Trovo la data dell'ultima versione #####
'...
'##### Controllo se bisogna aggiornare #####
If Nuova > Attuale Then
frmDiAggiornamento.Show vbModal
End If
Call Shell("Client.exe", vbNormalFocus)
End Sub
Fine dei giochi... TheTruster
__________________
![]() ![]() ![]()
|
|
|
|
|
|
#5 (permalink) | |||
|
Very Important Person ![]() ![]()
1,118 Messaggi
![]() ![]() ![]() ![]() ![]() |
Quote:
Quote:
Quote:
Comunque, l'osservazione di TT, che è arrivata mentre scrivevo, ti libera da un sacco di inconvenienti.
__________________
Il regolamento del forum: la prima cosa da leggere. ![]() |
|||
|
|
|
|
|
#6 (permalink) |
|
Utente della community ![]() ![]()
385 Messaggi
![]() |
Grazie per i consigli, per risolvere è bastato mettere
codice:
'##### Inserisco il Change Log #####
Open "\\DiscoRete\Applicazioni$\Applicazione\Change Log.txt" For Input As #1
Do Until EOF(1)
Input #1, Linea
txt_change_log.Text = txt_change_log.Text & Linea & vbCrLf
Loop
Close #1
Grazie a tutti ![]()
__________________
Luca Corrarati .it MDB/ASP/VB6 Developer & IntraNet Administrator |
|
|
|
![]() |
| Strumenti della discussione | |
| Modalità di visualizzazione | |
|
|
Tutti gli orari sono GMT +2. Attualmente sono le 09:48.




















Modalità lineare

