Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
This is one of those "there's gotta be a way" situations. I have a
UserForm with objects all over it, including a multipage form, frames within the pages and objects, including labels, within the forms and on the pages directly. I'd like to implement a "right click for help" routine for all the objects including labels, since some of the labels are designed to look and feel like hyperlinks and do perform (hopefully useful) actions for the user. The "HelpContextID" for all objects, including labels, has been defined. One obvious place to start is the "MouseUp()" event and use "If Button = 2 ...". However, from there I'm stuck. With labels, the ActiveControl object (or in my case, the (Me.mpgMain.SelectedItem.ActiveControl.ActiveContr ol) object is NOT the object whose "MouseUp()" macro is being run. Rather it's the textbox where the cursor is sitting there blinking. Does anyone know a way to refer to the object whose MouseUp event is being called from within the MouseUp event itself? From there I could extract the HelpContextID property and do a 'Shell "winhlp32.exe -N ...' Alternately does anyone know a simpler way of having a right mouse click bring up the context-sensitive help, equivalent to how the "F1" key works, for all types of objects oon a UserForm? It seems this used to a standard feature in older versions of Excel/Windows but, sigh, no longer. = Marchand = |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Most (all) of the controls you can put on a form have a mouse up/down
event. Assign your code to each individual control. An alternative is to add a listbox with all of the help topics and let your users pick the one they want to read. -- Jim Cone San Francisco, USA http://www.realezsites.com/bus/primitivesoftware wrote in message This is one of those "there's gotta be a way" situations. I have a UserForm with objects all over it, including a multipage form, frames within the pages and objects, including labels, within the forms and on the pages directly. I'd like to implement a "right click for help" routine for all the objects including labels, since some of the labels are designed to look and feel like hyperlinks and do perform (hopefully useful) actions for the user. The "HelpContextID" for all objects, including labels, has been defined. One obvious place to start is the "MouseUp()" event and use "If Button = 2 ...". However, from there I'm stuck. With labels, the ActiveControl object (or in my case, the (Me.mpgMain.SelectedItem.ActiveControl.ActiveContr ol) object is NOT the object whose "MouseUp()" macro is being run. Rather it's the textbox where the cursor is sitting there blinking. Does anyone know a way to refer to the object whose MouseUp event is being called from within the MouseUp event itself? From there I could extract the HelpContextID property and do a 'Shell "winhlp32.exe -N ...' Alternately does anyone know a simpler way of having a right mouse click bring up the context-sensitive help, equivalent to how the "F1" key works, for all types of objects oon a UserForm? It seems this used to a standard feature in older versions of Excel/Windows but, sigh, no longer. = Marchand = |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Not exactly what you want, but text box can be made to look like labels.
Also with .Locked=true they can be edited, but can be selected, hence made active. NickHK wrote in message ups.com... This is one of those "there's gotta be a way" situations. I have a UserForm with objects all over it, including a multipage form, frames within the pages and objects, including labels, within the forms and on the pages directly. I'd like to implement a "right click for help" routine for all the objects including labels, since some of the labels are designed to look and feel like hyperlinks and do perform (hopefully useful) actions for the user. The "HelpContextID" for all objects, including labels, has been defined. One obvious place to start is the "MouseUp()" event and use "If Button = 2 ...". However, from there I'm stuck. With labels, the ActiveControl object (or in my case, the (Me.mpgMain.SelectedItem.ActiveControl.ActiveContr ol) object is NOT the object whose "MouseUp()" macro is being run. Rather it's the textbox where the cursor is sitting there blinking. Does anyone know a way to refer to the object whose MouseUp event is being called from within the MouseUp event itself? From there I could extract the HelpContextID property and do a 'Shell "winhlp32.exe -N ...' Alternately does anyone know a simpler way of having a right mouse click bring up the context-sensitive help, equivalent to how the "F1" key works, for all types of objects oon a UserForm? It seems this used to a standard feature in older versions of Excel/Windows but, sigh, no longer. = Marchand = |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Jim,
Thanks for your reply here. Each item already has a code assigned to it including responding to the MouseUp event. What I'm stumbling over is the apparent inability for the VBA code behind a label object to identify which object it belongs to so that it can look up other properties of itself (in this case, ContextHelpID). I'm trying to have a single place where the ContextHelpID is stored and the property of the label object is the obvious place to do this. I could also hard-wire it into the VBA code, but this is error-prone and a risk for long-term maintenance of the application. Ths list-box idea I've also considered, but it puts a lot of burden on the user. They would reasonably expect the computer to "know" what they're asking help about and not have to tell it "The object I just clicked on!". Under this approach I'd also have to create, and maintain, a duplicate index to an help file. This is a hassle initially and a major maintenace headache down the road as the application evolves. Simply getting the VBA code to read other properties of the object it belongs to would be so much simpler for design and maintenance, as well as being easier for the user. But then, I'm always been an optimist. Jim Cone wrote: Most (all) of the controls you can put on a form have a mouse up/down event. Assign your code to each individual control. An alternative is to add a listbox with all of the help topics and let your users pick the one they want to read. -- Jim Cone San Francisco, USA http://www.realezsites.com/bus/primitivesoftware wrote in message This is one of those "there's gotta be a way" situations. I have a UserForm with objects all over it, including a multipage form, frames within the pages and objects, including labels, within the forms and on the pages directly. I'd like to implement a "right click for help" routine for all the objects including labels, since some of the labels are designed to look and feel like hyperlinks and do perform (hopefully useful) actions for the user. The "HelpContextID" for all objects, including labels, has been defined. One obvious place to start is the "MouseUp()" event and use "If Button = 2 ...". However, from there I'm stuck. With labels, the ActiveControl object (or in my case, the (Me.mpgMain.SelectedItem.ActiveControl.ActiveContr ol) object is NOT the object whose "MouseUp()" macro is being run. Rather it's the textbox where the cursor is sitting there blinking. Does anyone know a way to refer to the object whose MouseUp event is being called from within the MouseUp event itself? From there I could extract the HelpContextID property and do a 'Shell "winhlp32.exe -N ...' Alternately does anyone know a simpler way of having a right mouse click bring up the context-sensitive help, equivalent to how the "F1" key works, for all types of objects oon a UserForm? It seems this used to a standard feature in older versions of Excel/Windows but, sigh, no longer. = Marchand = |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Nick,
You're right about this being a solution -- although it's more than a bit of a kludge. It would really change the whole GUI design of the application but it may be the way to go (sigh). Thanks for your thoughts here. NickHK wrote: Not exactly what you want, but text box can be made to look like labels. Also with .Locked=true they can be edited, but can be selected, hence made active. NickHK wrote in message ups.com... This is one of those "there's gotta be a way" situations. I have a UserForm with objects all over it, including a multipage form, frames within the pages and objects, including labels, within the forms and on the pages directly. I'd like to implement a "right click for help" routine for all the objects including labels, since some of the labels are designed to look and feel like hyperlinks and do perform (hopefully useful) actions for the user. The "HelpContextID" for all objects, including labels, has been defined. One obvious place to start is the "MouseUp()" event and use "If Button = 2 ...". However, from there I'm stuck. With labels, the ActiveControl object (or in my case, the (Me.mpgMain.SelectedItem.ActiveControl.ActiveContr ol) object is NOT the object whose "MouseUp()" macro is being run. Rather it's the textbox where the cursor is sitting there blinking. Does anyone know a way to refer to the object whose MouseUp event is being called from within the MouseUp event itself? From there I could extract the HelpContextID property and do a 'Shell "winhlp32.exe -N ...' Alternately does anyone know a simpler way of having a right mouse click bring up the context-sensitive help, equivalent to how the "F1" key works, for all types of objects oon a UserForm? It seems this used to a standard feature in older versions of Excel/Windows but, sigh, no longer. = Marchand = |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Environment...
Label control named "SizeLabel" added to a UserForm. SizeLabel.Tag is 10 Right clicking the label displays the contents of Range("A10") on Sheet2. Also displayed is the name of the label... Private Sub SizeLabel_MouseUp(ByVal Button As Integer, _ ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 2 Then MsgBox Worksheets("Sheet2").Range("A1")(CLng(SizeLabel.Ta g), 1).Value MsgBox Me.Controls("SizeLabel").Name End If End Sub -- Jim Cone San Francisco, USA http://www.officeletter.com/blink/specialsort.html wrote in message ups.com... Jim, Thanks for your reply here. Each item already has a code assigned to it including responding to the MouseUp event. What I'm stumbling over is the apparent inability for the VBA code behind a label object to identify which object it belongs to so that it can look up other properties of itself (in this case, ContextHelpID). I'm trying to have a single place where the ContextHelpID is stored and the property of the label object is the obvious place to do this. I could also hard-wire it into the VBA code, but this is error-prone and a risk for long-term maintenance of the application. Ths list-box idea I've also considered, but it puts a lot of burden on the user. They would reasonably expect the computer to "know" what they're asking help about and not have to tell it "The object I just clicked on!". Under this approach I'd also have to create, and maintain, a duplicate index to an help file. This is a hassle initially and a major maintenace headache down the road as the application evolves. Simply getting the VBA code to read other properties of the object it belongs to would be so much simpler for design and maintenance, as well as being easier for the user. But then, I'm always been an optimist. Jim Cone wrote: Most (all) of the controls you can put on a form have a mouse up/down event. Assign your code to each individual control. An alternative is to add a listbox with all of the help topics and let your users pick the one they want to read. -- Jim Cone San Francisco, USA http://www.realezsites.com/bus/primitivesoftware wrote in message This is one of those "there's gotta be a way" situations. I have a UserForm with objects all over it, including a multipage form, frames within the pages and objects, including labels, within the forms and on the pages directly. I'd like to implement a "right click for help" routine for all the objects including labels, since some of the labels are designed to look and feel like hyperlinks and do perform (hopefully useful) actions for the user. The "HelpContextID" for all objects, including labels, has been defined. One obvious place to start is the "MouseUp()" event and use "If Button = 2 ...". However, from there I'm stuck. With labels, the ActiveControl object (or in my case, the (Me.mpgMain.SelectedItem.ActiveControl.ActiveContr ol) object is NOT the object whose "MouseUp()" macro is being run. Rather it's the textbox where the cursor is sitting there blinking. Does anyone know a way to refer to the object whose MouseUp event is being called from within the MouseUp event itself? From there I could extract the HelpContextID property and do a 'Shell "winhlp32.exe -N ...' Alternately does anyone know a simpler way of having a right mouse click bring up the context-sensitive help, equivalent to how the "F1" key works, for all types of objects oon a UserForm? It seems this used to a standard feature in older versions of Excel/Windows but, sigh, no longer. = Marchand = |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Jim,
Good code -- thanks. It could also be revised to lookup the ContextHelpID stored in matrix on a spreadsheet and use that # to display a particular page within a help file. This would give users access to the full help file contents in case they needed more than the page in question. In another Excel application, I do this sort of thing to give users a "right click" help on rows within a spreadsheet. Still and all, "wouldn't it be nice" if the VBA of an object could read the properties of its own object. Maybe in the next version of Office... = Marchand = Jim Cone wrote: Environment... Label control named "SizeLabel" added to a UserForm. SizeLabel.Tag is 10 Right clicking the label displays the contents of Range("A10") on Sheet2. Also displayed is the name of the label... Private Sub SizeLabel_MouseUp(ByVal Button As Integer, _ ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 2 Then MsgBox Worksheets("Sheet2").Range("A1")(CLng(SizeLabel.Ta g), 1).Value MsgBox Me.Controls("SizeLabel").Name End If End Sub -- Jim Cone San Francisco, USA http://www.officeletter.com/blink/specialsort.html wrote in message ups.com... Jim, Thanks for your reply here. Each item already has a code assigned to it including responding to the MouseUp event. What I'm stumbling over is the apparent inability for the VBA code behind a label object to identify which object it belongs to so that it can look up other properties of itself (in this case, ContextHelpID). I'm trying to have a single place where the ContextHelpID is stored and the property of the label object is the obvious place to do this. I could also hard-wire it into the VBA code, but this is error-prone and a risk for long-term maintenance of the application. Ths list-box idea I've also considered, but it puts a lot of burden on the user. They would reasonably expect the computer to "know" what they're asking help about and not have to tell it "The object I just clicked on!". Under this approach I'd also have to create, and maintain, a duplicate index to an help file. This is a hassle initially and a major maintenace headache down the road as the application evolves. Simply getting the VBA code to read other properties of the object it belongs to would be so much simpler for design and maintenance, as well as being easier for the user. But then, I'm always been an optimist. Jim Cone wrote: Most (all) of the controls you can put on a form have a mouse up/down event. Assign your code to each individual control. An alternative is to add a listbox with all of the help topics and let your users pick the one they want to read. -- Jim Cone San Francisco, USA http://www.realezsites.com/bus/primitivesoftware wrote in message This is one of those "there's gotta be a way" situations. I have a UserForm with objects all over it, including a multipage form, frames within the pages and objects, including labels, within the forms and on the pages directly. I'd like to implement a "right click for help" routine for all the objects including labels, since some of the labels are designed to look and feel like hyperlinks and do perform (hopefully useful) actions for the user. The "HelpContextID" for all objects, including labels, has been defined. One obvious place to start is the "MouseUp()" event and use "If Button = 2 ...". However, from there I'm stuck. With labels, the ActiveControl object (or in my case, the (Me.mpgMain.SelectedItem.ActiveControl.ActiveContr ol) object is NOT the object whose "MouseUp()" macro is being run. Rather it's the textbox where the cursor is sitting there blinking. Does anyone know a way to refer to the object whose MouseUp event is being called from within the MouseUp event itself? From there I could extract the HelpContextID property and do a 'Shell "winhlp32.exe -N ...' Alternately does anyone know a simpler way of having a right mouse click bring up the context-sensitive help, equivalent to how the "F1" key works, for all types of objects oon a UserForm? It seems this used to a standard feature in older versions of Excel/Windows but, sigh, no longer. = Marchand = |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Changing the font for part of an axis label, not the whole label. | Charts and Charting in Excel | |||
How to rezize data label box in pie charts (label wraps to two lin | Charts and Charting in Excel | |||
Find and Return Numeric Label based on (Numeric Value) Criterion | Excel Worksheet Functions | |||
command button()_click | Excel Programming | |||
Can anyone help with _click() events? | Excel Programming |