Hi All,
Thanks Andrew for your reply.
I am trying to create a macro which like MS Word's draw table for the Draw
application allows the user to specify the number of shapes and then creates
them. Just as Word's draw wizard asks for number of rows and columns I want
to ask for number of shapes and their hierarchy(say 1 root and two children)
and creating them accordingly. I looked at
DannysDrawPowerTools-2003-08-09.01 and Andrew's book on OO macros and got a
lot of help and this is what I managed to do using both of them but am still
having problems I cannot comprehend and would appreciate any assistance.
After I click the Create button in the dialog I get an error in
createDrawPages function
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Private oDialog As Object
Sub StarPolyDialog()
Copyright (c) 2003 Danny Brewer
' Make sure this library, with its dialog is loaded which I checked
DialogLibraries.LoadLibrary( "Standard" )
REM I loaded the libraries and created a Dialog box of name ShapeDlg 'having
a REMnumeric 'field Count in it. I assgned the macro Sub
btnCreateStarOrPoly_Clicked to REMbe assigned to the create button when it
is clicked but inspite of the fact the
REM rectangels are not created. I traced the running step by step by the
Single Step but REM am not able to trace the error
' Create the dialog object.
oDialog = createUnoDialog( DialogLibraries.GetByName( "Standard"
).GetByName( "ShapeDlg" ) )
' Display the dialog.
' This routine call does not return until the dialog is dismissed.
oDialog.Execute()
' Execution does not reach this point until the dialog is dismissed.
End Sub
' This is called when the user clicks the Create button on the dialog box.
Sub btnCreateStarOrPoly_Clicked
' Get the values of the controls in the dialog box.
'
nNumSides = oDialog.getControl( "Count" ).getValue()
' and pass it to the Builder function
Builder( nNumSides)
End Sub
Sub Builder( num )
' Make sure the TurtleGraphics library of modules is loaded. which I did.
BasicLibraries.LoadLibrary( "TurtleGraphics" )
drawFirstGraphic(num)
End Sub
Sub drawFirstGraphic(num)
Dim oPage 'Page on which to draw
Dim oShape 'Shape to insert
Dim oPoint 'Initial start point of the line
Dim oSize 'Width and height of the line
Dim i% 'Index variable
Dim n% 'Number of iterations to perform
oPage = createDrawPage(ThisComponent, "new Test Draw", True) ' create a new
Drawing pag
n = num
' and try to create Rectangles in it
For i = 0 To n
oShape = ThisComponent.createInstance("com.sun.star.drawing.RectangleShape")
oPage.add(oShape)
oShape.setPosition(createPoint(1000,1000))
oShape.setSize(createSize(4000, 1000))
oShape.setString("box 1")
oShape.Shadow = True
oShape = ThisComponent.createInstance("com.sun.star.drawing.RectangleShape")
oPage.add(oShape)
oShape.setPosition(createPoint(6000, 1000))
oShape.setSize(createSize(4000, 1000))
oShape.setString("box 2")
oShape.Shadow = True
oShape.ShadowXDistance = -150
oShape.CornerRadius = 100
Next i
End Sub
Function CreatePoint(ByVal x As Long,ByVal y As Long) As
com.sun.star.awt.Point
Dim oPoint
oPoint = createUnoStruct( "com.sun.star.awt.Point" )
oPoint.X = x
oPoint.Y = y
CreatePoint = oPoint
End Function
Function CreateSize(ByVal x As Long,ByVal y As Long) As
com.sun.star.awt.Size
Dim oSize
oSize = createUnoStruct( "com.sun.star.awt.Size" )
oSize.Width = x : oSize.Height = y
CreateSize = oSize
End Function
Function createDrawPage(oDoc, sName$, bForceNew As boolean) As Variant
Dim oPages 'All of the draw pages
Dim oPage 'A single draw page
Dim i% 'General index variable
oPages = oDoc.getDrawPages()
If oPages.hasByName(sName) Then
REM If we require a new page then delete
REM the page and get out of the for loop.
If bForceNew Then
oPages.remove(oPages.getByName(sName))
Else
REM Did not request a new page so return the found page
REM and then get out of the function.
createDrawPage = oPages.getByName(sName)
Exit Function
End If
End If
REM Did not find the page, or found the page and removed it.
REM Create a new page, set the name, and return the page.
oPages.insertNewByIndex(oPages.getCount())
oPage = oPages.getByIndex(oPages.getCount()-1)
oPage.setName(sName)
createDrawPage = oPage
End Function
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Thanks a lot.
From: Andrew Douglas Pitonyak <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: [email protected]
CC: Senthilkumar Mehalingam <[EMAIL PROTECTED]>, [EMAIL PROTECTED]
Subject: Re: [api-dev] Re: newbie drawing question
Date: Wed, 11 May 2005 22:34:25 -0400
Yes, if you want to draw a line, you create a line object and then add it
to the document. The Draw and Impress chapters of my book are available as
a free download, and it contains numerous examples of shapes and lines and
such.
Jürgen Schmidt wrote:
Hi Senthil,
no your understanding is wrong, when using the OOo API you work more or
less directly on documents of the different application areas. If you want
to draw lines, circles and other stuff directly in a canvas you have to
use Java APIs directly.
Juergen
Senthilkumar Mehalingam wrote:
Hi Juergen,
Thanks for the reply. I have now subscribed to the mailing list
[EMAIL PROTECTED]
I took a look at the SDK
examples(http://api.openoffice.org/docs/DevelopersGuide/Drawing/Drawing.htm
and in that 9.3.2 Shapes) but they I presume are for drawing/adding
shapes on a document, not for drawing lines, circles and stuff directly
on a canvas(and I am trying to find how to draw lines, ovals, rectangles,
arrows and text boxes using a Java API for the drawing(or presentation)
tool so I think I will be doing on a canvas if I am using the drawing
tool).
Can you please let me know if my understanding is correct or not?
Thanks a lot.
Sincerely
Senthil
P.S. My apologies if this is a very elementary question for this group.
From: Jürgen Schmidt <[EMAIL PROTECTED]>
To: Senthilkumar Mehalingam <[EMAIL PROTECTED]>
CC: [EMAIL PROTECTED], [EMAIL PROTECTED]
Subject: Re: newbie drawing question
Date: Mon, 09 May 2005 09:41:58 +0200
Hi,
do you have subscribed to the mailing list? If no, please subscibe to
the mailing list and ask your question on the mailing list. This has the
advantage that you will get faster an answer when for example people you
have contacted directly are not available.
To your question:
Please take a look to the SDK examples
(<sdk>/examples/DevelopersGuide/Drawing), they show the use of the API
to draw shapes and other graphic objects.
I hope this helps
Juergen
Senthilkumar Mehalingam wrote:
Hi All,
I am a beginner to OpenOffice.org.
I am trying to make it possible by the user to insert structures
like MS Office's organisation chart in the Drawing and
Presentation documents so as to make drawing such structures in OO a
command rather than the user manually trying to do it
I am trying to implement functionality by which a user can choose
the number and
shapes(say 3 rectangles) and their hierarchy. One on top as parent
having two children. Just as MS Office has an organisation chart I
want to know how the wizard(I presume there is a wizard in Office to
create an Organisation Chart. I want to see how the steps work in
creaing the chart to get ideas for how to build a graphic of a graph
or tree).
Can anybody please suggest me the correct direction and the correct
method to do this.
Thanks a lot
Sincerely
Senthil
P.S. My apologies for posting again but I sent this on May 4 and did
not see it in the mailing list till today May 7.
--
Juergen Schmidt, Technical Lead Software Engineering
OpenOffice.org/StarOffice SDK
_______________________________________________________
Sun Microsystems GmbH [EMAIL PROTECTED]
Sachsenfeld 4, 20097 Hamburg http://sun.com/staroffice
Germany +49/40 23646-984 http://api.openoffice.org
--
Andrew Pitonyak
My Macro Document: http://www.pitonyak.org/AndrewMacro.sxw
My Macro Book: http://www.hentzenwerke.com/catalog/oome.htm
Free Info: http://www.pitonyak.org/oo.php
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]