Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

ThemedControls by ESReed

Status
Not open for further replies.

torturedmind

Programmer
Jan 31, 2002
1,052
PH
Good day to you all.

I just recently used ESReed's ThemedControls and applied them as a test in one of my apps. Been playing a bit with the ZoomNavBar and I say it worked bueautifully, at least in my dev pc. But when I compile the app, make an exe using InstallShield Express, install it on a client's pc and run it, the app throws an error:

Error #2059: "Unhandled Sutructured Exception.
ErrorNo: 1924
Message: LOGFX is not an object.
UserValue:
Details: LOGFX
Procedure: applycolormatrix
LineNo: 2064"
Found in line 2085 of module XFCBITMAP.APPLYCOLORMATRIX.

Here's the actual screencap of the error:
errorfr.png


I copied all dependencies as stated in the help file before compiling. I think it's happening in the creation of the ZoomNavBar (I also used other controls like the ThemedForm and the ThemedExplorerBar). I'm a bit reserved in modifying anything as I'm afraid I might mess up these wonderful controls. This question has been posted in the author's blog yesterday and am still waiting for a response. Then I thought I'd post the same here and see if anyone encountered this particular issue. Can anyone help me on this? Thanks in advanced.

PS
If it makes any difference, my dev pc is running WinXP SP3 with MSOffice 2010 Pro and the client's pc has WinXp SP3 with OpenOffice 2.4 installed.

kilroy [knight]
philippines

"Once a king, always a king. But being a knight is more than enough."
 
You say you do a setup with installshield. How do you deploy the activex control? Installshiled does support adding a merge module, you might also add the redistributable ocx files, eg ocx,dll and let installshield register them at the destination computer.

In a case of using Exontrol Exgrid we actually have a seperate installation of the Exgrid control for our customer, that might also be a solution. The vendor of the activex control might have such a setup at hand.

Bye, Olaf.
 
Thanks Olaf for the response. I pretty much understand that one needs to include any OCX or ActiveX controls needed to run the exe. But I think there is no ActiveX control used in the project (or maybe I'm just too dumb to know that [ponder]). In the sample that came with the download, there was no ActiveX control either. Just dependency files that need to be included in the project. Well, here's a part of the help file that came with it:
Add the following files to your project:

Text files from Other tab in Project Manager
Ctl32.h (mark it as "Excluded" from your project)
ThemedControls.h (mark it as "Excluded" from your project)
Themes.xml (mark it as "Excluded" from your project)
*** Don't forget to distribute these xml file together with your application! ***

Applications from Code tab in Project Manager
System.app (GDIPlusX from VFPX)
*** Don't forget to distribute these app file together with your application! ***

Programs from Code tab in Project Manager
Ctl32.prg
Ctl32_Api.prg
Ctl32_Classes.prg
Ctl32_Functions.prg
Ctl32_Structures.prg
Ctl32_Vfp2c32.prg
ThemedControls_Api.prg
ThemedControls_Structures.prg

Classes tab in Project Manager
Buttons.vcx
Ctl32.vcx
ExplorerBar.vcx
OutlookNavBar.vcx
Ribbon.vcx
ScreenTip.vcx
ThemedControls.vcx
ThemedControlsBuilders.vcx (mark it as "Excluded" from your project)
ToolBox.vcx
VFPX.vcx
ZoomNavBar.vcx
*** Don't use controls from Buttons.vcx, ExplorerBar.vcx, OutlookNavBar.vcx, ToolBox.vcx and ZoomNavBar.vcx directly because they are base classes. Use the subclassed controls in ThemedControls.vcx. ***



Before use any ThemedControl:

ThemesManager and BindWindowsEventsProxy objects used to handle themes are created automatically, but you need to destroy them and remove all API libraries from memory before finish your application.
Code:
    * Destroy ThemesManager object
    If Vartype(_Screen.ThemesManager)=="O"
       _Screen.RemoveObject("ThemesManager")
    Endif

    * Destroy BindWindowsEventsProxy object
    If Type("_vfp.BindWindowsEventsProxy")<>"U"
    _vfp.BindWindowsEventsProxy = Null
    Endif

    * Remove all API libraries from memory

    Set Library To

Basically, I've done what were stated in the help file. Have you tried using ThemedControls? They're good eye-candies but a bit difficult to implement, at least on my end. Anyways, I'll try looking for any ActiveX control that I might have missed. Maybe they're buried in there somewhere.


kilroy [knight]
philippines

"Once a king, always a king. But being a knight is more than enough."
 
Sorry, a misunderstanding on my side. I just assumed "ESReed's ThemedControls" are ActiveX. If this is a vfp project, there might be none to add. But as you post the instrctions the term "ctl32" points to usage of MSCOMCTL.OCX or Carlos Alloattis ctl32 controls, which at least where at last time I looked. This URL seems to be broken, I find som ctl32_ controls have been added to VFPX at codeplex (
I strongly assume now ESREED, that is Emerson Reed has built his controls on top of Carlos Alloattis.

I just downloaded ThemedControls now from I'll have a look but can't promise to post back soon.

Bye, Olaf.
 
Thanks again Olaf. Yes, he's Emerson (Stanton) Reed and I already emailed him last night. In his reply he informed me not to include the images I used in the ZoomNavBar control. In the first place, I did not. I don't really include images in my projects, became a habit I think. But I also mentioned in my reply to him that one or two images are larger than 96x96 pixels which is the required(?)/suggested image size. I'm going to resize them to 96x96 and see if that makes any difference. I'll post back soon.

kilroy [knight]
philippines

"Once a king, always a king. But being a knight is more than enough."
 
I got it working now. It turned out tha one of the images I used in the ZoomNavBar had a different file name. In the INIT method of the ZoomNavBar control, I wrote...
Code:
THIS.addbutton("exit","Close this application","system_close96.png")
But actually, the file was named "system_close96-1.png". I forgot I renamed it because there was a previous copy of a different image of the same name but I deleted it long before I made an EXE. Good thing the author pointed me to the right direction.

Thanks Olaf for trying. And thanks to the author (Emerson) for the assistance. Cool collection of classes, btw. [2thumbsup]

kilroy [knight]
philippines

"Once a king, always a king. But being a knight is more than enough."
 
OK,

I never would have figured that out of course. Glad you got it.

Bye, Olaf.
 
Hi Mike,

We've been so busy upgrading ALL our legacy apps and migrating ALL data to Oracle. Up to now were still in that stage but we're getting there. Still, lots of testing are needed before we can say it's 100% done. And yeah, VFP is still being used here. It's so much easy developing projects in it that's why it's still popular here. But big companies prefer to go with the current trend so "selling" myself to them is like cooking myself in a frying pan, if you know what I mean. [tongue]

Hi Olaf,

Maybe you could if given enough time. But thanks again for trying.


kilroy [knight]
philippines

"Once a king, always a king. But being a knight is more than enough."
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top