I appreciate being able to see some code :-)
Still did not get enough sleep. I sent a birth anouncement by email to
family and friends before going to bed and then I started to receive
telephone call after telephone call until late into the night. So, my
mind is a bit clouded. I sometimes read the email to relax :-)
I see immediately that you do NOT declare all of your variables. Can you
add "Option Explicit" to the top of every module. This can be a good
thing at times. If you know that you have a string variable, then
declare it as a string. For objects, I usually use a Variant, which
means that I do not bother to name a type.
My suggestions shown below are guesses, I hope that they work.
Douglas Staas wrote:
Thanks. Below are some relevant code snippets. This might be related to my message titled: "macro only works when there is a breakpoint". I haven't been able to reproduce this bug with a breakpoint and stepping over the code. When I step over the code, I switch between the macro window and the document window to see the behavior. I wonder if this causes some sort of a refresh that is lacking in my code?
thanks
doug
So, try to add something like:
Dim iCount As Integer
Dim oShape
Dim oPage
Dim ShapeName As String
sub x
iCount = oPage.getCount
For i = 0 to iCount - 1
oShape = oPage.getByIndex( i )
ShapeName = oShape.getName
if ...
elseIf ( ShapeName = "ClientLogoBBCover" ) then
SizeAndPlaceGraphic( oShape, oPage, "ClientLogoCover" )
elseIf ( ShapeName = "ClientLogoBBSpine1" ) then
SizeAndPlaceGraphic( oShape, oPage, "ClientLogoSpine1" )
elseIf ( ShapeName = "ClientLogoBBSpine2" ) then
SizeAndPlaceGraphic( oShape, oPage, "ClientLogoSpine2" )
elseIf ( ShapeName = "ClientLogoBBSpine3" ) then
SizeAndPlaceGraphic( oShape, oPage, "ClientLogoSpine3" )
end if
Next
end sub
Hmmm, I did not know that you could declare your variables this way.
Hmmm. Very interesting. First, note that you use the variable iCount in
BOTH subroutines, but you NEVER declared them. Are you using an evil
global variable, or one whose scope is limited to the subroutine?
Declare EVERY variable so that you know its scope. How about the oShape
objects?
Try changing the heading as follows:
sub SizeAndPlaceGraphic(BoundingBox, oPage, ByVal GraphicName$ )
At least change the GraphicName declaration if the others do not work.
sub SizeAndPlaceGraphic( BoundingBox as SvxShapeText, oPage as SdDrawPage,
GraphicName )
Dim oSize As New com.sun.star.awt.Size
Dim oPos As New com.sun.star.awt.Point
dim oGraphic
iCount = oPage.getCount
For i = 0 to iCount - 1
oShape = oPage.getByIndex( i )
ShapeName = oShape.getName
if (ShapeName = GraphicName) then
oGraphic = oShape
end if
next
if isEmpty( oGraphic ) then
oGraphic = ThisComponent.createInstance(
"com.sun.star.drawing.GraphicObjectShape" )
oGraphic.Name = GraphicName
oPage.add(oGraphic)
end if
cUrl = ConvertToUrl( oDialog.GetControl( "FileControl1" ).Text )
if ( cUrl = "" ) then
rem No client logo selected
oSize.height = 0
oSize.width = 0
oGraphic.setSize( oSize )
else
maxW = BoundingBox.size.width
maxH = BoundingBox.size.height
oGraphic.SetPosition( BoundingBox.position )
oGraphic.GraphicURL = cUrl
OriginalAspectRatio = oGraphic.Graphic.SizePixel.width / oGraphic.Graphic.SizePixel.height
oSize.height=maxH
oSize.width= OriginalAspectRatio * oSize.height
if ( oSize.width > maxW ) then
Shrink = maxW / oSize.width
oSize.width = maxW
oSize.height = oSize.height * Shrink
end if
oGraphic.setSize(oSize)
end if
end sub
Douglas Staas wrote:
Attached is my newest binder cover Draw file. It prompts the user for a "client
logo" and it displays the image in 4 locations. Sometimes all 4 locations are
updated, sometimes 1, sometimes 2, 3 or ever zero. When less then 4 locations
are updated, you can save the file, close it, reopen it and magically all 4
locations show the correct image. What's going on here? I'm running the same
code with the same input and getting different results.
... actually, it looks like the attachment is too large for this list.
In general, attachements are highly discouraged. Assume that I add a 1MB
attachemt and send my email. Many people will recieve this one MB
attachement. The majority do not care to see the attachement. Many of
the people use a dial-up connection. So, most mailing lists
automatically remove attachements. The preferred method is for you to
host the document somewhere and then provide a link to it.
That said, there are many possible reasons for this particular problem.
Sometimes, I have found that making some very simple rediculous change
causes the problem to go away. Without looking at the macro, this is
very difficult to say. I can think of a few things off hand that MIGHT
cause the problem.
You create the object in such a way that the SAME object (or some shared
portion is the same) is used in all places. When you save the document,
only a reference is saved, and on opening, an entirely new copy is
properly created for each object. I had this really strange problem
while using arrays and strings. It turned out that I was storing a
reference to a string each time that I added it to the array . When I
was finished, every instance had the same value because they all
referenced the same variable instance. It was very strange indeed.
If possible, create the smallest simplest macro that demonstrates the
problem, and then if the macro is short, simply add it here. If not,
then create it in a document such that it can demonstrate the problem
and then post the document and send a link to the list.
--
Andrew Pitonyak
My Macro Document: http://www.pitonyak.org/AndrewMacro.odt
My Book: http://www.hentzenwerke.com/catalog/oome.htm
Info: http://www.pitonyak.org/oo.php
See Also: http://documentation.openoffice.org/HOW_TO/index.html
---------------------------------------------------------------------
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]
--
Andrew Pitonyak
My Macro Document: http://www.pitonyak.org/AndrewMacro.odt
My Book: http://www.hentzenwerke.com/catalog/oome.htm
Info: http://www.pitonyak.org/oo.php
See Also: http://documentation.openoffice.org/HOW_TO/index.html
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]