DOCUMENT:Q261943 12-MAY-2001 [foxpro] TITLE :HOWTO: Use Basic Visio Operations from Visual FoxPro PRODUCT :Microsoft FoxPro PROD/VER:WINDOWS:3.0,3.0b,5.0,5.0a,6.0 OPER/SYS: KEYWORDS:kbinterop kbAutomation kbvfp300 kbvfp300b kbvfp500 kbvfp500a kbvfp600 kbGrpDSFox kbDSup ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual FoxPro for Windows, versions 3.0, 3.0b, 5.0, 5.0a, 6.0 ------------------------------------------------------------------------------- SUMMARY ======= As with the other Microsoft Office products, Microsoft Visio 2000 can be controlled through Automation from Visual FoxPro. This article demonstrates some basic functionality. MORE INFORMATION ================ loVisio = CREATEOBJECT("Visio.Application") loDoc = loVisio.Documents.Add("") && No default template loPage = loVisio.ActivePage *!* The origin of a Visio drawing is the lower-left corner, not *!* the top left. However, the coordinates for DrawRectangle go *!* from top left to bottom right. loShape = loPage.DrawRectangle(1, 5, 5, 1) loShape.Copy() && Copy shape to the Clipboard loPage.Paste() && Paste copy into drawing page loShape.Cut() && Remove original *!* Since the copied shape was the last one drawn, it can be retrieved *!* from the end of the shape collection. loShape = loPage.Shapes.Item(loPage.Shapes.Count) *!* Move to the bottom left corner of the page by setting its *!* PinX and PinY formulas. PinX and PinY are the coordinates *!* that "pin" the shape to the page, so moving them moves *!* the shape. The pin for a rectangle is in the center, so *!* setting the coordinates as below puts the shape right on *!* the edges. loShape.Cells("PinX").Formula = "Width * 0.5" loShape.Cells("PinY").Formula = "Height * 0.5" loShape.Text = "Switch back to VFP to close." =MESSAGEBOX("Hit OK when you are ready to close the document.") IF TYPE("loDoc") = "O" and ISNULL(loDoc) RETURN ELSE loDoc.Saved = .T. && Make Visio think the doc has already been saved loVisio.Quit && so you can quit without a Save dialog. ENDIF (c) Microsoft Corporation 2000, All Rights Reserved. Contributions by Garrett Fitzgerald, Microsoft Corporation REFERENCES ========== Visio Online Developer's Reference Professional Development with Visio 2000 by Dave Edson. Additional query words: ====================================================================== Keywords : kbinterop kbAutomation kbvfp300 kbvfp300b kbvfp500 kbvfp500a kbvfp600 kbGrpDSFox kbDSupport kbCodeSnippet Technology : kbVFPsearch kbAudDeveloper kbVFP300 kbVFP300b kbVFP500 kbVFP600 kbVFP500a Version : WINDOWS:3.0,3.0b,5.0,5.0a,6.0 Issue type : kbhowto ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2001.