ho fatto un test per mettere un form in primo piano...
Per porre in primo piano un Form, all'atto della sua aprertura, rispetto agli altri devi utilizzare il suo Metodo " Me.Activate( ) ", avendo cura di porre questa riga di comando all'interno dell'evento " _Activate() " del Form medesimo:
Public Sub Form_Activate()
Me.Activate
End
Se poi vuoi attivare un Form, cliccando ad esempio su un Button posto su un altro Form, puoi utilizzare la proprietà Application.MainWindows nel modo che segue:
Poniamo l'esempio di avere due Form: uno principale e uno secondario, chiamato "Secondario".
Sul Form principale poniamo un Button, e nel codice del Form principale scriviamo questo evento/routine:
Public Sub Button1_Click()
Application.MainWindow = Secondario
Application.MainWindow.Activate
End
Public Sub Button5_Click()
'Application.MainWindow = Barra
'Application.MainWindow.Activate
'Me.Hide()
'Barra.ShowPopup()
Barra.Show()
' Barra.Window.Center()
'Me.Window.TopOnly = False
'Me.TopOnly = False
Message.Info("Operazione completata", "OK")
'Me.Show()
End
Public Sub Form_Open()
Dim i As Integer
Barra.Visible = True
Barra.Window.TopOnly = True
Barra.TopOnly = True
Barra.Window.Center()
ProgressBar1.Visible = True
For i = 1 To 100 Step 1
ProgressBar1.Refresh()
Wait (1 / 10)
ProgressBar1.Value = i / 100
Next
Me.Window.TopOnly = False
Me.TopOnly = False
'Barra.Hide()
Barra.Delete()
'Message.Info("Operazione completata", "OK")
End
Ma tu il codice dell'esempio che ti ho postato lo hai visto?
ProgressBar.Value è di tipo Float e va da 0 a 1, quindi lo puoi comandare solo in quel lasso di valore.
Pertanto se desideri dividere la barra in 100 avanzamenti devi fare come da mio esempio:
Public Sub Form_Open()
Dim f As Float
Me.Show
'FMain.bOpen = True
For f = 0 To 1 Step 0.001
Wait 0.005
Try ProgressBar1.Value = f
Next
'FMain.bOpen = False
Try Me.Close()
End
:ciao: :ciao: