<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Moxie Data Weblog</title>
    <link>http://blog.moxiedata.com/</link>
    <description />
    <language>en-us</language>
    <copyright>Moxie Data, Inc.</copyright>
    <lastBuildDate>Mon, 10 Mar 2008 00:21:17 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>binarybo@moxiedata.com</managingEditor>
    <webMaster>binarybo@moxiedata.com</webMaster>
    <item>
      <trackback:ping>http://blog.moxiedata.com/Trackback.aspx?guid=895cd811-a9cb-4e43-b807-49e9947facc6</trackback:ping>
      <pingback:server>http://blog.moxiedata.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.moxiedata.com/PermaLink,guid,895cd811-a9cb-4e43-b807-49e9947facc6.aspx</pingback:target>
      <dc:creator>Bo Durban</dc:creator>
      <wfw:comment>http://blog.moxiedata.com/CommentView,guid,895cd811-a9cb-4e43-b807-49e9947facc6.aspx</wfw:comment>
      <wfw:commentRss>http://blog.moxiedata.com/SyndicationService.asmx/GetEntryCommentsRss?guid=895cd811-a9cb-4e43-b807-49e9947facc6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here are 3 more issues evaluated. We are still at low to medium impact for upgrading
to SP2. Not nearly as bad as all the hype would lead you to believe.
</p>
        <p>
There are some annoyances, no doubt, but I would like to get through the hype to find
out what the real impact is. And I would still encourage anyone reading this, who
has not installed SP2 yet, to download Rick Schummer's <a href="http://www.whitelightcomputing.com/resources/VFP9AllVersionsOnOneComputer.pdf">white
paper</a> and get SP2 installed and test it against your apps. And most importantly
report any issues you find to <a href="https://connect.microsoft.com/VisualStudio/feedback/CreateFeedback.aspx">Microsoft
Feedback</a> and/or the <a href="http://fox.wikis.com/wc.dll?Wiki~VFP9SP2BugList~Wiki">VFP9
SP2 Bug List</a> page.
</p>
        <p>
          <strong>Issue:</strong> Right click on controls for code doesn't focus on correct
control<br /><strong>Submitted By:</strong> Gary Parsons<br /><strong>New to SP2:</strong> Yes<br /><strong>Impact for SP2:</strong> Low<br /><strong>Feedback ID:</strong><a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=328226">328226</a><br /><strong>Solution Available:</strong> No<br /><strong>Workaround Available:</strong> Yes<br /><strong>Bug Location:</strong> VFP9 Core
</p>
        <p>
Here are the steps to reproduce from the Microsoft Feedback page:
</p>
        <p>
1. Create form in Form Designer. Add some controls.<br />
2. Right click on a object in a form... select "code" from the shortcut menu.<br />
3. Close code window.<br />
4. Right click on a different object... select "code" from the shortcut menu.<br />
5. Code window opens with the previous object selected.
</p>
        <p>
You can also reproduce the bug by selecting “View” -&gt; “Code” from the system menu.
It always shows the code from the previously viewed object. No matter what object
is selected on the form. This is defiantly new to SP2. This behavior was not in previous
versions of FoxPro. The workaround is to either double click on the control or use
the “View Code” button in the “Form Designer” toolbar.
</p>
        <p>
Should this stop you from upgrading to SP2? No. This may be annoying to developers
who are used to using the right-click menu. But double click is just as easy. I would
like to see this fixed myself, but since it is a designer only issues and should not
affect your distributed apps I believe it has low impact on upgrading to SP2. If this
is annoying to you, I recommend you click on the <a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=328226">Feedback
ID link</a> and let Microsoft know about it. 
</p>
        <p>
          <img src="http://blog.moxiedata.com/content/binary/rightclickbug.gif" border="0" />
        </p>
        <p>
          <br />
 
</p>
        <p>
          <strong>Issue:</strong> Overlapped containers and visibility<br /><strong>Submitted By:</strong> Alexander Lagler<br /><strong>New to SP2:</strong> No<br /><strong>Impact for SP2:</strong> None<br /><strong>Feedback ID:</strong> N/A<br /><strong>Solution Available:</strong> No<br /><strong>Workaround Available:</strong> Yes<br /><strong>Bug Location:</strong> VFP9 Core
</p>
        <p>
This is one of 2 issues reported by Alexander Lagler and added to the Visual FoxPro
Wiki <a href="http://fox.wikis.com/wc.dll?Wiki~VFP9SP2BugList~Wiki">VFP 9 SP2 Bug
List</a> by Steven Black. As the description states; this issue is not new to SP2.
It has even been around long before VFP9.
</p>
        <p>
A test form is available for <a href="http://fox.wikis.com/files/sicherung_v1.zip">download</a>.
To test, run the form and click on the Listbox to see that it is active. Now click
on the “Switch Container with Listboxes at same position” button. This changes the
visibility of the 2 containers so now only the 2nd container is visible. When you
click on this listbox, nothing happens.
</p>
        <p>
The workaround can be simulated by choosing the “Set listbox’s visible property…”
radio button. As the prompt states, it sets the Visible property of the Listbox when
changing the Visible property of it’s container. It now works as expected.
</p>
        <p>
Should this prevent you from upgrading to SP2? No. This is not a new issue. I did
notice that this has no Feedback ID. I have not been able to locate it on Microsoft’s
website. If someone knows if this has been reported, please send me a link to the
Feedback ID.
</p>
        <p>
 
</p>
        <p>
          <strong>Issue:</strong> Selecting from dirty VFP cursors (or tables)<br /><strong>Submitted By:</strong> Alexander Lagler<br /><strong>New to SP2:</strong> No<br /><strong>Impact for SP2:</strong> None<br /><strong>Feedback ID:</strong> N/A<br /><strong>Solution Available:</strong> No<br /><strong>Workaround Available:</strong> Yes, but your aren't gonna like it.<br /><strong>Bug Location:</strong> VFP9 Core
</p>
        <p>
This is the 2nd issue reported by Alexander. It involves selecting data from a dirty
buffered cursor in a large loop. The description hints that this is a new issue, but
it is actually reproducible in VFP9 RTM and VFP9 SP1. It is NOT new to SP2. The repro
code is in the same <a href="http://fox.wikis.com/files/sicherung_v1.zip">download</a> as
the previous bug.
</p>
        <p>
The ability to SELECT from buffered data is new for VFP9. The issue can occur when
you have several buffered records that are either inserted or deleted and then try
to SELECT from that data. I have not been able to reproduce the issue with just UPDATEd
buffered data. Only if INSERTs and DELETEs are included. The issue occurs whether
you use the WITH BUFFERING = .T. clause or if you issue a SET SQLBUFFERING ON before
issuing the SELECT.
</p>
        <p>
It seems to happen randomly and can affect machines differently. Sometimes you get
a C5 error and other times it just locks up VFP and spikes your CPU usage. I cannot
find anything in the environment that could be use to determine that the error is
about to occur. It appears that INSERTed or DELETEd data somehow gets a rogue pointer
and sends VFP off into never-never land.
</p>
        <p>
The workaround, is...well...don't SELECT from buffered data with known INSERTs and
DELETEs. But if you haven't seen this issue yet, then you are probably OK, because
the feature AND the bug were introduced in VFP9.
</p>
        <p>
Should this stop you from upgrading to SP2? No. This is not new to SP2. This should
not even stop you from upgrading from an earlier version of VFP because this feature
is only available in VFP 9, so you are not missing anything. I cannot find this issue
on the MS Feedback site either. If someone has the ID, please let me know or post
it on the VFP9 SP2 Bug List page. If I don’t get a response back I will add this to
the Microsoft Feedback page. This is a great feature; it would be nice to see Microsoft
get it working properly.
</p>
        <p>
          <strong>
          </strong> 
</p>
        <p>
          <strong>What's Next:</strong>
        </p>
        <p>
I am getting a lot of request/questions about the reporting bugs. I may jump ahead
to those and cover them in my next entry. The data group bug probably has the biggest
impact for most people. My time will be limited over the next couple of days, but
I will post what I can in the next day or two.<br /></p>
        <p>
 
</p>
        <img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=895cd811-a9cb-4e43-b807-49e9947facc6" />
      </body>
      <title>Visual FoxPro 9.0 SP2 or not... Post 4</title>
      <guid isPermaLink="false">http://blog.moxiedata.com/PermaLink,guid,895cd811-a9cb-4e43-b807-49e9947facc6.aspx</guid>
      <link>http://blog.moxiedata.com/PermaLink,guid,895cd811-a9cb-4e43-b807-49e9947facc6.aspx</link>
      <pubDate>Mon, 10 Mar 2008 00:21:17 GMT</pubDate>
      <description>&lt;p&gt;
Here are 3 more issues evaluated. We are still at low to medium&amp;nbsp;impact for upgrading
to SP2. Not nearly as bad as all the hype would lead you to believe.
&lt;/p&gt;
&lt;p&gt;
There are some annoyances, no doubt, but I would like to get through the hype to find
out what the real impact is. And I would still encourage anyone reading this, who
has not installed SP2 yet, to download Rick Schummer's &lt;a href="http://www.whitelightcomputing.com/resources/VFP9AllVersionsOnOneComputer.pdf"&gt;white
paper&lt;/a&gt; and get SP2 installed and test it against your apps. And most importantly
report any issues you find to &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/CreateFeedback.aspx"&gt;Microsoft
Feedback&lt;/a&gt; and/or the &lt;a href="http://fox.wikis.com/wc.dll?Wiki~VFP9SP2BugList~Wiki"&gt;VFP9
SP2 Bug List&lt;/a&gt; page.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Issue:&lt;/strong&gt; Right click on controls for code doesn't focus on correct
control&lt;br&gt;
&lt;strong&gt;Submitted By:&lt;/strong&gt; Gary Parsons&lt;br&gt;
&lt;strong&gt;New to SP2:&lt;/strong&gt; Yes&lt;br&gt;
&lt;strong&gt;Impact for SP2:&lt;/strong&gt; Low&lt;br&gt;
&lt;strong&gt;Feedback ID:&lt;/strong&gt; &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=328226"&gt;328226&lt;/a&gt;
&lt;br&gt;
&lt;strong&gt;Solution Available:&lt;/strong&gt; No&lt;br&gt;
&lt;strong&gt;Workaround Available:&lt;/strong&gt; Yes&lt;br&gt;
&lt;strong&gt;Bug Location:&lt;/strong&gt; VFP9 Core
&lt;/p&gt;
&lt;p&gt;
Here are the steps to reproduce from the Microsoft Feedback page:
&lt;/p&gt;
&lt;p&gt;
1. Create form in Form Designer. Add some controls.&lt;br&gt;
2. Right click on a object in a form... select "code" from the shortcut menu.&lt;br&gt;
3. Close code window.&lt;br&gt;
4. Right click on a different object... select "code" from the shortcut menu.&lt;br&gt;
5. Code window opens with the previous object selected.
&lt;/p&gt;
&lt;p&gt;
You can also reproduce the bug by selecting “View” -&amp;gt; “Code” from the system menu.
It always shows the code from the previously viewed object. No matter what object
is selected on the form. This is defiantly new to SP2. This behavior was not in previous
versions of FoxPro. The workaround is to either double click on the control or use
the “View Code” button in the “Form Designer” toolbar.
&lt;/p&gt;
&lt;p&gt;
Should this stop you from upgrading to SP2? No. This may be annoying to developers
who are used to using the right-click menu. But double click is just as easy. I would
like to see this fixed myself, but since it is a designer only issues and should not
affect your distributed apps I believe it has low impact on upgrading to SP2. If this
is annoying to you, I recommend you click on the &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=328226"&gt;Feedback
ID link&lt;/a&gt; and let Microsoft know about it. 
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.moxiedata.com/content/binary/rightclickbug.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Issue:&lt;/strong&gt; Overlapped containers and visibility&lt;br&gt;
&lt;strong&gt;Submitted By:&lt;/strong&gt; Alexander Lagler&lt;br&gt;
&lt;strong&gt;New to SP2:&lt;/strong&gt; No&lt;br&gt;
&lt;strong&gt;Impact for SP2:&lt;/strong&gt; None&lt;br&gt;
&lt;strong&gt;Feedback ID:&lt;/strong&gt; N/A&lt;br&gt;
&lt;strong&gt;Solution Available:&lt;/strong&gt; No&lt;br&gt;
&lt;strong&gt;Workaround Available:&lt;/strong&gt; Yes&lt;br&gt;
&lt;strong&gt;Bug Location:&lt;/strong&gt; VFP9 Core
&lt;/p&gt;
&lt;p&gt;
This is one of 2 issues reported by Alexander Lagler and added to the Visual FoxPro
Wiki &lt;a href="http://fox.wikis.com/wc.dll?Wiki~VFP9SP2BugList~Wiki"&gt;VFP 9 SP2 Bug
List&lt;/a&gt; by Steven Black. As the description states; this issue is not new to SP2.
It has even been around long before VFP9.
&lt;/p&gt;
&lt;p&gt;
A test form is available for &lt;a href="http://fox.wikis.com/files/sicherung_v1.zip"&gt;download&lt;/a&gt;.
To test, run the form and click on the Listbox to see that it is active. Now click
on the “Switch Container with Listboxes at same position” button. This changes the
visibility of the 2 containers so now only the 2nd container is visible. When you
click on this listbox, nothing happens.
&lt;/p&gt;
&lt;p&gt;
The workaround can be simulated by choosing the “Set listbox’s visible property…”
radio button. As the prompt states, it sets the Visible property of the Listbox when
changing the Visible property of it’s container. It now works as expected.
&lt;/p&gt;
&lt;p&gt;
Should this prevent you from upgrading to SP2? No. This is not a new issue. I did
notice that this has no Feedback ID. I have not been able to locate it on Microsoft’s
website. If someone knows if this has been reported, please send me a link to the
Feedback ID.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Issue:&lt;/strong&gt; Selecting from dirty VFP cursors (or tables)&lt;br&gt;
&lt;strong&gt;Submitted By:&lt;/strong&gt; Alexander Lagler&lt;br&gt;
&lt;strong&gt;New to SP2:&lt;/strong&gt; No&lt;br&gt;
&lt;strong&gt;Impact for SP2:&lt;/strong&gt; None&lt;br&gt;
&lt;strong&gt;Feedback ID:&lt;/strong&gt; N/A&lt;br&gt;
&lt;strong&gt;Solution Available:&lt;/strong&gt; No&lt;br&gt;
&lt;strong&gt;Workaround Available:&lt;/strong&gt; Yes, but your aren't gonna like it.&lt;br&gt;
&lt;strong&gt;Bug Location:&lt;/strong&gt; VFP9 Core
&lt;/p&gt;
&lt;p&gt;
This is the 2nd issue reported by Alexander. It involves selecting data from a dirty
buffered cursor in a large loop. The description hints that this is a new issue, but
it is actually reproducible in VFP9 RTM and VFP9 SP1. It is NOT new to SP2. The repro
code is in the same &lt;a href="http://fox.wikis.com/files/sicherung_v1.zip"&gt;download&lt;/a&gt; as
the previous bug.
&lt;/p&gt;
&lt;p&gt;
The ability to SELECT from buffered data is new for VFP9. The issue can occur when
you have several buffered records that are either inserted or deleted and then try
to SELECT from that data. I have not been able to reproduce the issue with just UPDATEd
buffered data. Only if INSERTs and DELETEs are included. The issue occurs whether
you use the WITH BUFFERING = .T. clause or if you issue a SET SQLBUFFERING ON before
issuing the SELECT.
&lt;/p&gt;
&lt;p&gt;
It seems to happen randomly and can affect machines differently. Sometimes you get
a C5 error and other times it just locks up VFP and spikes your CPU usage. I cannot
find anything in the environment that could be use to determine that the error is
about to occur. It appears that INSERTed or DELETEd data somehow gets a rogue pointer
and sends VFP off into never-never land.
&lt;/p&gt;
&lt;p&gt;
The workaround, is...well...don't SELECT from buffered data with known INSERTs and
DELETEs. But if you haven't seen this issue yet, then you are probably OK, because
the feature&amp;nbsp;AND the bug were introduced in VFP9.
&lt;/p&gt;
&lt;p&gt;
Should this stop you from upgrading to SP2? No. This is not new to SP2. This should
not even stop you from upgrading from an earlier version of VFP because this feature
is only available in VFP 9, so you are not missing anything. I cannot find this issue
on the MS Feedback site either. If someone has the ID, please let me know or post
it on the VFP9 SP2 Bug List page. If I don’t get a response back I will add this to
the Microsoft Feedback page. This is a great feature; it would be nice to see Microsoft
get it working properly.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What's Next:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I am getting a lot of request/questions about the reporting bugs. I may jump ahead
to those and cover them in my next entry. The data group bug probably has the biggest
impact for most people. My time will be limited over the next couple of days, but
I will post what I can in the next day or two.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=895cd811-a9cb-4e43-b807-49e9947facc6" /&gt;</description>
      <comments>http://blog.moxiedata.com/CommentView,guid,895cd811-a9cb-4e43-b807-49e9947facc6.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://blog.moxiedata.com/Trackback.aspx?guid=6c770106-1840-469e-987f-69d3e9318484</trackback:ping>
      <pingback:server>http://blog.moxiedata.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.moxiedata.com/PermaLink,guid,6c770106-1840-469e-987f-69d3e9318484.aspx</pingback:target>
      <dc:creator>Bo Durban</dc:creator>
      <wfw:comment>http://blog.moxiedata.com/CommentView,guid,6c770106-1840-469e-987f-69d3e9318484.aspx</wfw:comment>
      <wfw:commentRss>http://blog.moxiedata.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6c770106-1840-469e-987f-69d3e9318484</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I apologize for not posting this sooner. It has been a little busy lately...
</p>
        <p>
I have graciously agreed to take on the role of project manager for the VFP9 reporting
APPs and _ReportListener FFC libraries on <a href="http://www.codeplex.com/vfpx">VFPx</a>.
This responsibility will include releasing code updates and coordinating any enhancement
requests going forward. I think <a href="http://spacefold.com/lisa/">Lisa Slater Nicholls</a> and <a href="http://spacefold.com/colin/">Colin
Nicholls</a> did a fantastic job with the new reporting features in VFP 9 and the
additions made in SP2 are a nice plus. I am honored to be chosen to help carry
the project forward.
</p>
        <p>
See Lisa's comments <a href="http://spacefold.com/lisa/post/Reporting-Apps%2c-CodePlexVFPX%2c-and-You.aspx">here</a></p>
        <p>
Lisa has been very helpful to me and my <a href="http://www.moxiedata.com/objects.html">product</a> since
the reporting features were in beta and she has agreed to be available during the
transition, if needed. She has also stated that she and Colin will continue the
work on the <a href="http://spacefold.com/articles/tmm/">TMM documentation</a> as
their busy schedule permits.
</p>
        <p>
I am in the process of dissecting all of the known bugs related to SP2. I am especially
sensitive to any Reporting related issues. So far, most all of the issues appear to
be in the core product, but if I find an opportunity to address it with an XSource
solution, I will try to make that workaround available on VFPx until we can get a
core fix from Microsoft.
</p>
        <p>
If you find an issue that needs to be addressed, or you have an enhancement request
that you think would be benefecial to the community, or you have a really cool feature
you would like to share, you are welcome to post a <a href="http://www.codeplex.com/VFPX/Thread/List.aspx">discussion</a> onto
the VFPx web site to be considered for a future release.
</p>
        <img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=6c770106-1840-469e-987f-69d3e9318484" />
      </body>
      <title>VFP9 Reporting APPs on VFPx</title>
      <guid isPermaLink="false">http://blog.moxiedata.com/PermaLink,guid,6c770106-1840-469e-987f-69d3e9318484.aspx</guid>
      <link>http://blog.moxiedata.com/PermaLink,guid,6c770106-1840-469e-987f-69d3e9318484.aspx</link>
      <pubDate>Thu, 06 Mar 2008 06:17:48 GMT</pubDate>
      <description>&lt;p&gt;
I apologize for not posting this sooner. It has been a little busy lately...
&lt;/p&gt;
&lt;p&gt;
I have graciously agreed to take on the role of project manager for the VFP9 reporting
APPs and _ReportListener FFC libraries on &lt;a href="http://www.codeplex.com/vfpx"&gt;VFPx&lt;/a&gt;.
This responsibility will include releasing code updates and coordinating any enhancement
requests going forward. I think &lt;a href="http://spacefold.com/lisa/"&gt;Lisa Slater Nicholls&lt;/a&gt; and &lt;a href="http://spacefold.com/colin/"&gt;Colin
Nicholls&lt;/a&gt; did a fantastic job with the new reporting features in VFP 9 and the
additions made in SP2 are a nice plus. I am honored to be chosen&amp;nbsp;to help&amp;nbsp;carry
the project forward.
&lt;/p&gt;
&lt;p&gt;
See Lisa's comments &lt;a href="http://spacefold.com/lisa/post/Reporting-Apps%2c-CodePlexVFPX%2c-and-You.aspx"&gt;here&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Lisa has been very helpful to me and my&amp;nbsp;&lt;a href="http://www.moxiedata.com/objects.html"&gt;product&lt;/a&gt; since
the reporting features were in beta and she has agreed to be available during the
transition, if needed.&amp;nbsp;She has also stated that&amp;nbsp;she and Colin will continue&amp;nbsp;the
work on the &lt;a href="http://spacefold.com/articles/tmm/"&gt;TMM documentation&lt;/a&gt; as
their busy schedule permits.
&lt;/p&gt;
&lt;p&gt;
I am in the process of dissecting all of the known bugs related to SP2. I am especially
sensitive to any Reporting related issues. So far, most all of the issues appear to
be in the core product, but if I find an opportunity to address it with an XSource
solution, I will try to make that workaround available on VFPx until we can get a
core fix from Microsoft.
&lt;/p&gt;
&lt;p&gt;
If you find an issue that needs to be addressed, or you have an enhancement request
that you think would be benefecial to the community, or you have a really cool feature
you would like to share, you are welcome to post a &lt;a href="http://www.codeplex.com/VFPX/Thread/List.aspx"&gt;discussion&lt;/a&gt;&amp;nbsp;onto
the VFPx web site to be considered for a future release.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=6c770106-1840-469e-987f-69d3e9318484" /&gt;</description>
      <comments>http://blog.moxiedata.com/CommentView,guid,6c770106-1840-469e-987f-69d3e9318484.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://blog.moxiedata.com/Trackback.aspx?guid=51100058-840d-446a-a236-9f51aa24a7c2</trackback:ping>
      <pingback:server>http://blog.moxiedata.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.moxiedata.com/PermaLink,guid,51100058-840d-446a-a236-9f51aa24a7c2.aspx</pingback:target>
      <dc:creator>Bo Durban</dc:creator>
      <wfw:comment>http://blog.moxiedata.com/CommentView,guid,51100058-840d-446a-a236-9f51aa24a7c2.aspx</wfw:comment>
      <wfw:commentRss>http://blog.moxiedata.com/SyndicationService.asmx/GetEntryCommentsRss?guid=51100058-840d-446a-a236-9f51aa24a7c2</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <title>Visual FoxPro 9.0 SP2 or not... Post 3</title>
      <guid isPermaLink="false">http://blog.moxiedata.com/PermaLink,guid,51100058-840d-446a-a236-9f51aa24a7c2.aspx</guid>
      <link>http://blog.moxiedata.com/PermaLink,guid,51100058-840d-446a-a236-9f51aa24a7c2.aspx</link>
      <pubDate>Wed, 05 Mar 2008 22:47:41 GMT</pubDate>
      <description>&lt;p&gt;
Here are 5 more SP2 bugs evaluated. These were all reported by &lt;a href="http://weblogs.foxite.com/bernardbout/"&gt;Bernard
Bout&lt;/a&gt;. Even though&amp;nbsp;I am kind of downplaying the severity of some of these
issues, I really do&amp;nbsp;appreciate him posting his finds on the &lt;a href="http://fox.wikis.com/wc.dll?Wiki~VFP9SP2BugList~Wiki"&gt;SP2
Bug List&lt;/a&gt; and on the Microsoft Feedback site. Part of the reson I am doing this
series is to encourage other people to get SP2 installed and evaluated. If you find
an issue, please let us know and most importantly, &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/CreateFeedback.aspx"&gt;report
it to Microsoft&lt;/a&gt;. If we all sit back and let other people like Bernard and &lt;a href="http://cathypountney.blogspot.com/"&gt;Cathy
Poutney&lt;/a&gt; find all the issues, what percentage of the issues are we going to actually&amp;nbsp;find?
We can't just&amp;nbsp;sit back and talk about Microsoft as a 3rd party and say that they
owe us a better product, but never tell them what's wrong. I believe Microsoft is
willing to address critical issues in the core, if we let them know about them. 
&lt;/p&gt;
&lt;p&gt;
Microsoft may be willing to address issues in the XSource, but that really doesn't
concern me because we can take care of those issues ourselves. All of the XSource
is now on &lt;a href="http://www.codeplex.com/vfpx"&gt;VFPX&lt;/a&gt;, waiting for issues to be
reported and/or developers to fix them....
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Issue:&lt;/strong&gt; Help file missing items off the index tab&lt;br&gt;
&lt;strong&gt;Submitted By:&lt;/strong&gt; &lt;a href="http://weblogs.foxite.com/bernardbout/"&gt;Bernard
Bout&lt;/a&gt;
&lt;br&gt;
&lt;strong&gt;New to SP2:&lt;/strong&gt; Yes&lt;br&gt;
&lt;strong&gt;Impact for SP2:&lt;/strong&gt; Low&lt;br&gt;
&lt;strong&gt;Feedback ID:&lt;/strong&gt; &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=306332"&gt;306332&lt;/a&gt;
&lt;br&gt;
&lt;strong&gt;Solution Available:&lt;/strong&gt; No&lt;br&gt;
&lt;strong&gt;Workaround Available:&lt;/strong&gt; Yes&lt;br&gt;
&lt;strong&gt;Bug Location:&lt;/strong&gt; VFP9 Help
&lt;/p&gt;
&lt;p&gt;
I can’t imagine how this happened, but it did. But just to clarify, all of the help
items are in the SP2 help file; the issue is that over 100 help items do not appear
in the “Index” tab. This not only affects the index tab, but also highlighting a keyword
in code and hitting F1.
&lt;/p&gt;
&lt;p&gt;
The good news is that Bernard has confirmed that Microsoft is already working on this
problem and we should have a fixed help file soon. Until then you can use the “Search”
tab to locate the help topic you are looking for. You can also just use the help file
from SP1. Just make a backup of dv_foxhelp.chm file from VFP9 or SP1 before upgrading
and either use Tools -&amp;gt; Options -&amp;gt; File locations to set the old help file or
just copy it into the HOME(1) folder of VFP9 after installing SP2 to overwrite the
SP2 help file.
&lt;/p&gt;
&lt;p&gt;
Should this stop you from upgrading to SP2? No. It’s an easy workaround, a fix is
on its way and it shouldn’t affect your applications in anyway.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Issue:&lt;/strong&gt; VFP SP2 ToolTipText not displaying for Grid.Column.Header
and Grid.Column&lt;br&gt;
&lt;strong&gt;Submitted By:&lt;/strong&gt; &lt;a href="http://weblogs.foxite.com/bernardbout/"&gt;Bernard
Bout&lt;/a&gt;
&lt;br&gt;
&lt;strong&gt;New to SP2:&lt;/strong&gt; Yes &lt;strike&gt;, but I should mention that this was broken
in VFP9 RTM, fixed is SP1 and broken again in SP2.&lt;/strike&gt;
&lt;br&gt;
&lt;strong&gt;Impact for SP2:&lt;/strong&gt; Medium&lt;br&gt;
&lt;strong&gt;Feedback ID:&lt;/strong&gt; &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=311817"&gt;311817&lt;br&gt;
&lt;/a&gt;&lt;strong&gt;Solution Available:&lt;/strong&gt; No&lt;br&gt;
&lt;strong&gt;Workaround Available:&lt;/strong&gt; Yes, but probably not satisfactory for developers
that use this functionality.&lt;br&gt;
&lt;strong&gt;Bug Location:&lt;/strong&gt; VFP9 Core
&lt;/p&gt;
&lt;p&gt;
I can only speculate that this was broken when the 5 or more issues related to grids
or tool tips were addressed in SP2. I can see where this would be very annoying to
developers that use this functionality to deliver well polished applications. &lt;strike&gt;And
especially to see it come and go (new to VFP8, broken in VFP9, fixed in VFP9 SP1,
broken again in VFP9 SP2).&lt;/strike&gt;
&lt;/p&gt;
&lt;p&gt;
(update 03/05 9:37pm - Correction: this bug did not exist in VFP9 RTM. It was introduced
in VFP9 SP2)
&lt;/p&gt;
&lt;p&gt;
There is a workaround using a technique shown on the &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx?FeedbackID=311817"&gt;Feedback&lt;/a&gt;&amp;nbsp;page
and also published in &lt;a href="http://books.google.com/books?id=wKNfTHRNkLAC&amp;amp;pg=PA171&amp;amp;lpg=PA171&amp;amp;dq=%22Using+tool+tip+text+instead+of+multiline+headers%22&amp;amp;source=web&amp;amp;ots=_Z4XnUUjXN&amp;amp;sig=U-aL87JQy_Zek1uJOmJPYSNIreE&amp;amp;hl=en"&gt;1001
Things You Wanted to Know About Visual FoxPro&lt;/a&gt;&amp;nbsp;by &lt;a href="http://fox.wikis.com/wc.dll?Wiki~MarciaAkins"&gt;Marcia
Akins&lt;/a&gt;, &lt;a href="http://weblogs.foxite.com/andykramek/"&gt;Andy Kramek&lt;/a&gt; and &lt;a href="http://www.rickschummer.com/blog/"&gt;Rick
Schummer&lt;/a&gt;. This technique was used back before we had a ToolTipText property for
Headers (which was introduced in VFP8). It basically works by using the MouseEnter
and MouseLeave events to toggle the Grid’s ToolTipText.
&lt;/p&gt;
&lt;p&gt;
This works ok, but because of the way the tool tips are updated and the way the grid
responds to mouse events, it doesn’t always update a smooth as you would like; especially
not as smooth as it worked in VFP8 or in VFP9 SP1. And if you are even using these
tips you are probably a developer who likes to deliver well polished apps and you
are probably not going to like the annoyance that comes with this workaraound.
&lt;/p&gt;
&lt;p&gt;
So if you are using the ToolTipText for Columns or Headers, be aware that they do
not work in VFP9 SP2. I would also HIGHLY recommend that you go to the &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=311817"&gt;Microsoft
Feedback&lt;/a&gt; page and cast your vote on this bug. The more (constructive) feedback
that Microsoft receives about this issue, the better our chances are of having it
fixed.
&lt;/p&gt;
&lt;p&gt;
Should this stop you from upgrading to SP2? Maybe, and only if you are using these
tool tips. If you are not, then there is no reason not to upgrade.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Issue:&lt;/strong&gt; Undocumented change in COM when passing DATETIME value to
.NET&lt;br&gt;
&lt;strong&gt;Submitted By:&lt;/strong&gt; &lt;a href="http://weblogs.foxite.com/bernardbout/"&gt;Bernard
Bout&lt;/a&gt;
&lt;br&gt;
&lt;strong&gt;New to SP2:&lt;/strong&gt; Yes&lt;br&gt;
&lt;strong&gt;Impact for SP2:&lt;/strong&gt; Low to None&lt;br&gt;
&lt;strong&gt;Feedback ID:&lt;/strong&gt; N/A&lt;br&gt;
&lt;strong&gt;Bug Location:&lt;/strong&gt; VFP9 Help
&lt;/p&gt;
&lt;p&gt;
This is not a BUG, but actually a behavior change between SP1 and SP2. And according
to Bernard Bout it is actually fixed in SP2. This was posted to the VFP9 SP2 Bug List
because the behavior change was undocumented.
&lt;/p&gt;
&lt;p&gt;
Should this stop you from upgrading to SP2? Absolutely not.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Issue:&lt;/strong&gt; Web Services Registration - If field returns NULL then error
registering Web Service&lt;br&gt;
&lt;strong&gt;Submitted By:&lt;/strong&gt; &lt;a href="http://weblogs.foxite.com/bernardbout/"&gt;Bernard
Bout&lt;/a&gt;
&lt;br&gt;
&lt;strong&gt;New to SP2:&lt;/strong&gt; Yes&lt;br&gt;
&lt;strong&gt;Impact for SP2:&lt;/strong&gt; Low&lt;br&gt;
&lt;strong&gt;Feedback ID:&lt;/strong&gt; none&lt;br&gt;
&lt;strong&gt;Solution Available:&lt;/strong&gt; Yes&lt;br&gt;
&lt;strong&gt;Bug Location:&lt;/strong&gt; VFP9 XSource
&lt;/p&gt;
&lt;p&gt;
I have not been able to reproduce this error, nor can I find any difference in code
or libraries between SP1 and SP2 that would cause the behavior change. However, Bernard
found it and posted a solution. This is an easy fix with an NVL( ). Since this change
is in the XSource, I think we should fix it out on VFPx instead of involving Microsft.
&lt;/p&gt;
&lt;p&gt;
(update 03/05 9:37pm - &lt;a href="http://www.tomorrowssolutionsllc.com/"&gt;Tamar Granor&lt;/a&gt; supplied
a valid repro for this issue: &lt;a href="http://fox.wikis.com/wikiwebservice.wsdl"&gt;http://fox.wikis.com/wikiwebservice.wsdl&lt;/a&gt;.
Registering this web service using the Intellisense Manager in SP1 works, but fails
in SP2 with a "column does not support null values" error)
&lt;/p&gt;
&lt;p&gt;
Should this stop you from upgrading to SP2? No. It’s an easy fix, It only happens
in the VFP dev environment &lt;strike&gt;and only rarely&lt;/strike&gt;.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Issue:&lt;/strong&gt; Changes to the code in FFC\_reportlistener.vcx breaks SP1
reports&lt;br&gt;
&lt;strong&gt;Submitted By:&lt;/strong&gt; &lt;a href="http://weblogs.foxite.com/bernardbout/"&gt;Bernard
Bout&lt;/a&gt;
&lt;br&gt;
&lt;strong&gt;New to SP2:&lt;/strong&gt; Yes&lt;br&gt;
&lt;strong&gt;Impact for SP2:&lt;/strong&gt; Low&lt;br&gt;
&lt;strong&gt;Feedback ID:&lt;/strong&gt; none&lt;br&gt;
&lt;strong&gt;Solution Available:&lt;/strong&gt; Yes&lt;br&gt;
&lt;strong&gt;Bug Location:&lt;/strong&gt; VFP9 XSource (though it is not really a bug)
&lt;/p&gt;
&lt;p&gt;
As &lt;a href="http://spacefold.com/colin/"&gt;Colin Nicholls&lt;/a&gt; says in the &lt;a href="http://fox.wikis.com/wc.dll?Wiki~VFP9SP2BugList~Wiki"&gt;VFP9
SP2 Bug List&lt;/a&gt;, this is not really a bug. However it is a behavior change between
SP1 and SP2 that caused code not to work&amp;nbsp;from an &lt;a href="http://msdn2.microsoft.com/en-us/library/ms947688.aspx"&gt;article&lt;/a&gt;,
written by &lt;a href="http://doughennig.blogspot.com/"&gt;Doug Hennig&lt;/a&gt;, about including
hyperlinking on reports. There are a couple lines of debate between Bernard and Colin
about whether this should be considered a bug or not. Since my series of blog post
are about dispelling unfair attitudes about SP2, I’m going to have to side with Colin
on this one, and I will explain why. But since there is an easy solution, I think
everybody will be happy in the end.
&lt;/p&gt;
&lt;p&gt;
In Doug’s article he talks about “poking” through the HTMLListener class of _REPORTLISTENER.VCX
and finding this code:
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;xsl:when test="string-length(@href) &amp;amp;gt; 0"&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;A href="{@href}"&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;xsl:call-template name="replaceText"/&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;/A&amp;gt;&lt;br&gt;
&amp;lt;/xsl:when&amp;gt;&lt;/font&gt;&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I’m sure this was the start of what we finally ended up with when we got hyperlink
support in SP2. However this was undocumented and the final SP2 implementation looks
like this:
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;xsl:when test="string-length(@hlink) &amp;amp;gt; 0"&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;a href="{@hlink}"&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;xsl:call-template name="replaceText"/&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;/a&amp;gt;&lt;br&gt;
&amp;lt;/xsl:when&amp;gt;&lt;tt&gt;&lt;?xml:namespace prefix = o /&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/tt&gt;&lt;/font&gt;&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Note the attribute change from “href” to “hlink”. So now the code from Doug’s article
doesn’t work anymore. Bernard posted a solution from &lt;a href="http://www.berezniker.com/blogs/sergey"&gt;Sergey
Berezniker&lt;/a&gt; onto the Solutions To VFP9 SP2 Bugs page. His solution was to just
add the earlier code back to support both old and new options:
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;!--------- Add this --------- --&amp;gt;&lt;br&gt;
&amp;lt;xsl:when test="string-length(@href) &amp;amp;gt; 0"&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;A href=" {@href}"&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;xsl:call-template name="replaceText"/&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;/A&amp;gt;&lt;br&gt;
&amp;lt;/xsl:when&amp;gt;&lt;/font&gt;&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;!-------------- Before this&amp;nbsp; ---------- --&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:otherwise&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:call-template name="replaceText"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:otherwise&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:choose&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Note that this code change would be in the getDefaultUserXsltAsString method of the
HTMLListener class in _REPORTLISTERN.VCX, around line number 428.
&lt;/p&gt;
&lt;p&gt;
Another solution and probably a better idea is to just modify Doug’s code to use “hlink=”
instead of “href=” or just use the new hyperlinking features of SP2. 
&lt;/p&gt;
&lt;p&gt;
(update 03/06: I can confirm now, that changing Doug's code as follows, will fix the
issue also)
&lt;/p&gt;
&lt;p&gt;
Change this line:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; &lt;font color=#800080&gt;lcInfo = lcInfo + ' &lt;strong&gt;href&lt;/strong&gt;="'
+ ;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
To this:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; &lt;font color=#800080&gt;lcInfo = lcInfo + ' &lt;strong&gt;hlink&lt;/strong&gt;="'
+ ;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
And add:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; &lt;font color=#800080&gt;SELECT frx&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Before:
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="Courier New" color=#800080&gt;dimension .aRecords[reccount()]&lt;br&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Should this stop you from upgrading to SP2? No. The change is easy and it only affects
projects that have implemented Doug’s hyperlinking code.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
This is all for now. I will try to take on a few more tomorrow...
&lt;/p&gt;
&lt;p&gt;
I hope this&amp;nbsp;helps you make an informed&amp;nbsp;desision about SP2. Again, my intent
is not to downplay or shun the reported issues. I think they should all be addressed,
but we should all make an informed decision about upgrading to SP2 before we completly
dismiss it.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=51100058-840d-446a-a236-9f51aa24a7c2" /&gt;</description>
      <comments>http://blog.moxiedata.com/CommentView,guid,51100058-840d-446a-a236-9f51aa24a7c2.aspx</comments>
      <category>SP2;VFP Development</category>
    </item>
    <item>
      <trackback:ping>http://blog.moxiedata.com/Trackback.aspx?guid=2bea72cd-5510-44b7-8aaf-29274cca0cd9</trackback:ping>
      <pingback:server>http://blog.moxiedata.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.moxiedata.com/PermaLink,guid,2bea72cd-5510-44b7-8aaf-29274cca0cd9.aspx</pingback:target>
      <dc:creator>Bo Durban</dc:creator>
      <wfw:comment>http://blog.moxiedata.com/CommentView,guid,2bea72cd-5510-44b7-8aaf-29274cca0cd9.aspx</wfw:comment>
      <wfw:commentRss>http://blog.moxiedata.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2bea72cd-5510-44b7-8aaf-29274cca0cd9</wfw:commentRss>
      <slash:comments>8</slash:comments>
      <title>Visual FoxPro 9.0 SP2 or not... Post 2</title>
      <guid isPermaLink="false">http://blog.moxiedata.com/PermaLink,guid,2bea72cd-5510-44b7-8aaf-29274cca0cd9.aspx</guid>
      <link>http://blog.moxiedata.com/PermaLink,guid,2bea72cd-5510-44b7-8aaf-29274cca0cd9.aspx</link>
      <pubDate>Tue, 04 Mar 2008 09:12:57 GMT</pubDate>
      <description>&lt;p&gt;
Something I didn't emphasize in my previous post, but &lt;a href="http://www.sweetpotatosoftware.com/spsblog"&gt;Craig
Boyd&lt;/a&gt; reminded me in his comments, is that many of the issues people faced with
SP2 could be traced back to a problem with the installation. Not with the actual SP2
release itself. 
&lt;/p&gt;
&lt;p&gt;
To ensure a clean install of SP2, you MUST start from scratch. This includes uninstalling
and reinstalling VFP9 RTM. You don’t have to install SP1 before SP2, but if you want
to go back to SP1 or have SP1 available for testing, I highly recommend you get &lt;a href="http://rickschummer.com/blog/2008/03/vfp-9-rtmsp1sp2-one-machine.html"&gt;Rick
Schummer’s white paper&lt;/a&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt; with
instructions&amp;nbsp;on installing both versions on the same machine.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
Ok, so working with the &lt;a href="http://fox.wikis.com/wc.dll?Wiki~VFP9SP2BugList~Wiki"&gt;SP2
Bug List&lt;/a&gt; from the &lt;a href="http://fox.wikis.com/"&gt;Visual FoxPro Wiki&lt;/a&gt;, I’ll
start from the top down:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Issue:&lt;/strong&gt; Toolbar in Report Preview not working with VFP SP2&lt;br&gt;
&lt;strong&gt;Submitted By:&lt;/strong&gt; &lt;a href="http://weblogs.foxite.com/bernardbout/"&gt;Bernard
Bout&lt;/a&gt; and &lt;a href="http://www.viafox.nl"&gt;Peter de Valenca&lt;/a&gt;
&lt;br&gt;
&lt;strong&gt;New to SP2:&lt;/strong&gt; No. However it was reportedly fixed in SP1 and now it’s
back.&lt;br&gt;
&lt;strong&gt;Impact&amp;nbsp;for SP2:&lt;/strong&gt; Low to Medium&lt;br&gt;
&lt;strong&gt;Feedback ID:&lt;/strong&gt; &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=306390"&gt;306390&lt;/a&gt;
&lt;br&gt;
&lt;strong&gt;Solution Available:&lt;/strong&gt; No&lt;br&gt;
&lt;strong&gt;Workaround Available:&lt;/strong&gt; Yes&lt;br&gt;
&lt;strong&gt;Bug Location:&lt;/strong&gt; VFP9 Core&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
This is one of the bugs that gets blamed on the new VFP9 reporting features. However,
this is NOT a bug with the new reporting. It is however exposed by the new reporting.
It occurs when you have a modal form, inside of a top level form along with a toolbar.
The toolbar becomes unavailable. Why was it fixed in SP1 and now its back? I’m guessing
that the change made to SP1 to address the issue may have broken something else and
they had to roll it back. 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
Some background information; I was fortunate enough to make it to the February &lt;a href="http://www.dafug.org/"&gt;Detroit
FoxPro User Group Meeting&lt;/a&gt;, in which &lt;a href="http://www.foxpert.com"&gt;Christof
Wollenhaupt&lt;/a&gt; gave a marathon, 3 hour session on “The Dark Side of Visual FoxPro”.
One of the things he covered was a solution for the VFP bug when using ActiveX controls
with modal windows. He has some information available in a &lt;a href="http://www.foxpert.com/KnowlBits_200801.htm"&gt;blog
entry&lt;/a&gt;. I never realized this but “modal windows do not exist in the Windows API”.
According to Christof, Windows creates a modal state by disabling the parent window.
This explains why you cannot have a “top level” form in VFP that is also “modal” (.ShowWindow
= 2). If it is a top level form, you don't have a parent to&amp;nbsp;disable.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
This also explains what is probably happening when you put a modal form, inside of
a top level form along with a toolbar. Either the toolbar is getting disabled or VFP
is just not responding to the toolbar’s events. This is really no different than issuing
a MESSAGEBOX call and expecting to be able to click on the VFP toolbar. You can’t
do it….by design.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
So is this really a bug? Why would you want to put a modal window inside of a top
level form and expect the toolbar to work? Well, because it’s a hack on a hack trying
to emulate a popular technique used in VFP8 and earlier. If we wanted to preview a
report, in a top level form, we could issue a “REPORT FORM PREVIEW IN WINDOW” command
where the IN WINDOW clause specified a top level form. And if we left off the NOWAIT
clause, this would display our report preview in a modal condition.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
So what is different in VFP9 reporting? The main difference is now we have the ability
to make our own custom report previewers using the ReportListener class along with
real VFP forms and objects. The window we get with a VFP Form does not behave the
same as the window we get when we issue “REPORT FORM PREVIEW” in VFP8. The old report
preview window was handled internally by VFP. We had no control over how it was being
managed or painted behind the scenes. We also have no control over how it handled
its modal condition. But the biggest difference may be how it managed the toolbar.
The toolbar seemed to belong to the preview window whereas in VFP9 reporting (and
other VFP form uses) the toolbar belongs to the top level form.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
Just to recap, this issue ONLY occurs when ALL of the following conditions are true:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
1) You are using the new reporting features of VFP9 (SET REPORTBEHAVIOR 90)&lt;br&gt;
2) You are displaying the report preview window in a top level form by using the WINDOW
clause of the REPORT FORM PREVIEW command&lt;br&gt;
3) You create a modal condition by &lt;u&gt;not&lt;/u&gt; using the NOWAIT clause in your REPORT
FORM PREVIEW command&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
Here is a snippet of the repro code that Peter de Valenca submitted to Microsoft&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;*&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Peter
de Valença&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;*&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;www.viafox.nl&lt;/span&gt;&lt;/u&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;*==============================================================\&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;create cursor &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;c_effe
( f1 c(10) )&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;insert into &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;c_effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;values &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(
"aaaaa" )&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;insert into &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;c_effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;values &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(
"bbbb" )&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;insert into &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;c_effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;values &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(
"ccc" )&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;insert into &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;c_effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;values &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(
"ddddd" )&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;create report &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;from &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;c_effe&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;SET REPORTBEHAVIOR &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;90&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;LOCAL &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;loReportWindow&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;loReportWindow
= ReportWindow()&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;&amp;amp;&amp;amp;
creates an as-toplevel form&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;WITH &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;loReportWindow&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;.&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Caption&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;=
"some title"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;.&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;WindowState &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;=
2&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;&amp;amp;&amp;amp;
maximize&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;.&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Show&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;()&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;&amp;amp;&amp;amp;
must be done to force the maximizing&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;ENDWITH&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;* make sure
the report can load and run&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;REPORT FORM &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;PREVIEW
window &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(
loReportWindow.&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Name &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;) 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;* Creates
a window for the report.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;FUNCTION &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;ReportWindow&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;local &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;loRepForm&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;loRepForm
= &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;CREATEOBJECT&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(
"reportwindow" )&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;return &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;loRepForm&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;define class &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;reportwindow &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;as
form&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ShowWindow &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;=
2&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;&amp;amp;&amp;amp;
as toplevel form&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;enddefine&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;*==============================================================/&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
So, what can we do about it? We have a couple of options:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
A) Remove any one of the conditions above and it works fine. Of course you probably
have your reasons to use the new reporting and reasons to use a top level form or
we wouldn’t be here. But do you really need it to be modal? This was an issue in previous
versions of VFP because the previewer only processed&amp;nbsp;one page at a time. If you
had an environment set up, let’s say open cursors with relationships and you wanted
to clean all of that up after the REPORT FORM command was issued, you had to go modal.
If you let the code continue by using the NOWAIT clause, your environment would be
gone and the user would get an error as soon as they tried to navigate to the next
page.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
With VFP9 reporting, all pages are preprocessed before the preview window even comes
up, so you don’t have to be modal and preserve your environment. Just let the code
continue on and let your users multi-task. If you add a NOWAIT to the sample above,
(and make the loReportWindow PUBLIC) you will see that it works fine:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;PUBLIC &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;loReportWindow&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;. . .&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;REPORT FORM &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;PREVIEW
WINDOW &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(
loReportWindow.&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Name &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;) &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;NOWAIT&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;&gt;
&lt;/p&gt;
&lt;p&gt;
B) So that works, but there are a couple of annoyances. First, the preview window
doesn’t look right. It is a window within a window. Peter makes mention of this in
his bug report and provides a couple of screen shots comparing &lt;a href="http://hyp.viafox.nl//ut/report_toolbar_behavior80.png"&gt;REPORTBEHAVIOR
80&lt;/a&gt; to &lt;a href="http://hyp.viafox.nl//ut/report_toolbar_behavior90.png"&gt;REPORTBEHAVIOR
90&lt;/a&gt;. You get the same affect whether you use the WINDOW or IN WINDOW clause. But
again, this is a limitation of using VFP Forms for the report preview and placing
a window within a window. The other annoyance is that we had to declare our parent
form as PUBLIC. This is because we need the form to stick around after the REPORT
FORM command has finished. But this should be nothing new to developers who use top
level forms.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.moxiedata.com/content/binary/previewa.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
There is an easier way around both of these annoyances and it actually requires the
use of LESS code. With the VFP9 reporting, we can customize the preview container
with a lot more options than we had before. One of the options is to force a top level
form by setting the .TopForm property of the PreviewContainer object. This eliminates
a lot of goofy code that we had to do in the past. You will also notice in the sample
below that our variables are declared LOCAL. We can do this because the preview container
is managing our form reference for us. Here is the new code:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;*==============================================================\&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;CREATE CURSOR &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;c_effe
( f1 c(10) )&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;INSERT INTO &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;c_effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;VALUES &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(
"aaaaa" )&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;INSERT INTO &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;c_effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;VALUES &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(
"bbbb" )&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;INSERT INTO &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;c_effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;VALUES &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(
"ccc" )&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;INSERT INTO &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;c_effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;VALUES &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(
"ddddd" )&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;CREATE REPORT &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;FROM &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;c_effe&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;
&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;LOCAL &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;pc,
ri&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;DO &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;_REPORTPREVIEW&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;) &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;WITH &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;pc&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;pc.TopForm
= .t.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;ri = &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;NEWOBJECT&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;("ReportListener")&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;ri.&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;ListenerType &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;=
1&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;&amp;amp;&amp;amp;
preview&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;ri.&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;PreviewContainer &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;=
m.pc&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;REPORT FORM &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;effe &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;OBJECT &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;ri&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;*==============================================================/&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Here is what the new improved form looks like
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.moxiedata.com/content/binary/previewb.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
There are other properties available to customize the report previewer, check the
VFP9 help topic &lt;a href="http://msdn2.microsoft.com/en-us/library/ms953566(VS.80).aspx"&gt;Leveraging
the Default Preview Container&lt;/a&gt; for more information.
&lt;/p&gt;
&lt;p&gt;
C) There may be another option, but I will have to come back to it later. Christof
sent me some sample code today showing how he may have a way of switching up the parent
window for the toolbar that seems to be a step in the right direction but there is
an issue if you change the docking state of the toolbar. I’ll keep you posted if we
make any breakthroughs.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;In Closing&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Should this stop you from upgrading to SP2? I don’t think so. If you are even trying
to display reports in a top level form, I think you can take advantage of the new
Reporting features and actually improve the user's experience and get rid of the modal
window. 
&lt;/p&gt;
&lt;p&gt;
Honestly, I’m not sure if Microsoft should even try to address this issue. How can
they modify the form behavior to allow toolbars to work for modal report windows,
but not allow toolbars to work for other modal windows? I just think this would open
up a can of worms. (Maybe it did in SP1 and that's why it's back)&amp;nbsp;It may be best
to code a workaraound in either the reporting APPs or use a known technique for simulating
a modal condition when using top level forms, like a DOEVENTS loop.
&lt;/p&gt;
&lt;p&gt;
I'm open to any comments related to this issue. I would also be interested in knowing
how many people use this technique for previewing reports.
&lt;/p&gt;
&lt;p&gt;
This one bug took a while&amp;nbsp;to go through, but I felt it was an important one.
The next few should be much shorter reading.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&gt;&lt;img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=2bea72cd-5510-44b7-8aaf-29274cca0cd9" /&gt;</description>
      <comments>http://blog.moxiedata.com/CommentView,guid,2bea72cd-5510-44b7-8aaf-29274cca0cd9.aspx</comments>
      <category>SP2;VFP Development</category>
    </item>
    <item>
      <trackback:ping>http://blog.moxiedata.com/Trackback.aspx?guid=61740049-97c8-4ab8-ab15-34bf0e4c8433</trackback:ping>
      <pingback:server>http://blog.moxiedata.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.moxiedata.com/PermaLink,guid,61740049-97c8-4ab8-ab15-34bf0e4c8433.aspx</pingback:target>
      <dc:creator>Bo Durban</dc:creator>
      <wfw:comment>http://blog.moxiedata.com/CommentView,guid,61740049-97c8-4ab8-ab15-34bf0e4c8433.aspx</wfw:comment>
      <wfw:commentRss>http://blog.moxiedata.com/SyndicationService.asmx/GetEntryCommentsRss?guid=61740049-97c8-4ab8-ab15-34bf0e4c8433</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
There has been a lot of talk about the state of <a href="http://www.microsoft.com/downloads/details.aspx?familyid=a28ddec6-ba3c-49d0-8176-8c0b3fca06d1&amp;displaylang=en">Visual
FoxPro 9 SP2</a>. It seems like many people are not willing to upgrade unless the
issues introduced in SP2 get fixed. There also seems to be some confusion about what
the SP2 issues encompass; VFP9, <a href="http://www.microsoft.com/downloads/details.aspx?familyid=C04BCF8C-0944-49F0-AC2B-563518CE1D70&amp;displaylang=en">Sedna</a>, <a href="http://www.codeplex.com/vfpx">VFPx</a>,
etc… I plan to go through these issues over the next few days to help dispell some
of the confusion and offer what solutions I can to the known issues. 
</p>
        <p>
Why do this? Mainly because I think many people are wrongfully swayed away from SP2,
Sedna, VFPx and Visual FoxPro in general for the wrong reasons. The <a href="http://download.microsoft.com/download/e/f/f/efff372d-5f27-414c-ae18-177170bf676d/VFP9SP2_BugFixList.htm">fix
list for SP2</a> includes a long list of fixes that have been around for years. I
think the VFP team did a great job of addressing as many issues as they could using
what limited resources they had available. The unfortunate part is the limited testing
this service pack received which led to a few new issues being introduced. 
</p>
        <p>
Right now there is a list of <a href="http://fox.wikis.com/wc.dll?Wiki~VFP9SP2BugList~Wiki">issues</a> and <a href="http://fox.wikis.com/wc.dll?Wiki~SolutionsToVFP9SP2Bugs">solutions</a> being
tracked on the <a href="http://fox.wikis.com/wc.dll?Wiki~VisualFoxProWiki">Visual
FoxPro Wiki</a>. Of the 20 issues that are posted (as of this writing) I would break
down into the following categories: 
</p>
        <p>
New bugs in the VFP9 Core<br />
New bugs in the VFP9 Xsource<br />
New bugs in the VFP9 Help File
</p>
        <p>
I would define the “Core” as the VFP9.EXE and the distributable runtimes (VFP9R.DLL,
VFP9T.DLL, VFP9RENU.DLL etc…). To me, these are the most critical issues and really
the only ones to be overly concerned about. Mainly because we do not have the ability
nor the rights to make changes to this part of the application. 
</p>
        <p>
Issues with the Xsource are not as critical because we have all of the source code
for these modules and they can be updated as needed. They are even <a href="http://www.codeplex.com/VFPX/Wiki/View.aspx?title=XSource">posted
on VFPx</a> and can me managed and distributed from a central location with timely
updates. 
</p>
        <p>
I would not consider the “Help File” issues as super critcal either, for a few reasons,
the most significant being that Microsoft is in the process of fixing the Help file.
Special thanks to <a href="http://weblogs.foxite.com/bernardbout/">Bernard Bout</a> for
reporting these issues and being available to test the updates that are being worked
on. The other reasons go along with the XSource reasons. If worst came to worse, the
help file can be decompiled and we can fix it and recompile it ourselves. But in the
interim we can just use the Help file from SP1, or live with it, for now. ALL of the
help topics are included with the help file, the issue is missing index entries. 
</p>
        <p>
The 20 reported issues break down as follows: 
</p>
        <p>
Core – 6 issues<br />
Xsource – 2 issues<br />
Help File – 1 issues<br />
Other – 11 issues 
</p>
        <p>
Note that as I go through these, over the next few days, some of the categories may
get moved around. But at first look, this is where the issues seem to fall. The “Other”
category includes issues that were not introduced in SP2, but rather issues that have
been around before SP2 or are unexpected behavior, not really a bug. I don’t mean
to belittle these issues here. These “other” issues should be addressed, and I will
go through them, but since this writting is about upgrading to SP2, I think they should
be broken out and excluded as reasons to not upgrade to SP2. 
</p>
        <p>
Also note that most of these issues are related to reporting. Most, if not all of
them are in the “core” product and have nothing to do with the Reporting APPs. As
a matter of fact, many people are using the Reporting APPs from SP2 with VFP9 SP1
and are quite happy with them. There were MANY new features added to the SP2 reporting
APPs that are worth taking a look at, even if you don’t upgrade to SP2. 
</p>
        <p>
I promise to go into more detail in my next post. But this will give you an idea of
where I’m headed and what to look forward to. 
</p>
        <p>
I feel very strongly that everyone should upgrade to SP2 and then determine if YOU
have a real business case for NOT upgrading your clients. <a href="http://www.rickschummer.com/blog/">Rick
Schummer</a> has published a <a href="http://www.whitelightcomputing.com/resources/VFP9AllVersionsOnOneComputer.pdf">white
paper</a> on how to have SP1 and SP2 installed on the same development machine.
If everyone sits around and waits for an SP3, we are going to be in big trouble. We
need a definitive list of SP2 bugs so we can either determine an appropriate workaround
or encourage Microsoft to follow up with their promise of <a href="http://support.microsoft.com/lifecycle/search/?sort=PN&amp;alpha=FoxPro&amp;Filter=FilterNO">support
through 2014</a>. 
</p>
        <p>
If you have found an issue with VFP (and it is still broken in VFP9 SP2) please <a href="https://connect.microsoft.com/VisualStudio/feedback/CreateFeedback.aspx">report
it to Microsoft</a>, especially if it is in the “core” product. Also, if it appears
to be SP2 specific, please add it to the <a href="http://fox.wikis.com/wc.dll?Wiki~VFP9SP2BugList~Wiki">SP2
Bug list</a> on the <a href="http://fox.wikis.com/wc.dll?Wiki~VisualFoxProWiki">Visual
FoxPro Wiki</a> and someone in the community, including myself, will try to address
it. 
</p>
        <img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=61740049-97c8-4ab8-ab15-34bf0e4c8433" />
      </body>
      <title>Visual FoxPro 9.0 SP2 or not... Post 1</title>
      <guid isPermaLink="false">http://blog.moxiedata.com/PermaLink,guid,61740049-97c8-4ab8-ab15-34bf0e4c8433.aspx</guid>
      <link>http://blog.moxiedata.com/PermaLink,guid,61740049-97c8-4ab8-ab15-34bf0e4c8433.aspx</link>
      <pubDate>Sun, 02 Mar 2008 23:46:06 GMT</pubDate>
      <description>&lt;p&gt;
There has been a lot of talk about the state of &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=a28ddec6-ba3c-49d0-8176-8c0b3fca06d1&amp;amp;displaylang=en"&gt;Visual
FoxPro 9 SP2&lt;/a&gt;. It seems like many people are not willing to upgrade unless the
issues introduced in SP2 get fixed. There also seems to be some confusion about what
the SP2 issues encompass; VFP9, &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=C04BCF8C-0944-49F0-AC2B-563518CE1D70&amp;amp;displaylang=en"&gt;Sedna&lt;/a&gt;, &lt;a href="http://www.codeplex.com/vfpx"&gt;VFPx&lt;/a&gt;,
etc… I plan to go through these issues over the next few days to help dispell some
of the confusion and offer what solutions I can to the known issues. 
&lt;/p&gt;
&lt;p&gt;
Why do this? Mainly because I think many people are wrongfully swayed away from SP2,
Sedna, VFPx and Visual FoxPro in general for the wrong reasons. The &lt;a href="http://download.microsoft.com/download/e/f/f/efff372d-5f27-414c-ae18-177170bf676d/VFP9SP2_BugFixList.htm"&gt;fix
list for SP2&lt;/a&gt; includes a long list of fixes that have been around for years. I
think the VFP team did a great job of addressing as many issues as they could using
what limited resources they had available. The unfortunate part is the limited testing
this service pack received which led to a few new issues being introduced. 
&lt;/p&gt;
&lt;p&gt;
Right now there is a list of &lt;a href="http://fox.wikis.com/wc.dll?Wiki~VFP9SP2BugList~Wiki"&gt;issues&lt;/a&gt; and &lt;a href="http://fox.wikis.com/wc.dll?Wiki~SolutionsToVFP9SP2Bugs"&gt;solutions&lt;/a&gt; being
tracked on the &lt;a href="http://fox.wikis.com/wc.dll?Wiki~VisualFoxProWiki"&gt;Visual
FoxPro Wiki&lt;/a&gt;. Of the 20 issues that are posted (as of this writing) I would break
down into the following categories: 
&lt;/p&gt;
&lt;p&gt;
New bugs in the VFP9 Core&lt;br&gt;
New bugs in the VFP9 Xsource&lt;br&gt;
New bugs in the VFP9 Help File
&lt;/p&gt;
&lt;p&gt;
I would define the “Core” as the VFP9.EXE and the distributable runtimes (VFP9R.DLL,
VFP9T.DLL, VFP9RENU.DLL etc…). To me, these are the most critical issues and really
the only ones to be overly concerned about. Mainly because we do not have the ability
nor the rights to make changes to this part of the application. 
&lt;/p&gt;
&lt;p&gt;
Issues with the Xsource are not as critical because we have all of the source code
for these modules and they can be updated as needed. They are even &lt;a href="http://www.codeplex.com/VFPX/Wiki/View.aspx?title=XSource"&gt;posted
on VFPx&lt;/a&gt; and can me managed and distributed from a central location with timely
updates. 
&lt;/p&gt;
&lt;p&gt;
I would not consider the “Help File” issues as super critcal either, for a few reasons,
the most significant being that Microsoft is in the process of fixing the Help file.
Special thanks to &lt;a href="http://weblogs.foxite.com/bernardbout/"&gt;Bernard Bout&lt;/a&gt; for
reporting these issues and being available to test the updates that are being worked
on. The other reasons go along with the XSource reasons. If worst came to worse, the
help file can be decompiled and we can fix it and recompile it ourselves. But in the
interim we can just use the Help file from SP1, or live with it, for now. ALL of the
help topics are included with the help file, the issue&amp;nbsp;is missing index entries. 
&lt;/p&gt;
&lt;p&gt;
The 20 reported issues break down as follows: 
&lt;/p&gt;
&lt;p&gt;
Core – 6 issues&lt;br&gt;
Xsource – 2 issues&lt;br&gt;
Help File – 1 issues&lt;br&gt;
Other – 11 issues 
&lt;/p&gt;
&lt;p&gt;
Note that as I go through these, over the next few days, some of the categories may
get moved around. But at first look, this is where the issues seem to fall. The “Other”
category includes issues that were not introduced in SP2, but rather issues that have
been around before SP2 or are unexpected behavior, not really a bug. I don’t mean
to belittle these issues here. These “other” issues should be addressed, and I will
go through them, but since this writting is about upgrading to SP2, I think they should
be broken out and excluded as reasons to not upgrade to SP2. 
&lt;/p&gt;
&lt;p&gt;
Also note that most of these issues are related to reporting. Most, if not all of
them are in the “core” product and have nothing to do with the Reporting APPs. As
a matter of fact, many people are using the Reporting APPs from SP2 with VFP9 SP1
and are quite happy with them. There were MANY new features added to the SP2 reporting
APPs that are worth taking a look at, even if you don’t upgrade to SP2. 
&lt;/p&gt;
&lt;p&gt;
I promise to go into more detail in my next post. But this will give you an idea of
where I’m headed and what to look forward to. 
&lt;/p&gt;
&lt;p&gt;
I feel very strongly that everyone should upgrade to SP2 and then determine if YOU
have a real business case for NOT upgrading your clients. &lt;a href="http://www.rickschummer.com/blog/"&gt;Rick
Schummer&lt;/a&gt; has published a &lt;a href="http://www.whitelightcomputing.com/resources/VFP9AllVersionsOnOneComputer.pdf"&gt;white
paper&lt;/a&gt; on&amp;nbsp;how to have SP1 and SP2 installed on the same development machine.
If everyone sits around and waits for an SP3, we are going to be in big trouble. We
need a definitive list of SP2 bugs so we can either determine an appropriate workaround
or encourage Microsoft to follow up with their promise of &lt;a href="http://support.microsoft.com/lifecycle/search/?sort=PN&amp;amp;alpha=FoxPro&amp;amp;Filter=FilterNO"&gt;support
through 2014&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
If you have found an issue with VFP (and it is still broken in VFP9 SP2) please &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/CreateFeedback.aspx"&gt;report
it to Microsoft&lt;/a&gt;, especially if it is in the “core” product. Also, if it appears
to be SP2 specific, please add it to the &lt;a href="http://fox.wikis.com/wc.dll?Wiki~VFP9SP2BugList~Wiki"&gt;SP2
Bug list&lt;/a&gt; on the &lt;a href="http://fox.wikis.com/wc.dll?Wiki~VisualFoxProWiki"&gt;Visual
FoxPro Wiki&lt;/a&gt; and someone in the community, including myself,&amp;nbsp;will try to address
it. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=61740049-97c8-4ab8-ab15-34bf0e4c8433" /&gt;</description>
      <comments>http://blog.moxiedata.com/CommentView,guid,61740049-97c8-4ab8-ab15-34bf0e4c8433.aspx</comments>
      <category>SP2;VFP Development</category>
    </item>
    <item>
      <trackback:ping>http://blog.moxiedata.com/Trackback.aspx?guid=675cc8a2-9683-4ba4-bb0d-44cbfa1c88fc</trackback:ping>
      <pingback:server>http://blog.moxiedata.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.moxiedata.com/PermaLink,guid,675cc8a2-9683-4ba4-bb0d-44cbfa1c88fc.aspx</pingback:target>
      <dc:creator>Bo Durban</dc:creator>
      <wfw:comment>http://blog.moxiedata.com/CommentView,guid,675cc8a2-9683-4ba4-bb0d-44cbfa1c88fc.aspx</wfw:comment>
      <wfw:commentRss>http://blog.moxiedata.com/SyndicationService.asmx/GetEntryCommentsRss?guid=675cc8a2-9683-4ba4-bb0d-44cbfa1c88fc</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://fox.wikis.com/wc.dll?Wiki~CraigSBoyd" target="_blank">Craig Boyd</a> has
posted a <a href="http://www.sweetpotatosoftware.com/SPSBlog/PermaLink,guid,b71ea97e-8fb8-4401-ace4-b5a536fe0a37.aspx" target="blank">screen
cast</a> showing a sneak peek of the <a href="http://www.vfpstudio.com" target="_blank">VFPStudio</a> code
editor. It demontrates some of the advanced editor functionality of Visual Studio...while
editing a PRG file. Very Cool!
</p>
        <p>
Craig promises <a href="http://www.sweetpotatosoftware.com/SPSBlog/" target="_blank">more</a> screen
casts in the near future, so stay tuned!
</p>
        <img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=675cc8a2-9683-4ba4-bb0d-44cbfa1c88fc" />
      </body>
      <title>Peek At VFPStudio Code Editor</title>
      <guid isPermaLink="false">http://blog.moxiedata.com/PermaLink,guid,675cc8a2-9683-4ba4-bb0d-44cbfa1c88fc.aspx</guid>
      <link>http://blog.moxiedata.com/PermaLink,guid,675cc8a2-9683-4ba4-bb0d-44cbfa1c88fc.aspx</link>
      <pubDate>Thu, 21 Feb 2008 04:06:35 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://fox.wikis.com/wc.dll?Wiki~CraigSBoyd" target=_blank&gt;Craig Boyd&lt;/a&gt; has
posted a &lt;a href="http://www.sweetpotatosoftware.com/SPSBlog/PermaLink,guid,b71ea97e-8fb8-4401-ace4-b5a536fe0a37.aspx" target=blank&gt;screen
cast&lt;/a&gt; showing a sneak peek of the &lt;a href="http://www.vfpstudio.com" target=_blank&gt;VFPStudio&lt;/a&gt; code
editor. It demontrates some of the advanced editor functionality of Visual Studio...while
editing a PRG file. Very Cool!
&lt;/p&gt;
&lt;p&gt;
Craig promises &lt;a href="http://www.sweetpotatosoftware.com/SPSBlog/" target=_blank&gt;more&lt;/a&gt; screen
casts in the near future, so stay tuned!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=675cc8a2-9683-4ba4-bb0d-44cbfa1c88fc" /&gt;</description>
      <comments>http://blog.moxiedata.com/CommentView,guid,675cc8a2-9683-4ba4-bb0d-44cbfa1c88fc.aspx</comments>
      <category>VFP Development</category>
    </item>
    <item>
      <trackback:ping>http://blog.moxiedata.com/Trackback.aspx?guid=51665ba0-3647-40c2-bd46-1dd8bdaaa7c1</trackback:ping>
      <pingback:server>http://blog.moxiedata.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.moxiedata.com/PermaLink,guid,51665ba0-3647-40c2-bd46-1dd8bdaaa7c1.aspx</pingback:target>
      <dc:creator>Bo Durban</dc:creator>
      <wfw:comment>http://blog.moxiedata.com/CommentView,guid,51665ba0-3647-40c2-bd46-1dd8bdaaa7c1.aspx</wfw:comment>
      <wfw:commentRss>http://blog.moxiedata.com/SyndicationService.asmx/GetEntryCommentsRss?guid=51665ba0-3647-40c2-bd46-1dd8bdaaa7c1</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was recently asked if it was possible to do "Wrapped Text" with <a href="http://www.codeplex.com/VFPX/Wiki/View.aspx?title=GDIPlusX">GDIPlusX</a>.
I wasn’t sure what they meant at first, but found out they wanted a text string to
render in the form a circle, instead of a straight line. While there is nothing built
into the library that can do this, I knew it was possible to write your own code to
get this functionality.
</p>
        <p>
I dug around and found an excellent <a href="http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c10595/">article</a> written
by Sjaak Priester. He came up with a very interesting technique. By using the FlattenPath
method of a GraphicsPath and some straight forward geometry, he was able to not only
get a text string to render in a circle, but to get a text string to render in any
shape by using a GraphicsPath as a guide. He developed a very nice little C++ class
to handle this. I was impressed by the simple yet powerful technique he was using,
I decided to try it using the GDIPlusX library.
</p>
        <img src="http://blog.moxiedata.com/content/binary/WrappedTextScreen.gif" border="0" />
        <p>
The results are attached. A relatively straight forward, 300+ line class that takes
a GraphicsPath guide, a String of text and a Font and fills a second GraphicsPath
with the rendered string, following the specified path. Once you have this rendered
path, you can do all kinds of cools stuff with it (check out some of the text effect
samples with the <a href="http://www.codeplex.com/VFPX/Wiki/View.aspx?title=GDIPlusX">GDIPlusX</a> samples
download).
</p>
        <p>
Included in this download is the WrappedText class, a demo form as well as the 1.10
version of the GDIPlusX library (compiled into an app). To run the demo, issue a: 
</p>
        <pre>DO FORM WRAPPEDTEXTDEMO<br /></pre>
        <p>
          <a href="http://blog.moxiedata.com/content/binary/WrappedTextDemo.zip">WrappedTextDemo.zip
(210.63 KB)</a>
        </p>
        <img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=51665ba0-3647-40c2-bd46-1dd8bdaaa7c1" />
      </body>
      <title>Wrapped Text with GDIPlusX</title>
      <guid isPermaLink="false">http://blog.moxiedata.com/PermaLink,guid,51665ba0-3647-40c2-bd46-1dd8bdaaa7c1.aspx</guid>
      <link>http://blog.moxiedata.com/PermaLink,guid,51665ba0-3647-40c2-bd46-1dd8bdaaa7c1.aspx</link>
      <pubDate>Fri, 11 Jan 2008 07:56:52 GMT</pubDate>
      <description>&lt;p&gt;
I was recently asked if it was possible to do "Wrapped Text" with &lt;a href="http://www.codeplex.com/VFPX/Wiki/View.aspx?title=GDIPlusX"&gt;GDIPlusX&lt;/a&gt;.
I wasn’t sure what they meant at first, but found out they wanted a text string to
render in the form a circle, instead of a straight line. While there is nothing built
into the library that can do this, I knew it was possible to write your own code to
get this functionality.
&lt;/p&gt;
&lt;p&gt;
I dug around and found an excellent &lt;a href="http://www.codeguru.com/cpp/g-m/gdi/gdi/article.php/c10595/"&gt;article&lt;/a&gt; written
by Sjaak Priester. He came up with a very interesting technique. By using the FlattenPath
method of a GraphicsPath and some straight forward geometry, he was able to not only
get a text string to render in a circle, but to get a text string to render in any
shape by using a GraphicsPath as a guide. He developed a very nice little C++ class
to handle this. I was impressed by the simple yet powerful technique he was using,
I decided to try it using the GDIPlusX library.
&lt;/p&gt;
&lt;img src="http://blog.moxiedata.com/content/binary/WrappedTextScreen.gif" border=0&gt; 
&lt;p&gt;
The results are attached. A relatively straight forward, 300+ line class that takes
a GraphicsPath guide, a String of text and a Font and fills a second GraphicsPath
with the rendered string, following the specified path. Once you have this rendered
path, you can do all kinds of cools stuff with it (check out some of the text effect
samples with the &lt;a href="http://www.codeplex.com/VFPX/Wiki/View.aspx?title=GDIPlusX"&gt;GDIPlusX&lt;/a&gt; samples
download).
&lt;/p&gt;
&lt;p&gt;
Included in this download is the WrappedText class, a demo form as well as the 1.10
version of the GDIPlusX library (compiled into an app). To run the demo, issue a: 
&lt;/p&gt;
&lt;pre&gt;DO FORM WRAPPEDTEXTDEMO&lt;br&gt;
&lt;/pre&gt;
&lt;p&gt;
&lt;a href="http://blog.moxiedata.com/content/binary/WrappedTextDemo.zip"&gt;WrappedTextDemo.zip
(210.63 KB)&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=51665ba0-3647-40c2-bd46-1dd8bdaaa7c1" /&gt;</description>
      <comments>http://blog.moxiedata.com/CommentView,guid,51665ba0-3647-40c2-bd46-1dd8bdaaa7c1.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://blog.moxiedata.com/Trackback.aspx?guid=5cc1c754-8d30-4ad7-a934-0b6218b4db20</trackback:ping>
      <pingback:server>http://blog.moxiedata.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.moxiedata.com/PermaLink,guid,5cc1c754-8d30-4ad7-a934-0b6218b4db20.aspx</pingback:target>
      <dc:creator>Bo Durban</dc:creator>
      <wfw:comment>http://blog.moxiedata.com/CommentView,guid,5cc1c754-8d30-4ad7-a934-0b6218b4db20.aspx</wfw:comment>
      <wfw:commentRss>http://blog.moxiedata.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5cc1c754-8d30-4ad7-a934-0b6218b4db20</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The <a href="http://www.codeplex.com/VFPX/Wiki/View.aspx?title=GDIPlusX">GDIPlusX</a> library,
part of the <a href="http://www.codeplex.com/VFPX/">VFPX</a> project, has been updated
and moved into production status. Rumor has it that many people were using it in a
production environment already (including myself) but now its official.
</p>
        <p>
With this release we have added SYSTEM.APP. This APP includes the entire library in
a single distributable. <a href="http://www.west-wind.com/weblog/">Rick Strahl</a> made
this recommendation at <a href="http://www.swfox.net">SWFox</a> and we liked the idea.
Of course, if you prefer to compile the library into your own application, you can
do still do that also. All of the source is still <a href="http://www.codeplex.com/VFPX/Release/ProjectReleases.aspx?ReleaseId=8606">downloadable</a> from <a href="http://www.codeplex.com/VFPX/">VFPX</a>.
</p>
        <p>
A few other features were packed into this release based on feedback that we have
received in the past few months. We would like to thank <a href="http://www.foxpert.com/">Christof
Wollenhaupt<a>, <a href="http://www.netcave.org/">Alan Stevens</a>, Carlos Alloatti,
several members of the <a href="http://www.foxite.com/">Foxite</a> message board and
of course <a href="http://www.sweetpotatosoftware.com/spsblog/">Craig Boyd</a> for
your valuable contributions. Special thanks to <a href="http://weblogs.foxite.com/cesarchalom/">Cesar
Chalom</a> for all of his efforts in this last release. Most all of the new enhancements
were added by Cesar as well as several cool new samples…if you haven’t <a href="http://www.codeplex.com/VFPX/Release/ProjectReleases.aspx?ReleaseId=8606">downloaded</a> it
yet, you should really check it out as well as the other great projects on <a href="http://www.codeplex.com/VFPX/">VFPX</a>.<br /></a></a></p>
        <img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=5cc1c754-8d30-4ad7-a934-0b6218b4db20" />
      </body>
      <title>The GDIPlusX Library Has Been Updated...Into Production</title>
      <guid isPermaLink="false">http://blog.moxiedata.com/PermaLink,guid,5cc1c754-8d30-4ad7-a934-0b6218b4db20.aspx</guid>
      <link>http://blog.moxiedata.com/PermaLink,guid,5cc1c754-8d30-4ad7-a934-0b6218b4db20.aspx</link>
      <pubDate>Fri, 11 Jan 2008 07:12:44 GMT</pubDate>
      <description>&lt;p&gt;
The &lt;a href="http://www.codeplex.com/VFPX/Wiki/View.aspx?title=GDIPlusX"&gt;GDIPlusX&lt;/a&gt; library,
part of the &lt;a href="http://www.codeplex.com/VFPX/"&gt;VFPX&lt;/a&gt; project, has been updated
and moved into production status. Rumor has it that many people were using it in a
production environment already (including myself) but now its official.
&lt;/p&gt;
&lt;p&gt;
With this release we have added SYSTEM.APP. This APP includes the entire library in
a single distributable. &lt;a href="http://www.west-wind.com/weblog/"&gt;Rick Strahl&lt;/a&gt; made
this recommendation at &lt;a href="http://www.swfox.net"&gt;SWFox&lt;/a&gt; and we liked the idea.
Of course, if you prefer to compile the library into your own application, you can
do still do that also. All of the source is still &lt;a href="http://www.codeplex.com/VFPX/Release/ProjectReleases.aspx?ReleaseId=8606"&gt;downloadable&lt;/a&gt; from &lt;a href="http://www.codeplex.com/VFPX/"&gt;VFPX&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
A few other features were packed into this release based on feedback that we have
received in the past few months. We would like to thank &lt;a href="http://www.foxpert.com/"&gt;Christof
Wollenhaupt&lt;a&gt;, &lt;a href="http://www.netcave.org/"&gt;Alan Stevens&lt;/a&gt;, Carlos Alloatti,
several members of the &lt;a href="http://www.foxite.com/"&gt;Foxite&lt;/a&gt; message board and
of course &lt;a href="http://www.sweetpotatosoftware.com/spsblog/"&gt;Craig Boyd&lt;/a&gt; for
your valuable contributions. Special thanks to &lt;a href="http://weblogs.foxite.com/cesarchalom/"&gt;Cesar
Chalom&lt;/a&gt; for all of his efforts in this last release. Most all of the new enhancements
were added by Cesar as well as several cool new samples…if you haven’t &lt;a href="http://www.codeplex.com/VFPX/Release/ProjectReleases.aspx?ReleaseId=8606"&gt;downloaded&lt;/a&gt; it
yet, you should really check it out as well as the other great projects on &lt;a href="http://www.codeplex.com/VFPX/"&gt;VFPX&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=5cc1c754-8d30-4ad7-a934-0b6218b4db20" /&gt;</description>
      <comments>http://blog.moxiedata.com/CommentView,guid,5cc1c754-8d30-4ad7-a934-0b6218b4db20.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://blog.moxiedata.com/Trackback.aspx?guid=197515a2-f379-402b-a7f2-3d5740ff0f7c</trackback:ping>
      <pingback:server>http://blog.moxiedata.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.moxiedata.com/PermaLink,guid,197515a2-f379-402b-a7f2-3d5740ff0f7c.aspx</pingback:target>
      <dc:creator>Bo Durban</dc:creator>
      <wfw:comment>http://blog.moxiedata.com/CommentView,guid,197515a2-f379-402b-a7f2-3d5740ff0f7c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.moxiedata.com/SyndicationService.asmx/GetEntryCommentsRss?guid=197515a2-f379-402b-a7f2-3d5740ff0f7c</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <title>An updated version of the GDIPlusX library has been posted</title>
      <guid isPermaLink="false">http://blog.moxiedata.com/PermaLink,guid,197515a2-f379-402b-a7f2-3d5740ff0f7c.aspx</guid>
      <link>http://blog.moxiedata.com/PermaLink,guid,197515a2-f379-402b-a7f2-3d5740ff0f7c.aspx</link>
      <pubDate>Thu, 16 Aug 2007 03:32:21 GMT</pubDate>
      <description>&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: Verdana"&gt;It has taken a
while, but the GDIPlusX library is finally converted to be PRG based and has been
upgraded from Alpha to Beta status. The new 1.00b version can be downloaded from &lt;a href="http://www.codeplex.com/VFPX/Release/ProjectReleases.aspx?ReleaseId=6432"&gt;&lt;font color=#800080&gt;here&lt;/font&gt;&lt;/a&gt;.
But you should always check the &lt;a href="http://www.codeplex.com/VFPX/Wiki/View.aspx?title=GDIPlusX"&gt;&lt;font color=#800080&gt;GDIPlusX&lt;/font&gt;&lt;/a&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt; home
page for the latest version.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: Verdana"&gt;There were several
advantages to converting the library as I described in a &lt;a href="http://www.codeplex.com/VFPX/Thread/View.aspx?ThreadId=11535"&gt;&lt;font color=#800080&gt;message&lt;/font&gt;&lt;/a&gt; on
the VFPX discussion board. The library is faster, smaller and more stable than before.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: Verdana"&gt;Special thanks
to &lt;a href="http://weblogs.foxite.com/cesarchalom/default.aspx"&gt;Cesar Chalom&lt;/a&gt;.
Most all of the bug fixes and new features were added by him over the past couple
of months while I converted the library.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: Verdana"&gt;We will hopefully
update the project again from Beta to Production status by next month. We welcome
any feedback. If you have any issues with the library, make sure you post them in
the &lt;a href="http://www.codeplex.com/VFPX/WorkItem/List.aspx"&gt;&lt;font color=#800080&gt;Issue
Tracker&lt;/font&gt;&lt;/a&gt; so they can be prioritized and voted on.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: Verdana"&gt;For my next Blog
entry I will discuss a little project &lt;a href="http://www.sweetpotatosoftware.com/spsblog/"&gt;Craig
Boyd&lt;/a&gt; and I started on that will allow any VFP object (with a Picture property)
to become a canvas object and have an associated Graphics object. There is a &lt;a href="http://www.codeplex.com/VFPX/WorkItem/View.aspx?WorkItemId=12260"&gt;&lt;font color=#800080&gt;small
sample&lt;/font&gt;&lt;/a&gt; posted on VPFX that demos this new functionality.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: Verdana"&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;a href="http://www.codeplex.com/VFPX" target="_blank"&gt;&lt;img src="http://www.codeplex.com/VFPX/Project/FileDownload.aspx?DownloadId=343" border="0"&gt;&lt;/a&gt;&lt;img width="0" height="0" src="http://blog.moxiedata.com/aggbug.ashx?id=197515a2-f379-402b-a7f2-3d5740ff0f7c" /&gt;</description>
      <comments>http://blog.moxiedata.com/CommentView,guid,197515a2-f379-402b-a7f2-3d5740ff0f7c.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://blog.moxiedata.com/Trackback.aspx?guid=00a6d6f7-ca4b-4269-9e2d-1093559b3bbe</trackback:ping>
      <pingback:server>http://blog.moxiedata.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.moxiedata.com/PermaLink,guid,00a6d6f7-ca4b-4269-9e2d-1093559b3bbe.aspx</pingback:target>
      <dc:creator>Bo Durban</dc:creator>
      <wfw:comment>http://blog.moxiedata.com/CommentView,guid,00a6d6f7-ca4b-4269-9e2d-1093559b3bbe.aspx</wfw:comment>
      <wfw:commentRss>http://blog.moxiedata.com/SyndicationService.asmx/GetEntryCommentsRss?guid=00a6d6f7-ca4b-4269-9e2d-1093559b3bbe</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <title>Insert Images into an RTF control using GDIPlusX</title>
      <guid isPermaLink="false">http://blog.moxiedata.com/PermaLink,guid,00a6d6f7-ca4b-4269-9e2d-1093559b3bbe.aspx</guid>
      <link>http://blog.moxiedata.com/PermaLink,guid,00a6d6f7-ca4b-4269-9e2d-1093559b3bbe.aspx</link>
      <pubDate>Sun, 17 Jun 2007 22:11:49 GMT</pubDate>
      <description>&lt;p&gt;
The RichText control that ships with VFP is very useful for providing a formatted
text edit box. While this control does support the displaying of images, there is
nothing built in to the control&amp;nbsp;that allows you to insert an image. I have included
a function below that will&amp;nbsp;allow&amp;nbsp;you insert an image into the RichText control
at the current cursor position.
&lt;/p&gt;
&lt;p&gt;
Just specify the object reference to the RTF control and the fullpath of the image
you want to insert. The image can be in any format supported by the GDIPlus library
(BMP, JPEG, GIF, TIFF, EMF, PNG, etc...). You can also optionally specify the Width
and Height you would like the image to be rendered.
&lt;/p&gt;
&lt;p&gt;
This function requires the GDIPlusX library which can be downloaded from the VFPX
project site: &lt;a href="http://www.codeplex.com/VFPX/Wiki/View.aspx?title=GDIPlusX"&gt;http://www.codeplex.com/VFPX/Wiki/View.aspx?title=GDIPlusX&lt;/a&gt;.
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;***********************************************************&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;* Function:
InsertRTFImage&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;*&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;* Inserts
an image into an RTF control at the current cusor position&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;*&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;* Parameters:&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;*&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;toRTF
- specifies an object reference to the RTF control&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;*&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;tcImage
- secifies the image to insert into the RTF&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;*&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;tnWidth
- Optional - Specifies the width to use for the image&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;*&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;tnHeight
- Optional - Specifies the height to use for the image&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;***********************************************************&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;FUNCTION &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;InsertRTFImage(toRTF,
tcImage, tnWidth, tnHeight)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;LOCAL &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;lcRTF,
lcPict, lqData&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;LOCAL &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;loImg &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;AS &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;xfcImage&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;LOCAL &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;loGfx &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;AS &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;xfcGraphics&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;LOCAL &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;loEMF &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;AS &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;xfcMetaFile&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;LOCAL &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;lhDC,
lhEMF, lnWMFLen&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;DECLARE
Long &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;GetDC &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;IN &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;WIN32API &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Long&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DECLARE
Long &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;ReleaseDC &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;IN &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;WIN32API &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Long&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;, &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Long&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DECLARE
Long &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;DeleteEnhMetaFile &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;IN &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;WIN32API &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Long&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DECLARE
Long &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;GdipEmfToWmfBits &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;IN &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;GDIPLUS.&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;DLL &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Long &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;hemf, &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Long &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;cbData16, &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;String &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;@pData16,
;&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Integer &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;iMapMode, &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Integer &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;eFlags&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;**
Make sure we have initialized the GDIPlusX library&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;
** &lt;a href="http://www.codeplex.com/VFPX/Wiki/View.aspx?title=GDIPlusX"&gt;&lt;font color=#008000&gt;http://www.codeplex.com/VFPX/Wiki/View.aspx?title=GDIPlusX&lt;/font&gt;&lt;/a&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;IF
VARTYPE&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;_SCREEN&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;.&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;System&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;)
&amp;lt;&amp;gt; "O"&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;ADDPROPERTY&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;_SCREEN&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;,"System",&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;NEWOBJECT&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;("xfcSystem",&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;LOCFILE&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;("system.vcx")))&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;ENDIF&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;lcPict
= ""&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;WITH
_SCREEN&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;.&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;System&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;.Drawing&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;loImg
= .&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Image&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;.FromFile(tcImage)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;IF &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;loImg.GetLastStatus()
&amp;lt;&amp;gt; 0&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;ERROR &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;"Could
not open file: "+tcImage&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;ELSE&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;**
If we didn't specify a width, use the image's width and height&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;IF
EMPTY&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;(tnWidth)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;tnWidth
= loImg.&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Width&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;tnHeight
= loImg.&lt;/span&gt;&lt;span style="FONT-SIZE: 10