View Single Post
  #6   Report Post  
Posted to microsoft.public.excel.programming
Josh Sale Josh Sale is offline
external usenet poster
 
Posts: 177
Default How to create "modern" controls on a worksheet

Thanks Nick. This sounds like music to my ears! A few follow-up questions:

- So would I create (say) such a command button using CreateObject?
GetObject? OLEObjects.Add?

- Do you know the name (file or class) of the "common" controls used by
WinXP? By Vista?

- The KB article you pointed me to indicates that these ActiveX controls
must support the IDataObject interface. Do you happen to know if WinXP's
"common" controls support this interface?

- Once I create one of these ActiveX controls, can I position it on the
worksheet the way I do my current controls (e.g., by setting its Top, Left,
Width and Height properties)? Will the Top and Left properties take values
from the same coordinate system as I currently use for the existing
controls?

- Once I create one of these ActiveX controls, will I be able to field
events as I currently do (e.g., Sub object_name_MouseDown(...))?

I'm sure I can figure out the answers to some of these questions once I get
started, but if you have any pointers I'd really appreciate it.

Thanks,

josh






"NickHK" wrote in message
...
You are free to use any* ActiveX control that is installed on the user's
system and if you have an Installer routine, you can add new controls to
system. Obviously this becomes more complex than just sending a WB, but
installation should only be a one-time thing.

* Actually, there are some limitations in which Active controls you can
use;
the control must expose the certain interfaces:
http://support.microsoft.com/kb/168392
Whilst is quite old, I believe it still applies to Excel.

NickHK

"Josh Sale" <jsale@tril dot cod wrote in message
...
Starting with your last point ... I could care less. However I've been
hearing this drumbeat for years and have been ignoring it thinking "there
must be more important things to worry about then these cosmetics". But

the
beat goes on and in fact intensifies. If you remember the old "Lucky"
commercials well then I'm the opposite ... I'd rather switch than fight!

As you point out, command buttons do have a picture property. But that
really doesn't do it for me. Here are two immediate problems:

First, I need to be able to dynamically set the caption of the buttons.

You
can't do that if the button face is coming from a graphic image.

Second setting the picture property doesn't really address the user's
complaints. They want "modern" controls. So for example, when you roll

the
mouse over a modern command button, it gets a "highlight". This doesn't
happen when you set the object's Picture property. OK ... perhaps there

is
a mouse_over event I can trap and load a new picture into each command
button as the mouse rolls over it (although I actually think there may be

no
such event), this is way overboard. I shouldn't have to try to replicate
all of the "modern" behaviors of these controls in my code. Its a waste

of
my time, I'll never get it 100% right and I'll have to make a career of
it
(e.g., next Vista and then whatever follows that).

Finally, not withstanding any of the above, the Picture solution isn't a
complete solution for me. As I mentioned, I need other controls like a
combo box which don't have Picture properties.

I have to believe there is someway to get the "native" controls onto a
worksheet.

Any other suggestions?

Thanks,

josh



"Jim Cone" wrote in message
...

The command button control (and others) have a picture property.
You can get free Vista pictures off the internet.
Try some of those on your controls. You can link the pictures
to the controls or simply paste the pictures into the picture property.

Are you sure it isn't the developer that cares about "modern" controls
and not the users? <g
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware



"Josh Sale" <jsale@tril dot cod
wrote in message
I have an add-in that dynamically creates various kinds of OLE controls

on
a
worksheet. I use code like the following:

ActiveSheet.OLEObjects.Add(ClassType:="Forms.Comma ndButton.1", ...
ActiveSheet.OLEObjects.Add(ClassType:="Forms.Combo Box.1", ...

I need to use OLE objects rather than say Form controls (which at least

in
the case of combo boxes look a little better) because I need the events
exposed by the OLE objects.

Anyway, all of this works fine and has been stabile for years. Buy my
users
increasingly complain about the aesthetics of these controls. Without
being
to precise, I think the above code results in Windows 3.1 controls
being
created (OK, maybe its Win95) and they just look like old clunkers.

I'm looking for a way to create contemporary WinXP (or perhaps even

Vista)
controls on my worksheets. I need command buttons, combo-boxes,
text-boxes,
list-box, option button and check-box controls. Installing a new dll
or
ocx
onto my user's systems to make this happen would be OK.

Anybody got any bright ideas?
TIA,
josh