[SOLVED!] Combined Refresh and Stop button?
Printed From: Codejock Forums
Category: Codejock Products
Forum Name: Command Bars
Forum Description: Topics Related to Codejock Command Bars
URL: http://forum.codejock.com/forum_posts.asp?TID=15925
Printed Date: 27 November 2024 at 1:04am Software Version: Web Wiz Forums 12.04 - http://www.webwizforums.com
Topic: [SOLVED!] Combined Refresh and Stop button?
Posted By: shipwreck
Subject: [SOLVED!] Combined Refresh and Stop button?
Date Posted: 26 December 2009 at 11:23pm
Hello Folks!
Here is another question for you.
I was interested in creating one button in the commandbars to work as both the refresh and stop button. Similar to most other browsers available today.
So, I was wondering that if this is possible and if so, just exactly how to implement this.
If anyone can give me a suggestion or maybe a code example it would be greatly appreciated.
Thanks and Regards in advance.
------------- Product: Xtreme Suite Pro (Active-X), Version 15.3.1
Platform: Windows 7 Ultimate SP1 (64Bit) & Windows XP Mode SP3 (32Bit)
Language: Visual Basic 6.0 SP6
|
Replies:
Posted By: jpbro
Date Posted: 27 December 2009 at 2:16pm
Using Actions can help you here. First, in the General Declarations section, add some action IDs and a variable to store a reference to your Stop/Refresh button:
Private Const mc_ActionStop As Long = 100 Private Const mc_ActionRefresh As Long = 101
Private mo_StopOrRefresh As XtremeCommandBars.CommandBarControl
|
Note that these IDs should not be the same as IDs that you are using for other CommandBar controls.
Next, before adding any CommandBar controls, make sure to enable actions and create your stop and refresh actions:
Me.CommandBars1.EnableActions
Me.CommandBars1.Actions.Add mc_ActionRefresh, "Refresh", "Refresh this page", "Refresh this page", "Page" Me.CommandBars1.Actions.Add mc_ActionStop, "Stop", "Stop loading this page", "Stop loading this page", "Page"
|
Next, add your Stop/Refresh button to the CommandBars (for this example, I am adding the control to a Ribbon), and then assign the starting action to it:
Set mo_StopOrRefresh = mo_Ribbon.Controls.Add(xtpControlButton, 0, "") Set mo_StopOrRefresh.Action = Me.CommandBars1.Actions.Action(mc_ActionRefresh)
|
You can swap between actions as required by using this sub:
Public Sub SwapStopRefresh() Dim l_ActionId As Long
Select Case mo_StopOrRefresh.Action.Id Case mc_ActionRefresh l_ActionId = mc_ActionStop Case Else l_ActionId = mc_ActionRefresh End Select
Set mo_StopOrRefresh.Action = Me.CommandBars1.Actions.Action(l_ActionId)
End Sub
|
Finally, you can use the CommandBars_Execute event to test for (and perform) either action as follows:
Private Sub CommandBars1_Execute(ByVal Control As XtremeCommandBars.ICommandBarControl) Dim l_ExecId As Long ' Get the action ID to be processed If Not Control.Action Is Nothing Then l_ExecId = Control.Action.Id Else ' Some CommandBar UI elements (e.g. StatusBar Switches) don't use actions, ' so for those just get the control ID l_ExecId = Control.Id End If ' Act accordingly on the passed ID Select Case l_ExecId Case mc_ActionRefresh ' Refresh the page MsgBox "Refresh" Case mc_ActionStop ' Stop loading the page MsgBox "Stop" End Select End Sub
|
Please note that some of this is air code, so if there are any problems, please get back to me.
------------- Product: Xtreme SuitePro (ActiveX) version 16.2.6 Platform: Windows XP - SP3
Language: Visual Basic 6.0 SP6
|
Posted By: shipwreck
Date Posted: 27 December 2009 at 9:18pm
Okay man I'm opening the virtual machine now & will get back to you on these. Thanks!
------------- Product: Xtreme Suite Pro (Active-X), Version 15.3.1
Platform: Windows 7 Ultimate SP1 (64Bit) & Windows XP Mode SP3 (32Bit)
Language: Visual Basic 6.0 SP6
|
Posted By: shipwreck
Date Posted: 27 December 2009 at 11:58pm
Dude, your a life saver!
This functions wonderfully. But, I have another question.
I intend the commandbutton to have a refresh icon as well as a stop icon. is there anyway I can have those change in runtime as well?
------------- Product: Xtreme Suite Pro (Active-X), Version 15.3.1
Platform: Windows 7 Ultimate SP1 (64Bit) & Windows XP Mode SP3 (32Bit)
Language: Visual Basic 6.0 SP6
|
Posted By: shipwreck
Date Posted: 28 December 2009 at 12:24am
Okay man, I'll go ahead and create a new topic for the icon problem. Hite me up there. :]
------------- Product: Xtreme Suite Pro (Active-X), Version 15.3.1
Platform: Windows 7 Ultimate SP1 (64Bit) & Windows XP Mode SP3 (32Bit)
Language: Visual Basic 6.0 SP6
|
Posted By: jpbro
Date Posted: 28 December 2009 at 11:37am
Glad to help, but patience my friend, I'm in a different time zone ;)
The action objects that you create have an IconId property, so you can set the icons when you are creating the actions as follows:
With Me.CommandBars1.Actions.Add(mc_ActionRefresh, "Refresh", "Refresh this page", "Refresh this page", "Page") .IconId = ' Icon # for an icon in your CommandBars icons list End With With Me.CommandBars1.Actions.Add(mc_ActionStop, "Stop", "Stop loading this page", "Stop loading this page", "Page") .IconId = ' Different Icon # End With
------------- Product: Xtreme SuitePro (ActiveX) version 16.2.6 Platform: Windows XP - SP3
Language: Visual Basic 6.0 SP6
|
Posted By: shipwreck
Date Posted: 28 December 2009 at 11:39am
Oh, I see. That definitely makes sense. I'll try that asap!
But I figured the time zones were different. The whole website is setup that way. It's pretty funny actually, I can post a reply at 11:00 and it says I posted it at like 5:14 on the site.
------------- Product: Xtreme Suite Pro (Active-X), Version 15.3.1
Platform: Windows 7 Ultimate SP1 (64Bit) & Windows XP Mode SP3 (32Bit)
Language: Visual Basic 6.0 SP6
|
Posted By: shipwreck
Date Posted: 28 December 2009 at 12:44pm
Okay jpbro. Just got finished trying that code. It works perfect!
But, and I apologize, but I have another question for you. :p
What if I wanted to do a three button combination?
For example, Go, Refresh, and Stop.
I think You would have the refresh and stop setup on active forms web browser control and you would then have it set that if the address in the address bar is different from the location URL it would be a go button, otherwise it would be the refresh button.
Is there any way in doing that?
------------- Product: Xtreme Suite Pro (Active-X), Version 15.3.1
Platform: Windows 7 Ultimate SP1 (64Bit) & Windows XP Mode SP3 (32Bit)
Language: Visual Basic 6.0 SP6
|
Posted By: jpbro
Date Posted: 28 December 2009 at 8:00pm
Sure, just create a new Action object and assign it a unique ID...something like:
In the General Declarations:
Private Const mc_ActionGo As Long = 102 And then, you will want to change the name of your control reference variable to make more sense:
Private mo_StopGoRefresh As XtremeCommandBars.CommandBarControl Then wherever you create your actions, add:
With Me.CommandBars1.Actions.Add(mc_ActionGo, "Go", "Go to this URL", "Go to this URL", "Page") .IconId = ' ID # of GO icon End With
And then instead of a SwapStopRefresh sub, you might want a SetPageState() sub (as an example):
First in the General Declarations, create a new enum to indicate the page state:
Private Enum e_PageState pagestate_Loaded ' Page is loaded, REFRESH button should be available pagestate_Loading ' Page is loading, STOP button should be available pagestate_DifferentUrl ' User has typed a different URL than the current page URL, GO button should be available
|
And then add this sub, and call it with the appropriate page state parameter when your conditions are met:
Private Sub SetPageState(ByVal p_PageState As e_PageState) Dim l_ActionId As Long
Select Case p_PageState Case pagestate_Loading l_ActionId = mc_ActionStop Case pagestate_Loaded l_ActionId = mc_ActionRefresh Case pagestate_DifferentUrl l_ActionId = mc_ActionGo Case Else Err.Raise 5, , "Unknown page state." End Select
Set mo_StopGoRefresh.Action = Me.CommandBars1.Actions.Action(l_ActionId) End Sub
|
------------- Product: Xtreme SuitePro (ActiveX) version 16.2.6 Platform: Windows XP - SP3
Language: Visual Basic 6.0 SP6
|
Posted By: shipwreck
Date Posted: 29 December 2009 at 1:15am
Okay jpbro, you've help me this far and I really appreciate it. So, let me ask you this:
I have been trying to implement a "Favorites/Bookmarks" bar into the browser, similar to firefox, chrome, safari, and even IE 8.
So far I haven't had any luck whatsoever on this one. I've tried several different ways using a text file, a database and etc.
In other words, I would like to have a toolbar that displays the users favorites and the user can edit, delete, and create more bookmarks to the bar at runtime.
Have any ideas on this one my friend?
------------- Product: Xtreme Suite Pro (Active-X), Version 15.3.1
Platform: Windows 7 Ultimate SP1 (64Bit) & Windows XP Mode SP3 (32Bit)
Language: Visual Basic 6.0 SP6
|
Posted By: jpbro
Date Posted: 29 December 2009 at 2:30pm
What problems were you having? A database or a text file should be fine for storing bookmarks. You can Add CommandBar controls using the Add method of a CommandBar.Controls object, and then use the Delete method of any CommandBar.Controls.Item object.
Editing is a bit trickier - You could use the CommandBars1_ControlRButtonUp event to catch when a user right-clicks a control, and then test the Id property to see if the control is one of your Bookmark controls. If so, you could then use the ShowPopup method of a CommandBar object to offer a menu with Edit and Remove buttons. If the user clicks Edit (as caught in the _Execute event), just show a new window and allow them to change the displayed caption.
------------- Product: Xtreme SuitePro (ActiveX) version 16.2.6 Platform: Windows XP - SP3
Language: Visual Basic 6.0 SP6
|
Posted By: shipwreck
Date Posted: 30 December 2009 at 3:01am
Okay, that pretty much describes exactly what I'm looking for jpbro. Is there anyway you could explain that option in further detail or maybe a sample?
|
Posted By: jpbro
Date Posted: 30 December 2009 at 10:33am
Unfortunately, I don't have much time right now to do up a sample as I have a project due very soon.
Between the RC sample and my explanation above, there should be enough to get started. Why don't you give it a try (maybe in a separate, new project) and when you encounter problems, you can post the project up here with questions (maybe a new thread would be better). I can then try to help with specific problems if I have a bit of time to spare (or others can help too).
------------- Product: Xtreme SuitePro (ActiveX) version 16.2.6 Platform: Windows XP - SP3
Language: Visual Basic 6.0 SP6
|
Posted By: shipwreck
Date Posted: 30 December 2009 at 10:57am
Okay man but what are you leaning torwards when you say "RC Sample"?
|
Posted By: jpbro
Date Posted: 30 December 2009 at 10:59am
Sorry, I had the ReportControl on my mind from another post ;) I meant the CommandBars Ribbon Sample that ships with the CJ controls (in your Program Files\Codejock Software\ActiveX\Xtreme SuitePro ActiveX vX.X.X\Samples\CommandBars\VB\RibbonSample folder, where X.X.X is the version of the suite that you have installed).
------------- Product: Xtreme SuitePro (ActiveX) version 16.2.6 Platform: Windows XP - SP3
Language: Visual Basic 6.0 SP6
|
Posted By: shipwreck
Date Posted: 30 December 2009 at 11:02am
Oh, Okay. I see. Don't feel bad though, everyone makes mistakes ever once in a while. But I'll attempt to try that I suppose. I'm not sure if I'll have any luck on this one since I'm not real familiar with the coding off the top of my head. But, I hope you get that project done! Best of luck!
|
|