This project is read-only.

home.png ThemedControls

A suite of controls created to improve the UI of your Visual FoxPro applications.


Note: this project has moved to GitHub:

Project Manager: Emerson Santon Reed

OutlookNavBar, formerly known as the Outlook2003Bar, is a very cool component included in this suite. It resembles the Outlook panel interface, making it perfect for grouping similar items in an application's UI. You’ll find working with the OutlookNavBar similar to working with a pageframe. It’s incredibly easy to use, and I think you'll agree that the results are amazing.


Buttons, a button class with two different styles (not finished yet).


ExplorerBar, a bar with group panels just like Windows XP.


ToolBox, a toolbar (similar to the new VFP ToolBox), with expand/collapse panels capability.


Another cool control in this suite is the ZoomNavBar. The current button is "zoomed" when the mouse passes over it and you can add a "menu" to be displayed when button is clicked.



Ribbon, a new menu style just like the one in Microsoft Office 2007 (not finished yet).


Here you can see a sample video showing some ThemedControls features.
ThemedControls video

vfpxreleasesmall.png Latest Release of ThemedControls

Last edited May 2, 2017 at 2:52 PM by DougHennig, version 23


Javielino Mar 24, 2014 at 7:25 PM 
Excelente trabajo Gracias por tu aporte y felicitaciones.

oiBio Aug 30, 2013 at 10:22 AM 
Ok i think i found a way to enable design-time resize.. Just but this Code in the Init-Event of the oNavBar
LOCAL ln_Original_Width, ln_Width, ln_i
m.ln_Width = THIS.Width
m.ln_Original_Width = 200
IF m.ln_Width <> m.ln_Original_Width
*- Anchor von allen Elementen zurücksetzen
LOCAL ARRAY larr_SearchbarAnchor[THIS.ControlCount]
FOR m.ln_i = 1 TO THIS.ControlCount
IF TYPE("THIS.Controls(m.ln_i).Anchor") = 'N'
m.larr_SearchbarAnchor[m.ln_i] = THIS.Controls(m.ln_i).Anchor
THIS.Controls(m.ln_i).Anchor = 0
*- Width auf Original setzen
THIS.Width = m.ln_Original_Width
*- Anchor aller Elemente wiederherstellen
FOR m.ln_i = 1 TO THIS.ControlCount
IF TYPE("THIS.Controls(m.ln_i).Anchor") = 'N'
THIS.Controls(m.ln_i).Anchor = m.larr_SearchbarAnchor[m.ln_i]
*- neue Width wiederherstellen
THIS.Width = m.ln_Width


and remove your line "This.Splitter.Width = This.Width - 2" from the resize event.

DougHennig Aug 29, 2013 at 3:27 PM 
@oiBio: You can resize it at design time but then you have to manually resize all of the contained controls.

oiBio Aug 29, 2013 at 7:27 AM 
Thanks Doug!
So its not possible to set the width in disign time? i have to use the workaround and change the width at runtime?

DougHennig Aug 28, 2013 at 5:53 PM 
@oiBio: Before changing the width in code, save the Anchor value and set it to 0. Then after changing the width, restore Anchor.

lnAnchor = Thisform.oNavBar.Anchor
Thisform.oNavBar.Anchor = 0
Thisform.oNavBar.Width = 275
Thisform.oNavBar.Anchor = lnAnchor


oiBio Aug 28, 2013 at 1:56 PM 
Hey there,

at the moment im try to use the OutlookNavBar but for me its to small and i want to strech it a bit.
I need a width of 275 but if i do this at desing-time, the control wont resize the "inner" controls like Navigation Pane and Panels etc..
When i change the width at runtime it works (ie, in a timer with interval 1). But if i resize the form, the OutlookNavBar hat a width of 200 again :(

Does anyone know how to handle this?
Thanks ;)

mathiasbanda Aug 28, 2013 at 12:39 PM 
Hi all, like most of you I am a big fun of themed controls. I am trying to figure out an issue on the imgTitle graphic control used on the explorerbar class. It is transparent and serves to distinguish between and expanded and closed control. I have several of these explorerbars on a top form and I have noticed that changing the RotateFlip property on one of the controls affects all of them on that form. They all start flipping like the the one changed except they don't stay flipped permanently. They jump back to 'normal' it's odd, any clues, ideas on how to keep them stable please

Edwin65 Nov 8, 2012 at 9:48 PM 
Good afternoon, where I can get a manual or help about the use of ThemedControls.

Thanks for your helps.

jerryblue Aug 8, 2011 at 10:22 PM 
Como puedo cambiar la opcion por defecto de el tema azul a negro
Mil Gracias

vchigne Jul 15, 2011 at 9:15 PM 
Great set of controls! I have chaged the Explorer control to allow instantiation without a explorer bar. BTW how about a collapse property with a nice button for Ribbon? Sometimes I need the maximum screen real state.

sandrodavid Jun 7, 2011 at 6:06 AM 
Pueden enviar un codigo ejemplo de como utilizar y aplicar a form y eventos..

douglasg76 May 6, 2011 at 6:23 AM 
I would like to use themedform class, but every time I create a form that sends me an error class, and I'm doing a separate thing but I asked several ctl32.prg and copy there too, but even so I send the error , have you any example of that kind, but only the working class, or need to copy all this time? where this alone? from already thank you very much.

Someone have use the class themedcontrol ? only this, i want to used.


ddefrain Mar 11, 2011 at 8:18 PM 
Hi There!...
Why Office 2003 Olive, and Office 2003 Silver Themes does not apply to Ribbon Menu?, I mean if i change the current theme to one of them like Olive 2003 or Silver 2003 the Ribbon menu stays in blue theme.
Thanks for This Niiiiiiiiiiiiceee Ribbon!!!

kinki2046 Dec 15, 2010 at 2:33 PM 
I have download the themedControl and unzip and paste it in local c, c:/,
but, it prompt for error message for invalid path or file name in the main.prg in line
Set Default To (lcDefaultPath)

Who can help me figure out?
please provide me the step to run it.


EmersonReed Jul 16, 2010 at 2:07 AM 
Hi Roberto.
I've added the AddButton method in the 3.5.8 version.
Thanks a lot for the suggestion and the code to implement it.

ImRicoh May 20, 2010 at 9:18 PM 
Hola Emerson, tu class OutlookNavBar me pace genial, pero dime poque no le agregaste la opcion Añadir boton ya que yo cargo el menu de un dbf y no uso los builders, algo parecido a esto

Procedure AddButton(cCaption, cPicture16, cPicture24, cKey)
With This
Thisform.LockScreen = .T.
.Panes.PageCount = .Panes.PageCount + 1
.UpdatePane(.Panes.PageCount, cCaption, cPicture16, cPicture24, cKey)
Thisform.LockScreen = .F.

Roberto Reategui Kanashiro

hkal Apr 13, 2010 at 4:19 AM 
I am unable to start my application in Win 7 (WinXp is Ok), I have the error : LIBRARY FILE C:\USERS\...\TEMP\VFP2C32.FLL IS INVALID.,
which is caused by line 27 of CTL32_VFP2C32.prg (Set Library To (m.lcFile) Additive).

How can I fix it ?

EmersonReed Feb 19, 2010 at 5:18 PM 
You can download the controls here:

ejimaster01 Feb 18, 2010 at 4:27 AM 
Alguien me púede ayudar

ejimaster01 Feb 18, 2010 at 4:27 AM 
Como los descargo los controles

antoniotrivi Sep 4, 2009 at 5:28 PM 
I am using the controls recently and I like more and more, but I made some "adjustments" that may be useful to someone:
Sometimes I prefer the control explorergroup outside the "container", directly on a form and fails because it always seeks methods in the container (this.parent.Scroll, etc...) to be used independently, I have modified all lines that refer to the object. Parent (ExplorerGroup.Clicked, ...) checking first if the container in which is has the properties / methods that are called:
IF PEMSTATUS (this.parent, "SCROLL", 5)
THIS.Parent.Scroll (. Top,. Height)
and so with each type of container (ExplorerGroup).
After I use the control ExplorerGroup, freely in any place of form.

EmersonReed Jun 26, 2009 at 8:35 PM 
Hi Toni.
There's an image control inside ExplorerBar and ExplorerGroup that stretch at runtime "to do" the background gradient.
Have you checked if some property of imgBackground in this two controls was accidentally changed or some method code in any control was overrided?
Have you changed the width of ExplorerBar or ExplorerGroup?

tonifeltman Jun 24, 2009 at 5:28 PM 
Anyone have trouble with the explorer bar not showing the background color? I have the containers (groups) but my background is the form background color. I can cut and paste to another form and it shows the background color? Any clues?

SteveW Jun 19, 2009 at 8:52 PM 
Thanks for the reply.

I have been trying to reproduce the behaviour described above with as little overhead as possible without success. My original statement was relevant to a very large project, so I think there may be other factors involved. When I have more information I will post it here.

In the mean-time I hope Carlos is OK!

EmersonReed Jun 19, 2009 at 6:14 PM 
Hi Steve.
Who could help us to find what is happening is Carlos Alloatti (the Ctl32 creator), but I'm trying to contact him since November/2008 without success.

SteveW Jun 12, 2009 at 6:03 PM 
Great Work Here!!

For reference, I am utilising the ctl32monthcalendar control included within the ctl32.vcx which is part of this download. I have found that if the control is on a form which also has an ActiveX control on it, and an OLE Exception Code 0 error is thrown for some reason on the ActiveX control, and an ON ERROR statement has been processed, then VFP "hangs". To resolve the problem, utilizing TRY, CATCH, FINALLY blocks around code that updates aspects of the ActiveX control resolves the issue.
I would like to know what causes the conflict with the ON ERROR statement in my code if possible. I have not been able to track anything down within the ctl32 code as yet.

Thanks again.