<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://dataflex.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=217.149.208.61</id>
	<title>DataFlex Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://dataflex.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=217.149.208.61"/>
	<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Special:Contributions/217.149.208.61"/>
	<updated>2026-04-21T17:47:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://dataflex.wiki/index.php?title=DataFlex.Wiki_indepth&amp;diff=2423</id>
		<title>DataFlex.Wiki indepth</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=DataFlex.Wiki_indepth&amp;diff=2423"/>
		<updated>2011-02-01T17:08:09Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: Undo revision 2420 by DerekForehead (Talk) remove spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDFWiki is about sharing knowledge about Visual DataFlex .&lt;br /&gt;
&lt;br /&gt;
==wiki technologies==&lt;br /&gt;
* Wikipedia - collaborating on a online encyclopedia&lt;br /&gt;
* Ward Cunningham - &amp;quot;The wiki way&amp;quot; - http://www.amazon.com/Wiki-Way-Quick-Collaboration-Web/dp/020171499X&lt;br /&gt;
* Mediawiki - running wikipedia - http://www.mediawiki.org/wiki/MediaWiki&lt;br /&gt;
&lt;br /&gt;
==Other cool wikis== &lt;br /&gt;
*http://www.wikipedia.org - an online encyclopedia&lt;br /&gt;
*http://c2.com/cgi/wiki - original wiki - inspiration from the masters&lt;br /&gt;
*http://ajaxpatterns.org - a list of good &amp;quot;design patterns&amp;quot; for the AJAX world&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Collaboration in the DataFlex community ==&lt;br /&gt;
*news://news.dataaccess.com&lt;br /&gt;
*The whitepapers (here Data Access do all the hard work)&lt;br /&gt;
*http://vdf-guidance.com (use twitter @vdfguidance to keep up with news!)&lt;br /&gt;
*VdfQuery&lt;br /&gt;
*SCANDUC (and other user conferences!)&lt;br /&gt;
*Blogs. They are sources for good information.&lt;br /&gt;
&lt;br /&gt;
= VDFWiki =&lt;br /&gt;
&lt;br /&gt;
VdfWiki started its life as a response to a debate started at [http://blog.front-it.dk/2007/07/03/is-there-enough-education-in-visual-dataflex/ Charlotte&#039;s web]&lt;br /&gt;
&lt;br /&gt;
VdfWiki is about sharing knowledge about Visual DataFlex in a fast way (&#039;wiki&#039; is &#039;fast&#039; in hawaiaan).&lt;br /&gt;
&lt;br /&gt;
== Living in the DataFlex ecosystem ==&lt;br /&gt;
* Your contributions can be protected (We have administrators that will govern this)&lt;br /&gt;
* the newsgroups are still great! We can ask questions there&lt;br /&gt;
* the trainings from Data Access are still great! We can still save a lot of time learning from the data access guys.&lt;br /&gt;
* The whitepapers are still good! They are a good source of information&lt;br /&gt;
* www.vdf-guidance.com still has its use! vdf-guidance.com is good for sharing code and projects. &lt;br /&gt;
* The blogs are still great. People can still share news and articles there!&lt;br /&gt;
&lt;br /&gt;
== Organisation of the wiki ==&lt;br /&gt;
&lt;br /&gt;
The frontpage and selected areas have been protected&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Administrators ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Check [[Special:Listusers|the list of users]] to see which users have &amp;quot;sysop&amp;quot; rights. --[[User:Jka|Jka]] 12:49, 25 November 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using VdfWiki ==&lt;br /&gt;
&lt;br /&gt;
Checkout [[Help:Contents]] and [[Help:Editing]] for more information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Getting an account ===&lt;br /&gt;
everybody can register for an account.&lt;br /&gt;
&lt;br /&gt;
To get an account you can just press &amp;quot;create account&amp;quot; in the upper right corner of vdfwiki. &lt;br /&gt;
&lt;br /&gt;
If you have experience from contributing to http://wikipedia.org , then you should feel at home at VdfWiki (it is the same system - mediawiki).&lt;br /&gt;
&lt;br /&gt;
Note that if you forgot your password , then the wiki can send your password to the email account you supplied when creating the account.&lt;br /&gt;
&lt;br /&gt;
=== Posting guidelines ===&lt;br /&gt;
The administrators have setup the following guidelines [[VdfWiki_guidelines]] . Please respect these guidelines to make this a better wiki for everyone.&lt;br /&gt;
&lt;br /&gt;
=== Reverting content ===&lt;br /&gt;
If you wrote something wrong on a page then you can click &#039;history&#039; for the page. choose an earlier version that works - then save it. You will be notified that later edits will be lost. &lt;br /&gt;
&lt;br /&gt;
=== Watching pages ===&lt;br /&gt;
First of all you can check all &#039;recent changes&#039;  by clicking the link in the navigation menu.&lt;br /&gt;
&lt;br /&gt;
As the wike grows you can add pages to you watch list by clicking &#039;watch&#039; page. Then you can monitor changes for that page in your &#039;watch list&#039;.&lt;br /&gt;
&lt;br /&gt;
= Where to go from here? =&lt;br /&gt;
&lt;br /&gt;
*Create a user account .Put information about your self online :)&lt;br /&gt;
*Start contributing! Do you have something to share?&lt;br /&gt;
*Discuss what you want to see in the wiki at http://vdfwiki.com/index.php?title=Talk:Main_Page&lt;br /&gt;
*Take a look at http://vdfwiki.com/index.php?title=Special:Wantedpages&lt;br /&gt;
*Help categorize pages at http://vdfwiki.com/index.php?title=Special:Uncategorizedpages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:VDFWiki]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=DataFlex.Wiki_indepth&amp;diff=2373</id>
		<title>DataFlex.Wiki indepth</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=DataFlex.Wiki_indepth&amp;diff=2373"/>
		<updated>2009-09-14T08:09:07Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Collaboration in the DataFlex community */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDFWiki is about sharing knowledge about Visual DataFlex .&lt;br /&gt;
&lt;br /&gt;
==wiki technologies==&lt;br /&gt;
* Wikipedia - collaborating on a online encyclopedia&lt;br /&gt;
* Ward Cunningham - &amp;quot;The wiki way&amp;quot; - http://www.amazon.com/Wiki-Way-Quick-Collaboration-Web/dp/020171499X&lt;br /&gt;
* Mediawiki - running wikipedia - http://www.mediawiki.org/wiki/MediaWiki&lt;br /&gt;
&lt;br /&gt;
==Other cool wikis== &lt;br /&gt;
*http://www.wikipedia.org - an online encyclopedia&lt;br /&gt;
*http://c2.com/cgi/wiki - original wiki - inspiration from the masters&lt;br /&gt;
*http://ajaxpatterns.org - a list of good &amp;quot;design patterns&amp;quot; for the AJAX world&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Collaboration in the DataFlex community ==&lt;br /&gt;
*news://news.dataaccess.com&lt;br /&gt;
*The whitepapers (here Data Access do all the hard work)&lt;br /&gt;
*http://vdf-guidance.com (use twitter @vdfguidance to keep up with news!)&lt;br /&gt;
*VdfQuery&lt;br /&gt;
*SCANDUC (and other user conferences!)&lt;br /&gt;
*Blogs. They are sources for good information.&lt;br /&gt;
&lt;br /&gt;
= VDFWiki =&lt;br /&gt;
&lt;br /&gt;
VdfWiki started its life as a response to a debate started at [http://blog.front-it.dk/2007/07/03/is-there-enough-education-in-visual-dataflex/ Charlotte&#039;s web]&lt;br /&gt;
&lt;br /&gt;
VdfWiki is about sharing knowledge about Visual DataFlex in a fast way (&#039;wiki&#039; is &#039;fast&#039; in hawaiaan).&lt;br /&gt;
&lt;br /&gt;
== Living in the DataFlex ecosystem ==&lt;br /&gt;
* Your contributions can be protected (We have administrators that will govern this)&lt;br /&gt;
* the newsgroups are still great! We can ask questions there&lt;br /&gt;
* the trainings from Data Access are still great! We can still save a lot of time learning from the data access guys.&lt;br /&gt;
* The whitepapers are still good! They are a good source of information&lt;br /&gt;
* www.vdf-guidance.com still has its use! vdf-guidance.com is good for sharing code and projects. &lt;br /&gt;
* The blogs are still great. People can still share news and articles there!&lt;br /&gt;
&lt;br /&gt;
== Organisation of the wiki ==&lt;br /&gt;
&lt;br /&gt;
The frontpage and selected areas have been protected&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Administrators ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Check [[Special:Listusers|the list of users]] to see which users have &amp;quot;sysop&amp;quot; rights. --[[User:Jka|Jka]] 12:49, 25 November 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using VdfWiki ==&lt;br /&gt;
&lt;br /&gt;
Checkout [[Help:Contents]] and [[Help:Editing]] for more information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Getting an account ===&lt;br /&gt;
everybody can register for an account.&lt;br /&gt;
&lt;br /&gt;
To get an account you can just press &amp;quot;create account&amp;quot; in the upper right corner of vdfwiki. &lt;br /&gt;
&lt;br /&gt;
If you have experience from contributing to http://wikipedia.org , then you should feel at home at VdfWiki (it is the same system - mediawiki).&lt;br /&gt;
&lt;br /&gt;
Note that if you forgot your password , then the wiki can send your password to the email account you supplied when creating the account.&lt;br /&gt;
&lt;br /&gt;
=== Posting guidelines ===&lt;br /&gt;
The administrators have setup the following guidelines [[VdfWiki_guidelines]] . Please respect these guidelines to make this a better wiki for everyone.&lt;br /&gt;
&lt;br /&gt;
=== Reverting content ===&lt;br /&gt;
If you wrote something wrong on a page then you can click &#039;history&#039; for the page. choose an earlier version that works - then save it. You will be notified that later edits will be lost. &lt;br /&gt;
&lt;br /&gt;
=== Watching pages ===&lt;br /&gt;
First of all you can check all &#039;recent changes&#039;  by clicking the link in the navigation menu.&lt;br /&gt;
&lt;br /&gt;
As the wike grows you can add pages to you watch list by clicking &#039;watch&#039; page. Then you can monitor changes for that page in your &#039;watch list&#039;.&lt;br /&gt;
&lt;br /&gt;
= Where to go from here? =&lt;br /&gt;
&lt;br /&gt;
*Create a user account .Put information about your self online :)&lt;br /&gt;
*Start contributing! Do you have something to share?&lt;br /&gt;
*Discuss what you want to see in the wiki at http://vdfwiki.com/index.php?title=Talk:Main_Page&lt;br /&gt;
*Take a look at http://vdfwiki.com/index.php?title=Special:Wantedpages&lt;br /&gt;
*Help categorize pages at http://vdfwiki.com/index.php?title=Special:Uncategorizedpages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:VDFWiki]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Portal:Development_Tools&amp;diff=2356</id>
		<title>Portal:Development Tools</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Portal:Development_Tools&amp;diff=2356"/>
		<updated>2009-02-19T17:50:37Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Crystal Report Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For any Dataflex Developer there are a range of tools useful for many situations.&lt;br /&gt;
&lt;br /&gt;
==Data Access Tools==&lt;br /&gt;
[[Data Access]] provide a core of development tools vital to Dataflex development.&lt;br /&gt;
*[[Visual DataFlex Studio]]&lt;br /&gt;
*[[Database Builder]]&lt;br /&gt;
*[[Database Explorer]]&lt;br /&gt;
&lt;br /&gt;
==Third Party Development Environments==&lt;br /&gt;
Other tools have been developed by the dataflex community over the years.  These tools frequently take inspiration from the larger development community and often preview features which eventually make it into the official VDF Studio.&lt;br /&gt;
*[[Eclipse]]&lt;br /&gt;
*[[The Hammer]]&lt;br /&gt;
&lt;br /&gt;
==Dataflex Libraries==&lt;br /&gt;
*[[VDFQuery]]&lt;br /&gt;
*[[StarZen&#039;s Wizard]]&lt;br /&gt;
*[[StarZen&#039;s Date form control]]&lt;br /&gt;
*[[Evolution]]&lt;br /&gt;
*[[cWindowsEx Framework]]&lt;br /&gt;
&lt;br /&gt;
== Crystal Report Tools ==&lt;br /&gt;
*[[Mass Verify]] Change database locations, Verify Database on hundreds of reports,...&lt;br /&gt;
*[[Crystal Spellcheck]] Check Crystal Reports for Typo&#039;s&lt;br /&gt;
*[[Mass Convert]] Convert Native DF Crystal Reports to SQL&lt;br /&gt;
*[[Mass S&amp;amp;R]] Search and Replace text in your Crystal Reports&lt;br /&gt;
*[http://www.milletsoftware.com/index.htm Millet Software Crystal Reports tools]&lt;br /&gt;
&lt;br /&gt;
==Other Tools==&lt;br /&gt;
*[[VDF Structure Viewer]]&lt;br /&gt;
*[[Version Control]]&lt;br /&gt;
*[[File Comparison]]&lt;br /&gt;
*[[Text Editors]]&lt;br /&gt;
*[[SFS Compare]] Compare and Modify Database Structures&lt;br /&gt;
&lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Portal:Development_Tools&amp;diff=2355</id>
		<title>Portal:Development Tools</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Portal:Development_Tools&amp;diff=2355"/>
		<updated>2009-02-19T17:50:15Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Crystal Report Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For any Dataflex Developer there are a range of tools useful for many situations.&lt;br /&gt;
&lt;br /&gt;
==Data Access Tools==&lt;br /&gt;
[[Data Access]] provide a core of development tools vital to Dataflex development.&lt;br /&gt;
*[[Visual DataFlex Studio]]&lt;br /&gt;
*[[Database Builder]]&lt;br /&gt;
*[[Database Explorer]]&lt;br /&gt;
&lt;br /&gt;
==Third Party Development Environments==&lt;br /&gt;
Other tools have been developed by the dataflex community over the years.  These tools frequently take inspiration from the larger development community and often preview features which eventually make it into the official VDF Studio.&lt;br /&gt;
*[[Eclipse]]&lt;br /&gt;
*[[The Hammer]]&lt;br /&gt;
&lt;br /&gt;
==Dataflex Libraries==&lt;br /&gt;
*[[VDFQuery]]&lt;br /&gt;
*[[StarZen&#039;s Wizard]]&lt;br /&gt;
*[[StarZen&#039;s Date form control]]&lt;br /&gt;
*[[Evolution]]&lt;br /&gt;
*[[cWindowsEx Framework]]&lt;br /&gt;
&lt;br /&gt;
== Crystal Report Tools ==&lt;br /&gt;
*[[Mass Verify]] Change database locations, Verify Database on hundreds of reports,...&lt;br /&gt;
*[[Crystal Spellcheck]] Check Crystal Reports for Typo&#039;s&lt;br /&gt;
*[[Mass Convert]] Convert Native DF Crystal Reports to SQL&lt;br /&gt;
*[[Mass S&amp;amp;R]] Search and Replace text in your Crystal Reports&lt;br /&gt;
*[http://www.milletsoftware.com/index.htm Millet Software Crystal Reports tools]]&lt;br /&gt;
&lt;br /&gt;
==Other Tools==&lt;br /&gt;
*[[VDF Structure Viewer]]&lt;br /&gt;
*[[Version Control]]&lt;br /&gt;
*[[File Comparison]]&lt;br /&gt;
*[[Text Editors]]&lt;br /&gt;
*[[SFS Compare]] Compare and Modify Database Structures&lt;br /&gt;
&lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Upgrading_workspaces_to_a_newer_Visual_DataFlex_version&amp;diff=2269</id>
		<title>Upgrading workspaces to a newer Visual DataFlex version</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Upgrading_workspaces_to_a_newer_Visual_DataFlex_version&amp;diff=2269"/>
		<updated>2008-12-18T16:46:58Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Tips for speeding it all up */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Upgrade pains ===&lt;br /&gt;
&#039;&#039; by Wil van Antwerpen &#039;&#039;&lt;br /&gt;
==== Upgrading workspaces ====&lt;br /&gt;
This is a subject that comes to revisit you at times and there are several ways in which you can tackle this little beastie. Ever since VDF8 there is a special wizard that helps you in migrating your applications from one version to another. &lt;br /&gt;
However simple this event may seem for small projects, once your project is a little bigger you do want to plan this carefully. You do not want to give your end-users the typical &amp;quot;we added this and broke something else&amp;quot; experience that all too often happens. Does that sound familiar? Then have a look at the tips below.. If not, then you&#039;re the perfect developer and this doesn&#039;t count for you.&lt;br /&gt;
&lt;br /&gt;
==== Decisions, decisions ====&lt;br /&gt;
Does the new version of Visual DataFlex warrant you to upgrade? No I&#039;m not joking, this is a serious question. You can&#039;t just put your users on every new version unless you only have a few end users or the deployment of applications is under very tight control (for example when using Remote Desktop/Citrix )&lt;br /&gt;
&lt;br /&gt;
There are several ways in which you can view this. &lt;br /&gt;
# Bleeding edge, deploy beta software. Never do this unless you have an EXTREMELY good reason to do so. You can put your users in a world of hurt by doing this. Is that one feature really worth it?&lt;br /&gt;
# Stay up to date all the time... (DAW loves you!) This seems like a very nice goal and is only feasible if you have a product that is in tight control deployment wise. If you have to deploy at a thousand locations then this isn&#039;t likely for you.. (you don&#039;t want to overload your support desk or do you?)&lt;br /&gt;
# Stay one version behind.. This is a more traditional approach where you take the time for the product to evolve and for your development and Q&amp;amp;A teams to find the version specific flaws. This works fine for most products, but is less do-able with Visual Dataflex. Why? DAW does not have the habit of patching older versions -even while they claim to support it- so that&#039;s a downside of this approach. Instead they tell you to move over to the newer betterer version (with newer bugs too... DAW are you reading this? Do YOU want us to update more often so YOU can sell more client licenses? Then make this scheme work and port your patches into all &#039;&#039;supported&#039;&#039; versions!)&lt;br /&gt;
# Switch on over when a good stable major version is released with enough new in there to make your users happy. &lt;br /&gt;
So for example switch from VDF 11.1 to VDF 14.0. This means you don&#039;t have to wait on your last version perse.. pretty soon for example you could change this from 11.1 to VDF14.1 if that fancies you more.&lt;br /&gt;
&lt;br /&gt;
Suppose you already guessed what my favorite is? No? Correct, I&#039;m on that last scheme, but don&#039;t let that stop you from following your own path. It works for me, that doesn&#039;t mean another upgrade scheme doesn&#039;t work for you.&lt;br /&gt;
&lt;br /&gt;
==== Smooth upgrades ====&lt;br /&gt;
How can you make your upgrade easier to tackle? &lt;br /&gt;
Well.. for starters, by migrating your workspace using the wizard -in each released version- to a new location you get to see how much work it will be. There&#039;s an overview screen that displays files included, files excluded and (drumroll..) warnings. That last one is your target. Open it and look at all of the problems the migration wizard found.&lt;br /&gt;
Check them and see if they make sense. If they do make sense, then &#039;&#039;&#039;make the correction in the source workspace&#039;&#039;&#039;.&lt;br /&gt;
Yes you read that correctly by making your source workspace more compliant to the wizard, you make your life ALOT easier.&lt;br /&gt;
When you&#039;ve identified all of the problems (and made many changes to your source workspace) do check your changes into your version control code system of choice. (*)&lt;br /&gt;
&lt;br /&gt;
When you are done with removing the warnings.. don&#039;t finish the wizard (or delete the results) but instead rerun the wizard. Check that your edits have improved the migration wizards result.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Rinse repeat &#039;&#039;&#039; Rerun the wizard as many times as you need to bring the number of warnings down to a number that satisfies your goal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Congratulations, you have now offloaded some upgrade pains to your current workspace and even if you do not get the chance to upgrade now (time constraints) your life will be easier the next time when you do get a chance.&lt;br /&gt;
Not only this, but when you do start the actual migration, your codebase won&#039;t change that much, making it easier to track the upgrade changes.&lt;br /&gt;
&lt;br /&gt;
(*) If you do not use a version control system yet, then do yourself a real pleasure and use file comparison software to make sure that there are no unintended edits! Better even, go get yourself on [[Version Control]] now!&lt;br /&gt;
&lt;br /&gt;
==== Tips for speeding it all up ====&lt;br /&gt;
* The new studio is not always as smart as the older ones.. it is much more pernicky when it can&#039;t find something. For example if you did not include all of the subclass definitions in your view, then the VDF12+ studio whines alot and can&#039;t draw your view in the designer. However if you open such a view in -say VDF10.1 (as long as its pre vdf12- then it draws perfectly. What gives? Well .. let&#039;s not go there and tell you instead that you can have the VDF10.1 Studio write out all those missing include files by just saving a space in the good ol&#039; Studio. Another benefit is that other parts of the source gets updated as well ( Think of things like: Set Server to (OrderHea(self)) --&amp;gt; Set Server To OrderHea  )&lt;br /&gt;
* Move class definitions that ended up in your views and reports and put them in their own files. The studio doesn&#039;t like this type of construct. If you nested your class definition in your view, it is likely to cause your view not to be able to render itself in the designer.&lt;br /&gt;
* Use the latest migration wizard you can get your hands on. The VDF14.1 wizard will catch more as the VDF14.0 one. Even if you are eventually going to migrate to VDF14.0, use the one from 14.1 for refining your code.&lt;br /&gt;
&lt;br /&gt;
==== External links ====&lt;br /&gt;
&lt;br /&gt;
* Clean up your meta tags using the [http://www.vdf-guidance.com/ContribPage.asp?Page=SOFTGENCLEANMARK&amp;amp;ContribRecId=115 Cleanmarkers] project over at [http://www.vdf-guidance.com VDF-Guidance]&lt;br /&gt;
&lt;br /&gt;
* Why doesn&#039;t that webapp work in the newer VDF.. [[Object required global.asa error]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Subversion&amp;diff=2252</id>
		<title>Subversion</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Subversion&amp;diff=2252"/>
		<updated>2008-11-24T16:39:47Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* See Also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Subversion&#039;&#039;&#039; is a popular [[Open Source]] [[Version Control]] system. &lt;br /&gt;
&lt;br /&gt;
==Standard Settings==&lt;br /&gt;
The standard SVN port is 3690.&lt;br /&gt;
&lt;br /&gt;
A good SVN client for [http://en.wikipedia.org/wiki/Microsoft_Windows Windows] is &#039;&#039;&#039;Tortoise&#039;&#039;&#039; SVN.&lt;br /&gt;
&lt;br /&gt;
==Omitting data files==&lt;br /&gt;
When coding [[Dataflex]] with the native database, then we do not want [[.dat]] files in version control. (They will take up too much space on the server in different versions). To solve this we  need to tweak the svn setup.&lt;br /&gt;
&lt;br /&gt;
The Global Ignore Pattern could be set to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 *.dat *.k* *.vld *.hdr *.mtd *.dsk *.loc *.prn *.prp *.bak *.pkd *.pbg *.fld *.exe *.dbg *.trc *.doc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Importing a project==&lt;br /&gt;
If you are importing a project, then remember to have write access to the repository [[URL]] you are writing to.&lt;br /&gt;
&lt;br /&gt;
A description of how to do it using the Tortoise client can be found at [http://wsmoak.net/subversion/demo/tsvn-import.html]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Version Control]]&lt;br /&gt;
&lt;br /&gt;
*[http://www.vdfwiki.com/index.php?title=Talk:Subversion Subversion Discussion]&lt;br /&gt;
&lt;br /&gt;
==External Links== &lt;br /&gt;
*[http://www.vdfsig.co.uk/1seaternews.asp?pageid=986 Presentation from vdf sig UK]&lt;br /&gt;
*[http://www.vdf-guidance.com/ViewPage.asp?Page=SUBVERSION Subversion at vdf-guidance]&lt;br /&gt;
*[http://svnbook.red-bean.com/ Documentation]&lt;br /&gt;
*[http://tortoisesvn.tigris.org/ TortoiseSVN Client]&lt;br /&gt;
*[http://svn1clicksetup.tigris.org/ Server]&lt;br /&gt;
*[http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-settings.html Tweaking the svn setup]&lt;br /&gt;
&lt;br /&gt;
[[Category: Development Tools]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Programmatically_edit_a_treeview_label&amp;diff=2060</id>
		<title>Programmatically edit a treeview label</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Programmatically_edit_a_treeview_label&amp;diff=2060"/>
		<updated>2008-08-07T16:07:30Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Enable editmode on a new item */ more source tags&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====The problem====&lt;br /&gt;
The normal treeview class does not have a method of putting your treeview item into &amp;quot;edit mode&amp;quot; programmatically.&lt;br /&gt;
Of course you can do this in the treeview when you are using it, but sometimes you have a need to set this state without requiring user interaction.&lt;br /&gt;
&lt;br /&gt;
As if is a standard windows control, you can send it windows messages yourself.&lt;br /&gt;
The message to send is TVM_EDITLABEL&lt;br /&gt;
&lt;br /&gt;
====Getting it to work====&lt;br /&gt;
First you have to enable label editing with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vdf&amp;quot;&amp;gt;&lt;br /&gt;
 Set TreeEditLabelsState to True&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then you have to send TVM_EDITLABEL for example as in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vdf&amp;quot;&amp;gt;&lt;br /&gt;
 Procedure EditNow&lt;br /&gt;
    Handle hItem&lt;br /&gt;
    Handle hWnd&lt;br /&gt;
    Integer iResult&lt;br /&gt;
 &lt;br /&gt;
    Get CurrentTreeItem to hItem&lt;br /&gt;
    Get Window_Handle to hWnd&lt;br /&gt;
    Move (SendMessage(hWnd,TVM_EDITLABEL,0,hItem)) to iResult&lt;br /&gt;
 End_Procedure&lt;br /&gt;
&lt;br /&gt;
 On_Key Key_Alt+Key_F1 Send EditNow&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see I&#039;ve not tested with doing it just after adding the item but &lt;br /&gt;
in the moment that the control is waiting for user action. Normally the F2 &lt;br /&gt;
is used so you might replace Alt+F1 with the F2 key, I did not do this to &lt;br /&gt;
see if my code was really used instead of build in techniques.&lt;br /&gt;
&lt;br /&gt;
====Enable editmode on a new item====&lt;br /&gt;
First, you need the Window_Handle of the control you want to send the message &lt;br /&gt;
to. This means you can send this message ONLY when the controls is paged.&lt;br /&gt;
Second, you need the handle of the treeviewitem to edit.&lt;br /&gt;
Third, the property TreeEditLabelState is a treeview property and not for the &lt;br /&gt;
item.&lt;br /&gt;
&lt;br /&gt;
Correct syntax would be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vdf&amp;quot;&amp;gt;&lt;br /&gt;
  Procedure AddAndEditItem&lt;br /&gt;
    Handle hItem&lt;br /&gt;
    Get AddTreeItem of oTreeView1 &amp;quot;New item&amp;quot;  0 0 0 0 To hItem&lt;br /&gt;
    Set ItemData of oTreeView1 Item hItem to 999&lt;br /&gt;
 &lt;br /&gt;
    Get Window_Handle of oTreeView1 to hWnd&lt;br /&gt;
    If (hWnd &amp;lt;&amp;gt; 0) Begin&lt;br /&gt;
        Set TreeEditLabelsState of oTreeView1 to True&lt;br /&gt;
        Move (SendMessage(hWnd,TVM_EDITLABEL,0,hItem)) to iResult&lt;br /&gt;
        Set TreeEditLabelsState of oTreeView1 to False&lt;br /&gt;
    End&lt;br /&gt;
  End_Procedure&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Depending on the version of VDF you are using you have the following events and &lt;br /&gt;
properties&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vdf&amp;quot;&amp;gt;&lt;br /&gt;
 pbCancelEdit&lt;br /&gt;
 OnBeginLabelEdit&lt;br /&gt;
 OnEndLabelEdit&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are documented in the Help system&lt;br /&gt;
&lt;br /&gt;
====External references====&lt;br /&gt;
[http://www.sture.dk/wasp/articledisplay.asp?RecId=181900 Automatic Edit item label in Treeview]&lt;br /&gt;
&lt;br /&gt;
[http://www.sture.dk/wasp/articledisplay.asp?RecId=182179 Put label in Editmode immediately]&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb773562(VS.85).aspx MSDN TVM_EDITLABEL Message]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Programmatically_edit_a_treeview_label&amp;diff=2059</id>
		<title>Programmatically edit a treeview label</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Programmatically_edit_a_treeview_label&amp;diff=2059"/>
		<updated>2008-08-07T16:06:37Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Getting it to work */  added vdf source tags&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====The problem====&lt;br /&gt;
The normal treeview class does not have a method of putting your treeview item into &amp;quot;edit mode&amp;quot; programmatically.&lt;br /&gt;
Of course you can do this in the treeview when you are using it, but sometimes you have a need to set this state without requiring user interaction.&lt;br /&gt;
&lt;br /&gt;
As if is a standard windows control, you can send it windows messages yourself.&lt;br /&gt;
The message to send is TVM_EDITLABEL&lt;br /&gt;
&lt;br /&gt;
====Getting it to work====&lt;br /&gt;
First you have to enable label editing with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vdf&amp;quot;&amp;gt;&lt;br /&gt;
 Set TreeEditLabelsState to True&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Then you have to send TVM_EDITLABEL for example as in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vdf&amp;quot;&amp;gt;&lt;br /&gt;
 Procedure EditNow&lt;br /&gt;
    Handle hItem&lt;br /&gt;
    Handle hWnd&lt;br /&gt;
    Integer iResult&lt;br /&gt;
 &lt;br /&gt;
    Get CurrentTreeItem to hItem&lt;br /&gt;
    Get Window_Handle to hWnd&lt;br /&gt;
    Move (SendMessage(hWnd,TVM_EDITLABEL,0,hItem)) to iResult&lt;br /&gt;
 End_Procedure&lt;br /&gt;
&lt;br /&gt;
 On_Key Key_Alt+Key_F1 Send EditNow&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see I&#039;ve not tested with doing it just after adding the item but &lt;br /&gt;
in the moment that the control is waiting for user action. Normally the F2 &lt;br /&gt;
is used so you might replace Alt+F1 with the F2 key, I did not do this to &lt;br /&gt;
see if my code was really used instead of build in techniques.&lt;br /&gt;
&lt;br /&gt;
====Enable editmode on a new item====&lt;br /&gt;
First, you need the Window_Handle of the control you want to send the message &lt;br /&gt;
to. This means you can send this message ONLY when the controls is paged.&lt;br /&gt;
Second, you need the handle of the treeviewitem to edit.&lt;br /&gt;
Third, the property TreeEditLabelState is a treeview property and not for the &lt;br /&gt;
item.&lt;br /&gt;
&lt;br /&gt;
Correct syntax would be&lt;br /&gt;
&lt;br /&gt;
  Procedure AddAndEditItem&lt;br /&gt;
    Handle hItem&lt;br /&gt;
    Get AddTreeItem of oTreeView1 &amp;quot;New item&amp;quot;  0 0 0 0 To hItem&lt;br /&gt;
    Set ItemData of oTreeView1 Item hItem to 999&lt;br /&gt;
 &lt;br /&gt;
    Get Window_Handle of oTreeView1 to hWnd&lt;br /&gt;
    If (hWnd &amp;lt;&amp;gt; 0) Begin&lt;br /&gt;
        Set TreeEditLabelsState of oTreeView1 to True&lt;br /&gt;
        Move (SendMessage(hWnd,TVM_EDITLABEL,0,hItem)) to iResult&lt;br /&gt;
        Set TreeEditLabelsState of oTreeView1 to False&lt;br /&gt;
    End&lt;br /&gt;
  End_Procedure&lt;br /&gt;
&lt;br /&gt;
Depending on the version of VDF you are using you have the following events and &lt;br /&gt;
properties&lt;br /&gt;
 pbCancelEdit&lt;br /&gt;
 OnBeginLabelEdit&lt;br /&gt;
 OnEndLabelEdit&lt;br /&gt;
&lt;br /&gt;
These are documented in the Help system&lt;br /&gt;
&lt;br /&gt;
====External references====&lt;br /&gt;
[http://www.sture.dk/wasp/articledisplay.asp?RecId=181900 Automatic Edit item label in Treeview]&lt;br /&gt;
&lt;br /&gt;
[http://www.sture.dk/wasp/articledisplay.asp?RecId=182179 Put label in Editmode immediately]&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb773562(VS.85).aspx MSDN TVM_EDITLABEL Message]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Programmatically_edit_a_treeview_label&amp;diff=2054</id>
		<title>Programmatically edit a treeview label</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Programmatically_edit_a_treeview_label&amp;diff=2054"/>
		<updated>2008-08-07T15:37:00Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* External references */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====The problem====&lt;br /&gt;
The normal treeview class does not have a method of putting your treeview item into &amp;quot;edit mode&amp;quot; programmatically.&lt;br /&gt;
Of course you can do this in the treeview when you are using it, but sometimes you have a need to set this state without requiring user interaction.&lt;br /&gt;
&lt;br /&gt;
As if is a standard windows control, you can send it windows messages yourself.&lt;br /&gt;
The message to send is TVM_EDITLABEL&lt;br /&gt;
&lt;br /&gt;
====Getting it to work====&lt;br /&gt;
First you have to enable label editing with:&lt;br /&gt;
&lt;br /&gt;
 Set TreeEditLabelsState to True&lt;br /&gt;
&lt;br /&gt;
Then you have to send WM_EDITLABEL for example as in:&lt;br /&gt;
&lt;br /&gt;
 Procedure EditNow&lt;br /&gt;
    Handle hItem&lt;br /&gt;
&lt;br /&gt;
    Get CurrentTreeItem to hItem&lt;br /&gt;
    Send Windows_Message TVM_EDITLABEL 0 hItem&lt;br /&gt;
 End_Procedure&lt;br /&gt;
&lt;br /&gt;
 On_Key Key_Alt+Key_F1 Send EditNow&lt;br /&gt;
&lt;br /&gt;
As you can see I&#039;ve not tested with doing it just after adding the item but &lt;br /&gt;
in the moment that the control is waiting for user action. Normally the F2 &lt;br /&gt;
is used so you might replace Alt+F1 with the F2 key, I did not do this to &lt;br /&gt;
see if my code was really used instead of build in techniques.&lt;br /&gt;
&lt;br /&gt;
====Enable editmode on a new item====&lt;br /&gt;
First, you need the Window_Handle of the control you want to send the message &lt;br /&gt;
to. This means you can send this message ONLY when the controls is paged.&lt;br /&gt;
Second, you need the handle of the treeviewitem to edit.&lt;br /&gt;
Third, the property TreeEditLabelState is a treeview property and not for the &lt;br /&gt;
item.&lt;br /&gt;
&lt;br /&gt;
Correct syntax would be&lt;br /&gt;
&lt;br /&gt;
  Procedure OnClick&lt;br /&gt;
    Handle hItem&lt;br /&gt;
    Get AddTreeItem of oTreeView1 &amp;quot;New item&amp;quot;  0 0 0 0 To hItem&lt;br /&gt;
    Set ItemData of oTreeView1 Item hItem to 999&lt;br /&gt;
&lt;br /&gt;
    Get Window_Handle of oTreeView1 to hWnd&lt;br /&gt;
    If (hWnd &amp;lt;&amp;gt; 0) Begin&lt;br /&gt;
        Set TreeEditLabelsState of oTreeView1 to True&lt;br /&gt;
        Move (SendMessage(hWnd,TVM_EDITLABEL,0,hItem)) to iResult&lt;br /&gt;
        Set TreeEditLabelsState of oTreeView1 to False&lt;br /&gt;
    End&lt;br /&gt;
  End_Procedure&lt;br /&gt;
&lt;br /&gt;
Depending on the version of VDF you are using you have the following events and &lt;br /&gt;
properties&lt;br /&gt;
 pbCancelEdit&lt;br /&gt;
 OnBeginLabelEdit&lt;br /&gt;
 OnEndLabelEdit&lt;br /&gt;
&lt;br /&gt;
These are documented in the Help system&lt;br /&gt;
&lt;br /&gt;
====External references====&lt;br /&gt;
[http://www.sture.dk/wasp/articledisplay.asp?RecId=181900 Automatic Edit item label in Treeview]&lt;br /&gt;
&lt;br /&gt;
[http://www.sture.dk/wasp/articledisplay.asp?RecId=182179 Put label in Editmode immediately]&lt;br /&gt;
&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb773562(VS.85).aspx MSDN TVM_EDITLABEL Message]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Programmatically_edit_a_treeview_label&amp;diff=2053</id>
		<title>Programmatically edit a treeview label</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Programmatically_edit_a_treeview_label&amp;diff=2053"/>
		<updated>2008-08-07T15:36:07Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: New page: ====The problem==== The normal treeview class does not have a method of putting your treeview item into &amp;quot;edit mode&amp;quot; programmatically. Of course you can do this in the treeview when you are...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====The problem====&lt;br /&gt;
The normal treeview class does not have a method of putting your treeview item into &amp;quot;edit mode&amp;quot; programmatically.&lt;br /&gt;
Of course you can do this in the treeview when you are using it, but sometimes you have a need to set this state without requiring user interaction.&lt;br /&gt;
&lt;br /&gt;
As if is a standard windows control, you can send it windows messages yourself.&lt;br /&gt;
The message to send is TVM_EDITLABEL&lt;br /&gt;
&lt;br /&gt;
====Getting it to work====&lt;br /&gt;
First you have to enable label editing with:&lt;br /&gt;
&lt;br /&gt;
 Set TreeEditLabelsState to True&lt;br /&gt;
&lt;br /&gt;
Then you have to send WM_EDITLABEL for example as in:&lt;br /&gt;
&lt;br /&gt;
 Procedure EditNow&lt;br /&gt;
    Handle hItem&lt;br /&gt;
&lt;br /&gt;
    Get CurrentTreeItem to hItem&lt;br /&gt;
    Send Windows_Message TVM_EDITLABEL 0 hItem&lt;br /&gt;
 End_Procedure&lt;br /&gt;
&lt;br /&gt;
 On_Key Key_Alt+Key_F1 Send EditNow&lt;br /&gt;
&lt;br /&gt;
As you can see I&#039;ve not tested with doing it just after adding the item but &lt;br /&gt;
in the moment that the control is waiting for user action. Normally the F2 &lt;br /&gt;
is used so you might replace Alt+F1 with the F2 key, I did not do this to &lt;br /&gt;
see if my code was really used instead of build in techniques.&lt;br /&gt;
&lt;br /&gt;
====Enable editmode on a new item====&lt;br /&gt;
First, you need the Window_Handle of the control you want to send the message &lt;br /&gt;
to. This means you can send this message ONLY when the controls is paged.&lt;br /&gt;
Second, you need the handle of the treeviewitem to edit.&lt;br /&gt;
Third, the property TreeEditLabelState is a treeview property and not for the &lt;br /&gt;
item.&lt;br /&gt;
&lt;br /&gt;
Correct syntax would be&lt;br /&gt;
&lt;br /&gt;
  Procedure OnClick&lt;br /&gt;
    Handle hItem&lt;br /&gt;
    Get AddTreeItem of oTreeView1 &amp;quot;New item&amp;quot;  0 0 0 0 To hItem&lt;br /&gt;
    Set ItemData of oTreeView1 Item hItem to 999&lt;br /&gt;
&lt;br /&gt;
    Get Window_Handle of oTreeView1 to hWnd&lt;br /&gt;
    If (hWnd &amp;lt;&amp;gt; 0) Begin&lt;br /&gt;
        Set TreeEditLabelsState of oTreeView1 to True&lt;br /&gt;
        Move (SendMessage(hWnd,TVM_EDITLABEL,0,hItem)) to iResult&lt;br /&gt;
        Set TreeEditLabelsState of oTreeView1 to False&lt;br /&gt;
    End&lt;br /&gt;
  End_Procedure&lt;br /&gt;
&lt;br /&gt;
Depending on the version of VDF you are using you have the following events and &lt;br /&gt;
properties&lt;br /&gt;
 pbCancelEdit&lt;br /&gt;
 OnBeginLabelEdit&lt;br /&gt;
 OnEndLabelEdit&lt;br /&gt;
&lt;br /&gt;
These are documented in the Help system&lt;br /&gt;
&lt;br /&gt;
====External references====&lt;br /&gt;
[http://www.sture.dk/wasp/articledisplay.asp?RecId=181900 Automatic Edit item label in Treeview]&lt;br /&gt;
[http://www.sture.dk/wasp/articledisplay.asp?RecId=182179 Put label in Editmode immediately]&lt;br /&gt;
[http://msdn.microsoft.com/en-us/library/bb773562(VS.85).aspx MSDN TVM_EDITLABEL Message]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Portal:Windows_Applications&amp;diff=2052</id>
		<title>Portal:Windows Applications</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Portal:Windows_Applications&amp;diff=2052"/>
		<updated>2008-08-07T15:19:17Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Advanced */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Visual Dataflex Portal&#039;&#039;&#039; is the place to come for articles and tutorials on developing [http://en.wikipedia.org/wiki/Microsoft_Windows Windows] applications with &#039;&#039;&#039;[[Visual DataFlex]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Before beginning the more advanced stuff you should consider reading [http://www.visual-dataflex.co.uk/1seater.asp?pageid=1028 Vincent&#039;s book] or attend a 5 days training. Now - on with the show:&lt;br /&gt;
&lt;br /&gt;
==Articles==&lt;br /&gt;
*&#039;&#039;&#039;[[Visual DataFlex]]&#039;&#039;&#039; (covering the basic stuff)&lt;br /&gt;
&lt;br /&gt;
==Tutorials==&lt;br /&gt;
*How to add &#039;&#039;&#039;[[Add Workspace Parameter|Workspace Parameters]]&#039;&#039;&#039; using [[cIniFile]]&lt;br /&gt;
*[[Running_VDF_programs_as_Windows_Services]]&lt;br /&gt;
*[[Using On_key for undefined keys]]&lt;br /&gt;
*[[Passing the workspace as a parameter]]&lt;br /&gt;
*[[Add Workspace Parameter|Adding Workspace Parameters]] using the [[cIniFile]] class&lt;br /&gt;
*Adding [[SMTP Email]] to your application using an [[ActiveX]] control&lt;br /&gt;
*[[Run only one instance of your application]]&lt;br /&gt;
*[[Customize prompt lookup behavior in a dbgrid]]&lt;br /&gt;
*[[Print the content of an embedded IE html control]]&lt;br /&gt;
*[[Return data from every object in a dbView]]&lt;br /&gt;
*[[Print to a file using reports]]&lt;br /&gt;
*[[Visual Modelling of multiple visual objects]]&lt;br /&gt;
*[[ExpressConnectivity]]&lt;br /&gt;
&lt;br /&gt;
==Advanced==&lt;br /&gt;
* [[Add icons with subset of images to CodeJock CommandBars]]&lt;br /&gt;
* [[Programmatically edit a treeview label]]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* http://www.vdf-guidance.com&lt;br /&gt;
* http://visualdataflexdeveloper.org/ &lt;br /&gt;
* http://www.visualdataflex.com&lt;br /&gt;
* http://www.visualdataflex.ru (Russian)&lt;br /&gt;
* http://www.dataaccess.com&lt;br /&gt;
* http://www.dataaccess.nl&lt;br /&gt;
* [http://www.sture.com/wasp/ WASP Newsgroup search] engine&lt;br /&gt;
* [http://www.starzen.com StarZen Technologies] Addon Tools, Books, Magazines, Consulting&lt;br /&gt;
&lt;br /&gt;
==Requested Articles / Works in progress==&lt;br /&gt;
&lt;br /&gt;
*[[Converting from DOS to Windows]]&lt;br /&gt;
*[[COM|Using COM Objects]] (reuse existing functionality)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Portals]]&lt;br /&gt;
[[Category:DataFlex (Character Mode)]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=DataDictionary&amp;diff=1909</id>
		<title>DataDictionary</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=DataDictionary&amp;diff=1909"/>
		<updated>2008-05-23T08:38:59Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Supported backends */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Definition = &lt;br /&gt;
A data dictionary is defined as the business layer in-bewteen your table on disk, and the requested operation at runtime.  It handles the find, clear, save, validate, and delete requests from either the programmer or the user.  A data dictionary exists both as a class coded definition and as an instantiated object which uses full delegation and polymorphism in the form of a data dictionary object in a &amp;quot;tree&amp;quot; structure for the data set you wish to perform an operation on.&lt;br /&gt;
&lt;br /&gt;
= editing a Data Dictionary =&lt;br /&gt;
&lt;br /&gt;
Editing a DataDictionary CLASS in Visual DataFlex involves at least 10 identifiable options:&lt;br /&gt;
&lt;br /&gt;
#Create/edit/delete data table columns.&lt;br /&gt;
# Set parent relationships.&lt;br /&gt;
# Define indexes for finding data by.&lt;br /&gt;
#Set column based options for when the data table is used as the main data entry source.  This involves setting system-wide standard behavior such as &amp;quot;capslock&amp;quot;, &amp;quot;required&amp;quot;, and &amp;quot;auto-find&amp;quot;. An option also exists to set columns as &amp;quot;key fields&amp;quot; where the user may not change the value at runtime.&lt;br /&gt;
# Set column based options for when the data table is used as a &amp;quot;server&amp;quot; [parent] of the main data entry source.  Options here include &amp;quot;find required&amp;quot; and &amp;quot;noput&amp;quot; [user changes cannot overwrite the data table column].  It should be noted that depending on which place in the data operation structure (parent, child or main file... a data dictionary exists, the place determines which business rules apply in a display of polymorphism which is defined as the ability to produce different behavior simply by the context of it&#039;s use.&lt;br /&gt;
# Define the immediate relational tree for the delete operation based on a record delete in the table.  The child tables are defined so that two basic rules apply (one or the other): either the record cannot be deleted if child records exist, or the child files will all be deleted when the record is called for delete AND a data dictionary object in the module must be present to handle the delete operation.  This is as much a validation for the programmer as it is for the user, since operations cannot be successful unless both follow the rules programmed in the class.  It should be noted that business rule exceptions and customized rules can augment this programming or replace it completely. It should also be noted that when data dictionary objects are connected together in a module, that deletes travel downwards in the tree, and upon each delete, a save and validation is sent upwards in the tree.&lt;br /&gt;
# Define the immediate relationsl tree for the save operations based on a requested save of the data table record.  The parent data tables are defined so that your programming team must always place a parent DDO (data dictionary object - instantiated on the classes we are building) for each parent data table that is connected relationally.  Omissions and &amp;quot;sometimes required&amp;quot; parent tables can be defined in both the class code and object code programmaticallty.  The advantage of making a parent table &amp;quot;required&amp;quot; is to be able to both code update/backout operations to another table (knowing that it must always be present to handle your code), and also for the Visual DataFlex Studio to automatically model your relational tree when you request a data server to handle your find, clear, save, validation, and delete operations.&lt;br /&gt;
# Define the externally updated tables to be bound in the transaction block of saves/deletes.  When a save or delete occurs, all table attributes are set to readonly momentarily, the tables that will be affected by the operation are set to default mode, and then a reread/transaction block occurs to lock all the tables in the tree that are affected PLUS the ones listed in externally updated tables.  This allows, for instance, a reread and update from the system table to assign the next available number to a key field.&lt;br /&gt;
# Programming of stored procedures that exist as called methods already.  REF:[http://applausesoftware.blogspot.com/2008/02/visual-dataflex-ddo-stored-procedure.html DDO Save Cascade]&lt;br /&gt;
# Programming of customized stored procedure methods that you introduce to the class, stored in a central depository (the foundation of oops programming) class and can be attached to either the exiting of a control attached to a column of the data table, or the exiting, or simply the validation of such column.&lt;br /&gt;
&lt;br /&gt;
All together, these 10 functional abilities to centrally define data table rules are dwarfed by the fact that they are &amp;quot;hitched up in tandem&amp;quot; like a team of &amp;quot;Budweiser Clydesdales&amp;quot; which work interconnectedly to enforce your entire data structure on any data operation which includes save, clear, find, delete, and validation.&lt;br /&gt;
&lt;br /&gt;
=  How to use Data Dictionaries  = &lt;br /&gt;
&lt;br /&gt;
The [[Database Builder]] tool helps you defining the class with visual aid for:&lt;br /&gt;
*Field settings like &#039;&#039;Capslock&#039;&#039; &lt;br /&gt;
*Table settings like calculations on save or save/delete validations&lt;br /&gt;
*Relationship settings like [[Cascade Delete]].&lt;br /&gt;
&lt;br /&gt;
The Datadictionary class can also contain and business rules required when records are created, edited or deleted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==How to create a new Data Dictionary from scratch==&lt;br /&gt;
#Open [[Database Builder]].&lt;br /&gt;
#Create a new table&lt;br /&gt;
#Enter some columns (input name, type and width)&lt;br /&gt;
#Choose &#039;&#039;&#039;Maintenance&#039;&#039;&#039; and &#039;&#039;&#039;Create Empty DataDictionary&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==How to create Relationships==&lt;br /&gt;
Before creating relationships, make sure that both tables should have an index. &lt;br /&gt;
*use &#039;the relationship wizard&#039; in the database builder.&lt;br /&gt;
&lt;br /&gt;
== Use Data Dictionaries in Batch Processes ==&lt;br /&gt;
When using the studio, the usage of Data Dictionaries are very naturally integrated into your project. But when doing a save without dbForm objects eg in a batch process or so, a lot of developers are going back to the file buffer way. This way it bypasses the class structure you carefully put in place for saves, deletes, updates etc.&lt;br /&gt;
Please check [[Using Data Dictionaries in Business Processes]] for help and sample code.&lt;br /&gt;
&lt;br /&gt;
=Supported backends=&lt;br /&gt;
&lt;br /&gt;
It is possible to reach several databases through the Data Access [[DataFlex Connectivity Kit]] or using third party&lt;br /&gt;
drivers from Mertech Data [http://mertechdata.com/rainbow/site/1/default.aspx]&lt;br /&gt;
&lt;br /&gt;
*[[Native DataFlex database]]&lt;br /&gt;
*[[Oracle]] [http://wiki.oracle.com/page/Database]&lt;br /&gt;
*[[Microsoft SQL Server]] [http://msdn2.microsoft.com/en-us/sql/default.aspx]&lt;br /&gt;
*[[Pervasive]] [[SQL]] [http://ww1.pervasive.com/developerzone/access_methods/btrieve.asp]&lt;br /&gt;
*[[ODBC]]&lt;br /&gt;
*[[MySQL]]&lt;br /&gt;
*[[IBM DB2]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=CIniFile&amp;diff=1861</id>
		<title>CIniFile</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=CIniFile&amp;diff=1861"/>
		<updated>2008-04-05T08:03:02Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An object of the cIniFile class can be used for reading information avaiable from an INI file.&lt;br /&gt;
&lt;br /&gt;
INI files are often used to store user preferences or setup options for applications.&lt;br /&gt;
&lt;br /&gt;
In [[Visual DataFlex]] you can freely use as many INI files as you require, however the two-level structure of INI files (sections and keys) means that there is often no need to use more than one.  Here, for example, is a boot.ini file (usually found in the root directory of the system drive of Windows operating systems):&lt;br /&gt;
&lt;br /&gt;
 [boot loader]&lt;br /&gt;
 timeout=30&lt;br /&gt;
 default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS&lt;br /&gt;
 &lt;br /&gt;
 [operating systems]&lt;br /&gt;
 multi(0)disk(0)rdisk(0)partition(2)\WINDOWS=&amp;quot;Microsoft Windows XP Professional&amp;quot; /fastdetect /NoExecute=OptIn&lt;br /&gt;
&lt;br /&gt;
As you can see, it defines two sections - [boot loader] and [operating systems] - each with different settings within them.&lt;br /&gt;
&lt;br /&gt;
Another example are the workspace configuration files used by [[Visual DataFlex]] itself (by default named &amp;quot;Config.ws&amp;quot;, showing that they don&#039;t have to use the .ini extension - see the artice in &amp;quot;See Also&amp;quot; below), which must exist in the same directory the program is run from (usually the &amp;quot;Programs&amp;quot; subdirectory of the workspace).  Here is an example:&lt;br /&gt;
&lt;br /&gt;
 [Workspace]&lt;br /&gt;
 Home=..\&lt;br /&gt;
 AppSrcPath=.\AppSrc&lt;br /&gt;
 AppHTMLPath=.\AppHtml&lt;br /&gt;
 BitmapPath=.\Bitmaps&lt;br /&gt;
 IdeSrcPath=.\IdeSrc&lt;br /&gt;
 DataPath=.\Data&lt;br /&gt;
 DDSrcPath=.\DdSrc&lt;br /&gt;
 HelpPath=.\Help&lt;br /&gt;
 ProgramPath=.\Programs&lt;br /&gt;
 FileList=.\Data\Filelist.cfg&lt;br /&gt;
 Description=MyFirstProject&lt;br /&gt;
&lt;br /&gt;
Here only a single section - [Workspace] - is defined, however the fact that an INI file can have have as many sections as it needs means that you can use this very file to set up options for how you want your program to behave.&lt;br /&gt;
&lt;br /&gt;
Note that section names (the ones in the square brackets), key names (&amp;quot;Home&amp;quot;, &amp;quot;AppSrcPath&amp;quot;, etc.) and key values can all contain spaces (although for my own part I prefer not to use those and depend on [http://en.wikipedia.org/wiki/Camelcase camelCase] to supply readability).&lt;br /&gt;
&lt;br /&gt;
The advantage of the INI file approach is that it can make programs configurable for different environments or uses without them having to be recompiled with different settings each time: the program can be made with a set of default values which can then be overridden at run-time by the settings in an INI file.  It has the advantage over Registry settings, which perform very much the same function, in that you don&#039;t need any special rights on the machine to set it up and make changes to it: you are just working with text files, so security policy issues about who has rights to the [http://en.wikipedia.org/wiki/Windows_Registry Windows Registry], or who can run RegEdit or RegEdit32 do not apply - if you can run Notepad and modify files you can configure your application.&lt;br /&gt;
&lt;br /&gt;
Here is an example where an additional section allowing the configuration of a database location and login has been added:&lt;br /&gt;
&lt;br /&gt;
 [Workspace]&lt;br /&gt;
 Home=..\&lt;br /&gt;
 AppSrcPath=.\AppSrc&lt;br /&gt;
 AppHTMLPath=.\AppHtml&lt;br /&gt;
 BitmapPath=.\Bitmaps&lt;br /&gt;
 IdeSrcPath=.\IdeSrc&lt;br /&gt;
 DataPath=.\Data&lt;br /&gt;
 DDSrcPath=.\DdSrc&lt;br /&gt;
 HelpPath=.\Help&lt;br /&gt;
 ProgramPath=.\Programs&lt;br /&gt;
 FileList=.\Data\Filelist.cfg&lt;br /&gt;
 Description=MyFirstProject&lt;br /&gt;
 &lt;br /&gt;
 [Database Login]&lt;br /&gt;
 Server=big-iron.database-servers.local&lt;br /&gt;
 Login=itsme&lt;br /&gt;
 Password=letmein&lt;br /&gt;
 Database=Accounting&lt;br /&gt;
 Driver=MSSQL&lt;br /&gt;
&lt;br /&gt;
Combining these factors - the fact that there is probably no need to have more than one INI file, and the fact that [[Visual DataFlex]] requres one anyway - means that for most purposes you can just add what you need to the existing workspace configuration file.&lt;br /&gt;
&lt;br /&gt;
So how do you access that information in your program?&lt;br /&gt;
&lt;br /&gt;
For most purposes the information in an INI file will only be read at program start-up.  This means that (a) the oApplication object is a good place to do such things (see the article in  &amp;quot;See Also&amp;quot; below for some guidance on sub-classing the cApplicatiion class) and (b) the cIniFile object need not be retained after it has been used.  (Of course you might have different requirements, but here we will assume these are true.)&lt;br /&gt;
&lt;br /&gt;
So... in your oApplication object (perhaps in the &amp;quot;OnCreate&amp;quot; procedure, perhaps elsewhere, such as &amp;quot;Construct_Object&amp;quot; or &amp;quot;End_Construct_Object&amp;quot;) what you need to do is dynamically create a cIniFile object, use it to get the information you want, then destroy it again.  You also want to be able to access the workspace configuration file for the application, perhaps without knowing ahead of time what that is actually called.&lt;br /&gt;
&lt;br /&gt;
Here is one way of doing it (&#039;&#039;&#039;&#039;&#039;note&#039;&#039;&#039; - this code is assumed to be in the oApplication object or a sub-class of the cApplication class; the only place this matters is in the &amp;quot;Set psFileName ...&amp;quot; line, where &amp;quot;Self&amp;quot; will refer to the oApplication object, and where the various properties are held&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
   String  sServer sLogin sPW sDrv sDB&lt;br /&gt;
   Boolean bLogin&lt;br /&gt;
   Handle  hoIni&lt;br /&gt;
 &lt;br /&gt;
   // Retrieve your application defaults into local variables&lt;br /&gt;
   Get psServer   to sServer&lt;br /&gt;
   Get psLogin    to sLogin&lt;br /&gt;
   Get psPassword to sPW&lt;br /&gt;
   Get psDriver   to sDrv&lt;br /&gt;
   Get psDatabase to sDB&lt;br /&gt;
   Get pbDoLogin  to bDB&lt;br /&gt;
 &lt;br /&gt;
   Get Create U_cIniFile to hoIni    // Create INI file object&lt;br /&gt;
 &lt;br /&gt;
   // Make it use the workspace configuration file&lt;br /&gt;
   Set psFileName of hoIni to (psWorkspaceWSFile(phoWorkspace(Self)))&lt;br /&gt;
 &lt;br /&gt;
   // Read the information&lt;br /&gt;
   Move (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Server&amp;quot;,   sServer)) to sServer&lt;br /&gt;
   Move (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Login&amp;quot;,    sLogin))  to sLogin&lt;br /&gt;
   Move (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Password&amp;quot;, sPW))     to sPW&lt;br /&gt;
   Move (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Driver&amp;quot;,   sDrv))    to sDrv&lt;br /&gt;
   Move (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Database&amp;quot;, sDB))     to sDB&lt;br /&gt;
   Move (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;DoLogin&amp;quot;,  bLogin))  to bLogin&lt;br /&gt;
      &lt;br /&gt;
   Send Destroy of hoIni             // And Destroy it again&lt;br /&gt;
 &lt;br /&gt;
   // Set the properties to make the information persistent&lt;br /&gt;
   Get psServer   to sServer&lt;br /&gt;
   Get psLogin    to sLogin&lt;br /&gt;
   Get psPassword to sPW&lt;br /&gt;
   Get psDriver   to sDrv&lt;br /&gt;
   Get psDatabase to sDB&lt;br /&gt;
   Get pbDoLogin  to bDB&lt;br /&gt;
&lt;br /&gt;
The above code will retrieve the values set in the second workspace file example above.  Note that in that example, the &amp;quot;DoLogin&amp;quot; value is not present - the &amp;quot;&#039;&#039;ReadString&#039;&#039;&amp;quot; method of the cIniFile class lets you supply a default value if the setting is not present, and here we have used the bLogin variable, which was set from the pbDoLogin property, and which is then used to set that property again... so the fact that the setting is absent (not &amp;quot;&#039;&#039;missing&#039;&#039;&amp;quot; - it is deliberate!) means that the default property remains unchanged.&lt;br /&gt;
&lt;br /&gt;
You could save some code by not retrieving the properties into local variables first, but using the properties as defaults directly:&lt;br /&gt;
&lt;br /&gt;
   Move (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Server&amp;quot;,   psServer(Self)))   to sServer&lt;br /&gt;
   Move (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Login&amp;quot;,    psLogin(Self)))    to sLogin&lt;br /&gt;
   Move (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Password&amp;quot;, psPassword(Self))) to sPW&lt;br /&gt;
   Move (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Driver&amp;quot;,   psDriver(Self)))   to sDrv&lt;br /&gt;
   Move (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Database&amp;quot;, psDatabase(Self))) to sDB&lt;br /&gt;
   Move (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;DoLogin&amp;quot;,  pbDoLogin(Self)))  to bLogin&lt;br /&gt;
&lt;br /&gt;
Or even dispense with the local variables completely:&lt;br /&gt;
&lt;br /&gt;
   Set psServer   to (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Server&amp;quot;,   psServer(Self)))&lt;br /&gt;
   Set psLogin    to (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Login&amp;quot;,    psLogin(Self)))&lt;br /&gt;
   Set psPassword to (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Password&amp;quot;, psPassword(Self)))&lt;br /&gt;
   Set psDriver   to (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Driver&amp;quot;,   psDriver(Self)))&lt;br /&gt;
   Set psDatabase to (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;Database&amp;quot;, psDatabase(Self)))&lt;br /&gt;
   Set pbDoLogin  to (ReadString(hoIni, &amp;quot;Database Login&amp;quot;, &amp;quot;DoLogin&amp;quot;,  pbDoLogin(Self)))&lt;br /&gt;
&lt;br /&gt;
But some might consder that a bridge too far!&lt;br /&gt;
&lt;br /&gt;
The cIniFile has other methods as well: it can write as well as read (WriteString, DeleteKey and DeleteSection) and can dynamically determine the contents of the file (ReadSections, ReadSection, SectionExists and KeyExists) - see the VDF Help for full information - but the ReadString method is the one you will need in most circumstances.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[Passing the workspace as a parameter]]&lt;br /&gt;
&lt;br /&gt;
== External references ==&lt;br /&gt;
*http://en.wikipedia.org/wiki/INI_file&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Print_to_a_file_using_reports&amp;diff=1848</id>
		<title>Print to a file using reports</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Print_to_a_file_using_reports&amp;diff=1848"/>
		<updated>2008-03-31T11:32:59Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Using WinPDF Pro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How can I print directly to a file such as PDF or Postscript?&lt;br /&gt;
&lt;br /&gt;
==== Using WinPDF Pro ====&lt;br /&gt;
The example below uses WinPDF Pro printer driver for the PDF generation, Winprint (or at least the report object in VDF) for the reporting and MAPI for sending the mails directly.  Note that each invoice in this example is printed individually.&lt;br /&gt;
&lt;br /&gt;
Pardon the jumbled looking code, but with Win2PDF pro you can do the following:&lt;br /&gt;
&lt;br /&gt;
 function JumpStartReport string sInvoice boolean bEmail string sEmailAddress returns boolean&lt;br /&gt;
    boolean bExists bMailed&lt;br /&gt;
    integer iToPrinter iRepObj iHr iMn iRetval&lt;br /&gt;
    string  sVal sDateTime sHr sMn sSetupFile sPath sFilename&lt;br /&gt;
    string  sKey sSubKey sOldRegRoot sOldRegBranch sCurrentDevice sMessage&lt;br /&gt;
    handle  hoMapiSession&lt;br /&gt;
    dWord   dWWSecurityOptions  dWWFileOptions dRetVal&lt;br /&gt;
    date    dToday&lt;br /&gt;
    //&lt;br /&gt;
    get Report_Object_Id To iRepObj&lt;br /&gt;
    //&lt;br /&gt;
    set pSelStart1 of iRepObj To sInvoice&lt;br /&gt;
    set pSelStop1  of iRepObj To sInvoice&lt;br /&gt;
    //&lt;br /&gt;
    if (bEmail) ;&lt;br /&gt;
        set OutPut_Device_Mode to PRINT_TO_PRINTER_NO_DIALOG&lt;br /&gt;
    else        ;&lt;br /&gt;
        set OutPut_Device_Mode to PRINT_TO_PRINTER&lt;br /&gt;
    //&lt;br /&gt;
    if (bEmail) begin&lt;br /&gt;
        move (&amp;quot;Please find attached your invoice&amp;quot; * sInvoice + &amp;quot;.&amp;quot;) to sMessage&lt;br /&gt;
        get  DFGetCurrentDevice of iRepObj to sCurrentDevice&lt;br /&gt;
        send DFSetDevice        of iRepObj    &amp;quot;Win2PDF&amp;quot;&lt;br /&gt;
        //&lt;br /&gt;
        get psHome of (phoWorkspace(ghoApplication))          to sPath&lt;br /&gt;
        move (sPath + &amp;quot;Documents\&amp;quot;)                           to sPath&lt;br /&gt;
        move (&amp;quot;Invoice_&amp;quot; + sInvoice + &amp;quot;.pdf&amp;quot;)                 to sFilename&lt;br /&gt;
        Get_Registry_Root                                     to sOldRegRoot sOldRegBranch&lt;br /&gt;
        move &amp;quot;Dane Prairie Systems&amp;quot;                           to sKey&lt;br /&gt;
        move &amp;quot;Win2PDF&amp;quot;                                        to sSubKey&lt;br /&gt;
        Set_Registry_Root                                     to HKEY_LOCAL_MACHINE &amp;quot;SOFTWARE&amp;quot;&lt;br /&gt;
        Set_Foreign_Profile_String sKey sSubKey &amp;quot;PDFFileName&amp;quot; to (sPath + sFilename)&lt;br /&gt;
        Set_Foreign_Profile_String sKey sSubKey &amp;quot;PDFTitle&amp;quot;    to (&amp;quot;Invoice &amp;quot; + sInvoice)&lt;br /&gt;
        Set_Foreign_Profile_String sKey sSubKey &amp;quot;PDFAuthor&amp;quot;   to &amp;quot;Calendar Invoicing&amp;quot;&lt;br /&gt;
        Set_Foreign_Profile_String sKey sSubKey &amp;quot;PDFSubject&amp;quot;  to (&amp;quot;Calendar Invoice&amp;quot;)&lt;br /&gt;
        Set_Registry_Root                                     to sOldRegRoot sOldRegBranch&lt;br /&gt;
        //Get CheckFileExists sFileName to bExists&lt;br /&gt;
        //If (bExists) Set pbOrgCopyPrinted to TRUE&lt;br /&gt;
    end // if (bEmail) begin&lt;br /&gt;
    //&lt;br /&gt;
    send Run_Report to iRepObj&lt;br /&gt;
    //&lt;br /&gt;
    if (NOT(bEmail)) procedure_return&lt;br /&gt;
    // restore the print device&lt;br /&gt;
    send DFSetDevice of iRepObj sCurrentDevice&lt;br /&gt;
    // gotta have it&lt;br /&gt;
    move oMapiSession to hoMapiSession&lt;br /&gt;
    //showln hoMapiSession&lt;br /&gt;
    if (NOT(hoMapiSession &amp;gt; 0)) begin&lt;br /&gt;
        send Stop_Box &amp;quot;Unable to email invoice.&amp;quot;&lt;br /&gt;
        procedure_return&lt;br /&gt;
    end&lt;br /&gt;
    send DoInit          of hoMapiSession&lt;br /&gt;
    set psMessageSubject of hoMapiSession to (&amp;quot;Daffie Duck Invoice&amp;quot; * sInvoice)&lt;br /&gt;
    set psMessageText    of hoMapiSession to sMessage&lt;br /&gt;
    send DoAddReceiver   of hoMapiSession MAPI_TO (trim(sEmailAddress)) &amp;quot;&amp;quot; &amp;quot;&amp;quot; 0&lt;br /&gt;
    send DoAddAttachment of hoMapiSession (sPath + sFilename) sFilename&lt;br /&gt;
    get Logon            of hoMapiSession &amp;quot;&amp;quot; &amp;quot;&amp;quot; 0 to iRetval&lt;br /&gt;
    //showln iRetval&lt;br /&gt;
    get SendMail         of hoMapiSession (MAPI_NEW_SESSION IOR MAPI_LOGON_UI) TRUE to iRetval&lt;br /&gt;
    //&lt;br /&gt;
    showln (sInvoice * trim(sEmailAddress) * string(iRetval))&lt;br /&gt;
    move (iRetval = 0) to bMailed&lt;br /&gt;
    //&lt;br /&gt;
    get Logoff           of hoMapiSession to iRetval&lt;br /&gt;
    //&lt;br /&gt;
    function_return bMailed&lt;br /&gt;
 end_function // JumpStartReport&lt;br /&gt;
&lt;br /&gt;
====Using VB.net====&lt;br /&gt;
Not VDF code, but a VB.net code sample that you can use to model against (or use it by wrapping it in a small .net binary)&lt;br /&gt;
&lt;br /&gt;
http://groups.google.com/group/microsoft.public.dotnet.framework.drawing/browse_thread/thread/66e5f32dd0fc1757&lt;br /&gt;
&lt;br /&gt;
====External Links====&lt;br /&gt;
[http://www.sture.dk/wasp/threadreport.asp?ThreadId=40911 OT: Print to a File]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Customize_prompt_lookup_behavior_in_a_dbgrid&amp;diff=1698</id>
		<title>Customize prompt lookup behavior in a dbgrid</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Customize_prompt_lookup_behavior_in_a_dbgrid&amp;diff=1698"/>
		<updated>2008-02-12T17:02:46Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: New page: How can I set a column in a dbGrid to ignore the prompt under certain circumstances?  1. Via customizing the prompt method in the object  Procedure Prompt    Integer iColumn    Boolean bOk...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How can I set a column in a dbGrid to ignore the prompt under certain&lt;br /&gt;
circumstances?&lt;br /&gt;
&lt;br /&gt;
1. Via customizing the prompt method in the object&lt;br /&gt;
 Procedure Prompt&lt;br /&gt;
   Integer iColumn&lt;br /&gt;
   Boolean bOk    &lt;br /&gt;
&lt;br /&gt;
   move (true) to bOk&lt;br /&gt;
   Get Current_Col To iColumn&lt;br /&gt;
   If (iColumn=4) Begin&lt;br /&gt;
     // if in column 4 then check data&lt;br /&gt;
     Get Field_Current_Value Of Server_DD Field Foo.bar To sBar&lt;br /&gt;
     If (sBar=&amp;quot;foo&amp;quot;) Move (false) To bOk&lt;br /&gt;
   End&lt;br /&gt;
   If (bOk) Begin&lt;br /&gt;
     Forward Send Prompt&lt;br /&gt;
   End&lt;br /&gt;
 Procedure // Prmopt&lt;br /&gt;
&lt;br /&gt;
2. Via entry_display&lt;br /&gt;
&lt;br /&gt;
  if(certain circumstances) begin&lt;br /&gt;
    Set Prompt_Button_Mode to pb_PromptOff&lt;br /&gt;
  end&lt;br /&gt;
and&lt;br /&gt;
  On_Key kPrompt Send myprompt&lt;br /&gt;
&lt;br /&gt;
  Procedure Myprompt&lt;br /&gt;
    if(not((certain circumstances)) forward send prompt&lt;br /&gt;
  End_Procedure&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Visual_DataFlex&amp;diff=1697</id>
		<title>Visual DataFlex</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Visual_DataFlex&amp;diff=1697"/>
		<updated>2008-02-12T17:00:11Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* How To */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Visual Dataflex Applications&#039;&#039;&#039; are Windows based applications.  This page is a collection of articles related to developing Windows applications in VDF.&lt;br /&gt;
&lt;br /&gt;
For those of you who are new to Visual DataFlex, take a look at the  [http://www.dataaccess.nl/Include/ElectosFileStreaming.asp?FileId=750 Visual DataFlex quickstart guide ]    &lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
These articles related to the basic concepts of VDF programming:&lt;br /&gt;
*[[Using DataDictionaries]]&lt;br /&gt;
*[[Lookup List]]&lt;br /&gt;
*[[Data Entry Object]]&lt;br /&gt;
*[[Rounding Numbers]]&lt;br /&gt;
&lt;br /&gt;
==How To==&lt;br /&gt;
Articles with step by step guides on how to add functionality to your program:&lt;br /&gt;
*[[Using On_key for undefined keys]]&lt;br /&gt;
*[[Add Workspace Parameter|Adding Workspace Parameters]] using the [[cIniFile]] class&lt;br /&gt;
*Adding [[SMTP Email]] to your application using an [[ActiveX]] control&lt;br /&gt;
*[[Run only one instance of your application]]&lt;br /&gt;
*[[Converting from DOS to Windows]]&lt;br /&gt;
*[[COM|Using COM Objects]] (reuse existing functionality)&lt;br /&gt;
*[[Customize prompt lookup behavior in a dbgrid]]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* http://www.visualdataflex.com&lt;br /&gt;
* http://www.visualdataflex.ru (Russian)&lt;br /&gt;
* http://www.dataaccess.com&lt;br /&gt;
* http://www.dataaccess.nl&lt;br /&gt;
* [http://www.sture.com/wasp/ WASP Newsgroup search] engine&lt;br /&gt;
* [http://www.starzen.com StarZen Technologies] Addon Tools, Books, Magazines, Consulting&lt;br /&gt;
&lt;br /&gt;
[[Category: Visual DataFlex]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Visual_DataFlex&amp;diff=1696</id>
		<title>Visual DataFlex</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Visual_DataFlex&amp;diff=1696"/>
		<updated>2008-02-12T16:59:52Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* How To */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Visual Dataflex Applications&#039;&#039;&#039; are Windows based applications.  This page is a collection of articles related to developing Windows applications in VDF.&lt;br /&gt;
&lt;br /&gt;
For those of you who are new to Visual DataFlex, take a look at the  [http://www.dataaccess.nl/Include/ElectosFileStreaming.asp?FileId=750 Visual DataFlex quickstart guide ]    &lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
These articles related to the basic concepts of VDF programming:&lt;br /&gt;
*[[Using DataDictionaries]]&lt;br /&gt;
*[[Lookup List]]&lt;br /&gt;
*[[Data Entry Object]]&lt;br /&gt;
*[[Rounding Numbers]]&lt;br /&gt;
&lt;br /&gt;
==How To==&lt;br /&gt;
Articles with step by step guides on how to add functionality to your program:&lt;br /&gt;
*[[Using On_key for undefined keys]]&lt;br /&gt;
*[[Add Workspace Parameter|Adding Workspace Parameters]] using the [[cIniFile]] class&lt;br /&gt;
*Adding [[SMTP Email]] to your application using an [[ActiveX]] control&lt;br /&gt;
*[[Run only one instance of your application]]&lt;br /&gt;
*[[Converting from DOS to Windows]]&lt;br /&gt;
*[[COM|Using COM Objects]] (reuse existing functionality)&lt;br /&gt;
*[[Customize prompt lookup behaviour in a dbgrid]]&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* http://www.visualdataflex.com&lt;br /&gt;
* http://www.visualdataflex.ru (Russian)&lt;br /&gt;
* http://www.dataaccess.com&lt;br /&gt;
* http://www.dataaccess.nl&lt;br /&gt;
* [http://www.sture.com/wasp/ WASP Newsgroup search] engine&lt;br /&gt;
* [http://www.starzen.com StarZen Technologies] Addon Tools, Books, Magazines, Consulting&lt;br /&gt;
&lt;br /&gt;
[[Category: Visual DataFlex]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Portal:DataFlex_Community&amp;diff=1694</id>
		<title>Portal:DataFlex Community</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Portal:DataFlex_Community&amp;diff=1694"/>
		<updated>2008-02-07T09:13:40Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Historical Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Dataflex Community&#039;&#039;&#039; presents a wide range of events around the world, ranging from formal training to informal user get togethers.&lt;br /&gt;
&lt;br /&gt;
==Prominent Groups and Conferences==&lt;br /&gt;
*[[DISD]] - an annual conference run in Carson City, NV, USA&lt;br /&gt;
*[[Dataflex Developers and Users Group]] - Australian and New Zealand DataFlex users&lt;br /&gt;
*[[EDUC]]&lt;br /&gt;
*[[MMISL]]&lt;br /&gt;
*[[NEDC]] - Northeast Dataflex Consortium&lt;br /&gt;
*[[ScanDUC]]&lt;br /&gt;
*[[Synergy]]&lt;br /&gt;
*[[VDF SIG UK]] - Visual DataFlex Special Interest Group - UK DF and VDF group&lt;br /&gt;
&lt;br /&gt;
==Coming Events==&lt;br /&gt;
===User Group Events===&lt;br /&gt;
*[[DISD 2008]] - February 21-23, Carson City Nevada, USA&lt;br /&gt;
*[[South Australia DataFlex Users Group|SA DataFlex Users Group]] - Meeting 19th February 2008 - &#039;&#039;Creating [[ActiveX]] controls using MFC&#039;&#039;&lt;br /&gt;
*[[EDUC8]] - June 5-6 2008, Copenhagen, Denmark&lt;br /&gt;
*[[DDUG]] - August/September 2008, Perth, Australia (TBC)&lt;br /&gt;
&lt;br /&gt;
===Dataflex Training===&lt;br /&gt;
&lt;br /&gt;
==Historical Events==&lt;br /&gt;
*[[Visual DataFlex]] Training, Miami, Florida, USA, December 3-7 2007 [http://www.dataaccess.com/Training/DANA]&lt;br /&gt;
**Discovering [[COM]], December 3-4 &lt;br /&gt;
**[[Codejock]] Extensions in [[Visual DataFlex]], December 5 &lt;br /&gt;
**Discovering [[XML]], December 6&lt;br /&gt;
**Discovering [[Web Services]] in [[Visual DataFlex]], December 7&lt;br /&gt;
*[[Visual DataFlex]] Training, Miami, Florida, USA, January 28-February 1, 2008 [http://www.dataaccess.com/Training/DANA]&lt;br /&gt;
**Discovering [[Web Application Server]], January 28-29 &lt;br /&gt;
**Discovering [[Web Services]] in [[Visual DataFlex]], January 30&lt;br /&gt;
**Exploring External Controls and [[DLL|DLLs]], January 31&lt;br /&gt;
**Exploring [[Crystal Reports]], February 1*[[Data Access Training and Seminar Luton Oct 2007]] - 24th &amp;amp; 25th October 2007, Luton, UK&lt;br /&gt;
*[[Scanduc7]] - 1st &amp;amp; 2nd November 2007, Fredrikstad, Norway&lt;br /&gt;
&lt;br /&gt;
[[Category:DataFlex Community]]&lt;br /&gt;
[[Category:Portals]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Portal:DataFlex_Community&amp;diff=1693</id>
		<title>Portal:DataFlex Community</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Portal:DataFlex_Community&amp;diff=1693"/>
		<updated>2008-02-07T09:13:06Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Dataflex Training */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Dataflex Community&#039;&#039;&#039; presents a wide range of events around the world, ranging from formal training to informal user get togethers.&lt;br /&gt;
&lt;br /&gt;
==Prominent Groups and Conferences==&lt;br /&gt;
*[[DISD]] - an annual conference run in Carson City, NV, USA&lt;br /&gt;
*[[Dataflex Developers and Users Group]] - Australian and New Zealand DataFlex users&lt;br /&gt;
*[[EDUC]]&lt;br /&gt;
*[[MMISL]]&lt;br /&gt;
*[[NEDC]] - Northeast Dataflex Consortium&lt;br /&gt;
*[[ScanDUC]]&lt;br /&gt;
*[[Synergy]]&lt;br /&gt;
*[[VDF SIG UK]] - Visual DataFlex Special Interest Group - UK DF and VDF group&lt;br /&gt;
&lt;br /&gt;
==Coming Events==&lt;br /&gt;
===User Group Events===&lt;br /&gt;
*[[DISD 2008]] - February 21-23, Carson City Nevada, USA&lt;br /&gt;
*[[South Australia DataFlex Users Group|SA DataFlex Users Group]] - Meeting 19th February 2008 - &#039;&#039;Creating [[ActiveX]] controls using MFC&#039;&#039;&lt;br /&gt;
*[[EDUC8]] - June 5-6 2008, Copenhagen, Denmark&lt;br /&gt;
*[[DDUG]] - August/September 2008, Perth, Australia (TBC)&lt;br /&gt;
&lt;br /&gt;
===Dataflex Training===&lt;br /&gt;
&lt;br /&gt;
==Historical Events==&lt;br /&gt;
*[[Data Access Training and Seminar Luton Oct 2007]] - 24th &amp;amp; 25th October 2007, Luton, UK&lt;br /&gt;
*[[Scanduc7]] - 1st &amp;amp; 2nd November 2007, Fredrikstad, Norway&lt;br /&gt;
&lt;br /&gt;
[[Category:DataFlex Community]]&lt;br /&gt;
[[Category:Portals]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Web_Developer_(Firefox_Extension)&amp;diff=1599</id>
		<title>Web Developer (Firefox Extension)</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Web_Developer_(Firefox_Extension)&amp;diff=1599"/>
		<updated>2007-12-21T08:47:45Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: New page: ===Web Developer Tools=== A must have if you are taking yourself serious as a web developer as it contains lots of helpful tools to troubleshoot/analyze your html/css content.  http://addo...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Web Developer Tools===&lt;br /&gt;
A must have if you are taking yourself serious as a web developer as it contains lots of helpful tools to troubleshoot/analyze your html/css content.&lt;br /&gt;
&lt;br /&gt;
http://addons.mozilla.org/firefox/addon/60&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Quizmaster&amp;diff=1598</id>
		<title>Quizmaster</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Quizmaster&amp;diff=1598"/>
		<updated>2007-12-21T08:43:05Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: New page: ===Quizmaster Manager===  A magnificent code example (full source included!) written by Nils Svedmyr that displays many of the features in the new Codejock controls as are now supplied wit...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Quizmaster Manager===&lt;br /&gt;
&lt;br /&gt;
A magnificent code example (full source included!) written by Nils Svedmyr that displays many of the features in the new Codejock controls as are now supplied with VDF12.1&lt;br /&gt;
&lt;br /&gt;
The project is available as a direct download from its [http://www.vdf-guidance.com/Projects.asp?Page=QMM Quizmaster manager project] at [http://www.vdf-guidance.com vdf-guidance]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=Development_Tools&amp;diff=1274</id>
		<title>Development Tools</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=Development_Tools&amp;diff=1274"/>
		<updated>2007-11-26T14:04:10Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Third Party Development Environments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For any Dataflex Developer there are a range of tools useful for many situations.&lt;br /&gt;
&lt;br /&gt;
==Data Access Tools==&lt;br /&gt;
[[Data Access]] provide a core of development tools vital to Dataflex development.&lt;br /&gt;
*[[Visual DataFlex Studio]]&lt;br /&gt;
*[[Database Builder]]&lt;br /&gt;
*[[Database Explorer]]&lt;br /&gt;
&lt;br /&gt;
==Third Party Development Environments==&lt;br /&gt;
Other tools have been developed by the dataflex community over the years.  These tools frequently take inspiration from the larger development community and often preview features which eventually make it into the official VDF Studio.&lt;br /&gt;
*[[Eclipse]]&lt;br /&gt;
*[[The Hammer]]&lt;br /&gt;
&lt;br /&gt;
==Dataflex Libraries==&lt;br /&gt;
*[[VDF Query]]&lt;br /&gt;
&lt;br /&gt;
==Other Tools==&lt;br /&gt;
*[[Version Control]]&lt;br /&gt;
*[[File Comparison]]&lt;br /&gt;
*[[Text Editors]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
	<entry>
		<id>https://dataflex.wiki/index.php?title=SOA&amp;diff=638</id>
		<title>SOA</title>
		<link rel="alternate" type="text/html" href="https://dataflex.wiki/index.php?title=SOA&amp;diff=638"/>
		<updated>2007-10-16T15:09:01Z</updated>

		<summary type="html">&lt;p&gt;217.149.208.61: /* Service oriented architecture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Service oriented architecture ==&lt;br /&gt;
&lt;br /&gt;
Do you need an easy way to expose your [[Visual DataFlex]] code to another system?&lt;br /&gt;
&lt;br /&gt;
Then create a [[Web Service]] , that exposes your functionality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Web Services]]&lt;br /&gt;
[[Category:System Integration]]&lt;/div&gt;</summary>
		<author><name>217.149.208.61</name></author>
	</entry>
</feed>