If this is your first visit to our forums, welcome!
If you are a follower of the Development Team Blog, I hope you agree that it is a great resource that is getting better all the time. Apart from giving you something new to read a couple of times each week, we are trying to create a library of information that can be accessed when needed. These days we expect a Visual DataFlex developer to do their research by first checking the documentation, then searching the Development Team Blog and finally searching our User’s Forum. Let’s explore these three ...
New to Visual DataFlex 15.1 is XML Schema support, which is cool, but what if you don't know the first thing about XML Schemas? Your first exposure to XML Schemas will most likely be a schema created by someone else. Perhaps you're expected to produce XML documents conforming to the specified schema. If you're lucky you will have been given an example of the document you're supposed to produce from your program, and maybe you can cheat a little and follow that instead of understanding ...
Updated 9-Dec-2009 at 01:48 AM by Sonny Falk
I'd like to talk about two of the changes made in our Visual DataFlex 15.1 Release Candidate ([URL="http://support.dataaccess.com/Forums/showthread.php?t=41731"]VDF15.1 RC1[/URL]). We wrote a new help section about XML namespaces (Reference Library / General Reference / XML Namespaces Primer). That's the good change. We accidentally copied the wrong XML file into our new workspace template section. That's the evil change. Now when you try to create a new workspace you get the following ...
A program crashing is something we're all painfully familiar with, but what does it really mean? [I]Crash[/I] can mean different things to different people, sometimes people even use the term [I]crash[/I] when referring to different types of problems at different times. It's often used loosely to mean anything from "the operating system rudely terminated my program", or simply "an error message was displayed (fatal or non-fatal)", or "the program stopped responding to user ...
In the [URL="http://support.dataaccess.com/forums/blog.php?b=59"]previous article[/URL] I explained how to access the workspace paths in a Create New wizard. The information is retrieved via the Studio Workspace file (.sws) that is passed to the wizard via a temporary config file. Accessing the wizard's temporary config file is explained in [URL="http://support.dataaccess.com/forums/blog.php?b=56"]part one[/URL] of this series. In this article I will talk about the ...
We try to make migration from any Visual DataFlex revision to the latest revision as smooth as possible for our developers, but one migration-related question has come up repeatedly in the forums: "Some of the files in my workspace didn't get migrated. What's going on?" The migration wizard uses the same code parser that the Studio uses to determine what to migrate. As Sonny recently discussed in his blog Under the Hood: The Studio Parser, most source code files are not autonomous, ...
In the [URL="http://support.dataaccess.com/forums/blog.php?b=56"]previous article[/URL] I introduced the config file that the Studio generates each time it launches a Create New wizard. The name and path of this config file is passed to the launched application and the file contains information about your project that is useful to a Create New wizard application. In this article I will talk in more detail about one particular section of data in the config file: the [Workspace] ...
Have you ever wanted to write your own wizard and add it to the Studio's Create New dialog? Adding a wizard application to the Create New dialog is managed by the "Configure Create New" option in the "Tools" menu. That is the easy part, But how can your wizard access the important information about your workspace that it needs in order to do anything useful? Come to think of it, how do the "standard wizards" get the Studio to open the files that they just ...
Updated 12-Nov-2009 at 02:11 PM by John van Houten
Did you know that any object can turned into an error handler object? An application can have one error object at any one time. That object is the object identified in the [I]Error_Object_Id[/I] global handle. Anytime an error occurs the [I]Error_Report[/I] event is sent to the object Id in [I]Error_Object_Id[/I]. If you change the value of [I]Error_Object_id [/I]that new value will become the error object and, upon an error, receive the [I]Error_Report[/I] event. That’s all there is to error handling. ...
This poor command has been around in Visual DataFlex for as long as anyone can probably remember. Every VDF developer knows about this command, yet it's so often misunderstood and a frequent subject in the forum. It's actually pretty well documented, the documentation was even improved a few revisions back when the command was also enhanced for smoother operation in Vista. But probably because it's so well known, you rarely consult the documentation. So I'll provide a quick primer for this command, ...
In his article, [URL="http://support.dataaccess.com/Forums/blog.php?b=53"]Visual DataFlex 15.1 Sneak Peek - XML Changes[/URL], Sonny Falk, explained that Visual DataFlex 15.1 will be using a newer XML parser (msxml6), which will allow you to perform schema validations on your documents. In addition to this we’ve made some changes in our packages which optimizes XML processing. These changes, which are not related to the new XML parser, were instigated by a recent forum [URL="http://support.dataaccess.com/Forums/showthread.php?t=39986"]discussion ...
[FONT=Verdana][SIZE=2]In my recent post [URL="http://support.dataaccess.com/Forums/blog.php?b=38"][COLOR=#000000]And here is another fine fix I’ve (almost) gotten us into[/COLOR][/URL] I attempted to present some of the issues we face any time we make changes in our product. I purposefully chose a sample that appeared to be simple and easy to change but then turned out to be neither. As software designers and developers we've all encountered this. This was meant to illustrate the kind ...
Updated 26-Oct-2009 at 12:49 PM by Dennis Piccioni
The Visual DataFlex On_Key command is the recommended technique to use when creating Hot Key assignments in your application. But there are certain key combinations that are not available to the On_Key command. For example the CTRL+SHIFT+TAB key combination cannot be assigned using On_Key. Ever since Visual DataFlex 12.1 there is an alternative way to assign a hot key by using the cCJAction class. This class is part of the CodeJock commandbar set of wrapper classes and supports a property ...
Updated 20-Nov-2009 at 01:28 PM by John van Houten
By the time this gets published, Visual DataFlex 15.1 is just about to enter Beta testing. One of the cool new things is that XML support has been updated. The changes include an internal update of the underlying MS XML standard Windows library to msxml6. And perhaps the most requested new feature is support for XML Schema validations. These changes to the XML classes can be taken advantage of immediately as you update to VDF 15.1. From a code perspective you still use the same classes ...
In [URL="http://support.dataaccess.com/forums/blog.php?b=48"]Part One[/URL] I described the problem of performing lookups for each member of an array and how to use a cache when performing lookups repeatedly with multiple arrays sharing mostly the same members. We left part one after describing a caching technique that required further optimization. In this article we will explore different array searching techniques, using the built-in VDF Search Array functions, to optimize ...
Updated 26-Oct-2009 at 11:44 AM by John van Houten
A common programming problem is the need to process sets of data that are not part of your database. Typically sets of data that are stored in arrays. If the data is structured then you would use arrays of type [I]struct[/I]. For example... [code]Struct tNameData String sName Date dDateOfBirth End_Struct tNameData[] NameData // declares an array of type tNameData [/code]Wherever you have arrays of data like this you will inevitably need ...
[I]Pointer[/I], [I]byref[/I], [I]AddressOf()[/I], what's the difference between [I]byref[/I] and [I]Pointer[/I] anyway? If you know C++ you might say that by-reference is semantically very similar to a pointer but with different syntax. In Visual DataFlex, [I]byref[/I] and [I]pointer[/I] are actually used for different purposes. This is best illustrated with [I]String[/I], consider the following code: [code] Use DfAllEnt.pkg Procedure Foo String ...
[FONT=Verdana][SIZE=2]In prior articles we’ve discussed the basics of constraints.[/SIZE][/FONT] Now it's time to put them all together. Before we get started let's review what we've covered so far. [FONT=Verdana][SIZE=2][URL="http://support.dataaccess.com/Forums/blog.php?b=17"]Constraints and Local Variables[/URL] discusses how constraints work. While the main purpose of the article was to talk about how local variables should be used within [I]OnConstrain[/I], it provides ...
To wrap up this multi-part series about arrays and structs I'll highlight a few key areas and answer some questions that came up. [URL="http://support.dataaccess.com/forums/blog.php?b=26"]Part I[/URL] starts by showing the basic use of structs and arrays, how they can be used together and as parameter & return types. [URL="http://support.dataaccess.com/forums/blog.php?b=27"]Part II[/URL] discusses how sorting and searching works with native arrays. ...
[FONT=Verdana][SIZE=2]Today we set out to answer the age old question of:[/SIZE][/FONT] [LEFT][I][FONT=Verdana][SIZE=2]Should a child be judged by the sins of their parent?[/SIZE][/FONT][/I][/LEFT] [FONT=Verdana][SIZE=2]In my previous article [URL="http://support.dataaccess.com/Forums/blog.php?b=25"]Using Expressions and Properties in Constraints[/URL] we talked about how constraints are inherited. In addition to any constraints that may be applied directly ...