I am very excited to be presenting at the WxDevCon in Nashville, TN – Novemeber 7-11,2012. This is a very unique format that include over the should developer session between now and the event, and the source code for an entire suite of applications that we will be building for the non profit sector over next six months. Read on for more information or if you are in a hurry and want to make sure you get a seat for this great event head on over to their website now.

Continue reading »

 
PaperCamera2012-04-14-10-36-23

My application has a “hidden” hotkey that opens up a special User Activity screen anytime the user presses Control F12, while on the main menu. In clarion I did this by setting an alert key for the window, then in the Events.AlertKey embed point I tested to see if the Control F12 was pressed and opened the window.  Like this:

IF Keycode() = CtrlF12
 Start(BrwUserActivity,25000)
END

So I do that in WinDev? Buttons can have shortcut keys so that’s a start. I created a button, and on the GUI tab, sat its shortcut key to Control F12. I placed my code on the button and it fired whenever the user pressed Control F12.

So then I hid the button, after all the goal was a “hidden” feature. And that is when I found out that the shortcut key is not active when the button is hidden.   hmm…. That’s ok, it just so happens that you can place a control off of the window in WinDev and it doesn’t display and you don’t have to set it to not visible. Sure enough that worked, no button showing and my code fired on Control F12. Then I maximized the window……

And my button appeared.. ahhhrrrggg…..

After a brief tantrum I realized if I placed the button to the right of the window, and set the anchor to move to the right then the button would always remain off the window.

And tada!!!! I had it, a hidden hotkey feature.

So brief recap; place a button to the right of the window, set its anchor to move to the right, set the shortcut key to the key you want, and place your code on the button. That’s all there is to it.

Now, back to your regular schedule program….

 
PaperCamera2012-04-14-10-36-23

When I want to display a database field as text (not an entry field) I’ve been creating a static control and then to setting the value in the code by doing something similar to:

STC_Field = MyTableField

Then I remembered “If it seems hard, you are probably doing it wrong!” and decided that style system probably has a better way. Sure enough, there is even a default style for it!!! So now I just create an entry field linked to the database field and chose the “EDT_No_Bckgrd” style, no code, no fuss!

BTW, remember it will still be editable, so be sure to set the State to Read-only on the GUI tab of the control.

Don’t know if this is really a tip, or just shows how thick skulled I am.

Now, back to your regular schedule program….

 
PaperCamera2012-04-14-10-36-23

You can select a specific row of a table control via WX code as follows:

TableSelectPlus(TableControl,5)

The only problem is that if you have any code in the “Row Selection” process for the table control (for instance to enable/disable buttons based on values from the table), it does not get executed. The online documents do point this out in the notes section, however they don’t tell you how to get your code to execute. You might be tempted to just repeat the code from “row selection” after you do a TableSelectPlus, or (and let’s hope this is the case) you are a little better programmer and decide to refactor the code as a local procedure and call it from both places. Well there is an even easier option! The ExecuteProcess function forces an action to take place, so we change our code to:

TableSelectPlus(TableControl,5)
ExecuteProcess(TableControl,trtSelection)

Now the code selects row 5 of the table, then it forces a Row Selection event to be triggered forcing our code in “Row Selection” to be executed.

Now, back to your regular schedule program….

 
PaperCamera2012-04-14-10-36-23

Since WX treats screen controls as strings (including columns of a table)

Trace(NumToString(COL_HstInvHdrSysId,"012d"))

does not work. You don’t get an error, it just doesn’t do anything because it’s not a number. So if COL_HstInvHdrSysId contains 123456 the result will be 123456.

instead you have to do:

nHstInvHdrSysId is int = COL_HstInvHdrSysId
Trace(NumToString(nHstInvHdrSysId,"012d"))

Now you will get expected result of 000000123456

Now, back to your regular schedule program….

 


Photo by simply.jessi

I spent yesterday at .Net developers conference (or behind the walls of the evil empire). The workshop I attended was an introduction to developing business applications for Windows 8 Metro using Visual Studio 11. Read on for my take away from the workshop

Continue reading »

 


Photo by SOYBEANTOWN

While working on the Document Viewer Component I ran into a few issues with the standard WinDev window position restore logic with dual monitors, so I created a couple global procedure to work around the issues.

Continue reading »

 


Photo by MoneyBlogNewz

In case you have been living under a rock, SEO (Search Engine Optimization) is a very important topic for any website. Having fresh content is a powerful method of improving SEO, such as adding a list of the most recent blob post to your home page. With a few simple changes to your Apache Config files, you can use Server Side Includes to run PHP code snippets inside your standard HTML files. Why would I want to do that? My main website (http://www.thenextage.com) is a simple HTML website that I maintain with Dreamweaver. Instead of converting the site to PHP or WebDev, I wanted to keep the site simple and easy to maintain.  This article will explain how I am mixing PHP code into standard HTML files.

Continue reading »

 

Document Viewer Component
Photo by PopCultureGeek.com

Early in my career I created a custom document storage solution as part of several of my applications. This led to the Clarion Imaging Templates and later the Imageman Templates, both using third party OCX’s. Recently one of those customers wanted some enhancements to their application, and I decided I would rather spend a couple of days converting the application into WinDev, than adding features in C6 that are built into WinDev. My first step was to explore the possibilities of using WinDev native functions to create a document viewer instead of using a third party library. I was pleasantly surprised at how easy it was and how much functionality was supported directly by WinDev.  The resulting Document Viewer is very light weight and handles most of the normal requirements, its not as powerful as I would like, put it will do for this project until I create a Document Viewer using a third party .net library at some point in the future. At the end of the article you will find a download link for the Component and the source code.

Continue reading »

 


Photo by cmoewes

Many of my clients are asking for updated applications and modern features, that they have seen in some of my latest WinDev Applications. As I began making proposals for several of these conversion projects, I realized that I need a standard general comparison of some of the look and feel, and features that would be include in any application that I convert from Clarion to WinDev. The article that follows is the basis of that comparison.

The purpose of this document is to offer a brief overview of some of the key features that will be added to a Clarion application when it is converted to WinDev. These features will add a modern look and feel to your application versus the original application developed in Clarion, as well as add a number of features that either were not previously available or required the investment in third-party products to make possible. It is not an exhaustive list of the features of WinDev or even of the AAF features, or a Clarion versus Windev analysis, it is simple a review of some of the key features of WinDev that are either automatically added or easily added to an Application when converting it, that should be of interest to developers and users of Clarion Applications.

Continue reading »

© 2012 NextAge Consulting
Home | Services | Blog | About Us
Suffusion theme by Sayontan Sinha