|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Visual Basic Common Control API
Routines SetParent: Display Modal Form Activity in a Parent Form's VB ProgressBar |
||
Posted: | Thursday June 29, 1999 | |
Updated: | Monday December 26, 2011 | |
Applies to: | VB4-32, VB5, VB6 | |
Developed with: | VB6, Windows NT4 | |
OS restrictions: | None | |
Author: | VBnet - Randy Birch | |
Related: |
SetParent: Add a VB Progress Bar to a VB StatusBar SendMessage: Change the Colour of a VB ProgressBar Pure VB: Customizable PhotoShop-Style ProgressBar Pure VB: Customizable PhotoShop-Style ProgressBar in a MDI App CreateWindowEx: Creating a Common Control ProgressBar- Overview CreateWindowEx: Creating the Common Control Flood Panel via the API SetParent: Display Modal Form Activity on a Parent Form's 'PhotoShop-style' ProgressBar SetParent: Display Modal Form Activity in a Parent Form's VB ProgressBar |
|
Prerequisites |
None. |
|
This
is simple code that demonstrates how to use a normal VB progress bar on a parent form (SDI or MDI) to track the activity being performed in another
form, even when that form is modal. The demo also shows how to call SetParent to embed the progress bar inside the status bar panel. |
BAS Module Code |
None. |
|
Form Code - Parent Form |
Create two new forms.
To the main 'parent' form, add a command button (Command1), a status bar (StatusBar1) with at least 1 panel, and a common control progress bar (ProgressBar1). To the 'child' modal form, add a command button (Command1). Add the following code to the 'Parent' (calling) form: |
|
Option Explicit '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Copyright ©1996-2011 VBnet/Randy Birch, All Rights Reserved. ' Some pages may also contain other copyrights by the author. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Distribution: You can freely use this code in your own ' applications, but you may not reproduce ' or publish this code on any web site, ' online service, or distribute as source ' on any media without express permission. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Declare Function SetParent Lib "user32" _ (ByVal hWndChild As Long, _ ByVal hWndNewParent As Long) As Long Private Sub Form_Load() Me.Move (Screen.Width - Me.Width) \ 2, _ (Screen.Height - Me.Height) \ 2 SetParent ProgressBar1.hWnd, StatusBar1.hWnd With ProgressBar1 .Visible = False .Align = vbAlignNone .Appearance = ccFlat .BorderStyle = ccNone .Move 40, _ 40, _ StatusBar1.Panels(1).Width - 40, _ StatusBar1.Height - 40 .ZOrder 1 End With StatusBar1.Panels(1).Text = "ProgressBarwill appear here." End Sub Private Sub Command1_Click() Command1.Enabled = False With Form2 Set .ParentForm = Me .Show vbModal End With Command1.Enabled = True End Sub Public Sub ProgBarInitialize(pbMin As Integer, _ pbMax As Integer, _ pbInitValue As Integer) With ProgressBar1 .Max = pbMax .Min = pbMin .Value = pbInitValue .ZOrder 0 .Visible = True End With End Sub Public Sub ProgBarTerminate() ProgressBar1.Visible = False End Sub |
Form Code - Modal (Child) Form |
Add the following code to the Child form: |
|
Option Explicit Private frmParent As Form Private Sub Form_Load() Me.Move (Screen.Width - Me.Width) \ 2, _ (Screen.Height - Me.Height) \ 2 End Sub Private Sub Command1_Click() Dim cnt As Integer 'initialize the progress bar: 'min = 0, max = 5000, initial = 0 frmParent.ProgBarInitialize 0, 5000, 0 For cnt = 1 To 5000 '[activity code here] 'show progress frmParent.ProgressBar1.Value = cnt DoEvents Next frmParent.ProgBarTerminate End Sub Public Property Set ParentForm(ByVal frm As Form) Set frmParent = frm End Property Private Sub Form_Unload(Cancel As Integer) Set frmParent = Nothing End Sub |
Comments |
When run, the progress bar in the parent form will update based on the modal child's activity. |
|
|
|
|||||
|
|||||
|
|||||
Copyright ©1996-2011 VBnet and Randy Birch. All Rights Reserved. |