Hi Kent,

i think that is a known bug, but i can't remember 100% and can't find the appropriate bug id. Maybe you can check if the API returns always the initial values when you have created the frame.

Juergen


Kent Gibson wrote:
Thanks. I tried that. And I always get "41"?!

Unless of course I need to refresh the frame somehow.

Here is what I am doing:

Object writerShape = documentFactory.createInstance(
"com.sun.star.text.TextFrame" );
XTextContent xTextContentShape = ( XTextContent )
UnoRuntime.queryInterface( XTextContent.class,
writerShape );

XPropertySet xTextContentPropertySet = ( XPropertySet
) UnoRuntime.queryInterface( XPropertySet.class,
xTextContentShape );

xTextContentPropertySet.setPropertyValue( "Width", new
Integer( width ) );
xTextContentPropertySet.setPropertyValue( ANCHOR_TYPE,
TextContentAnchorType.AT_FRAME );
xTextContentPropertySet.setPropertyValue( TEXT_WRAP,
WrapTextMode.NONE );
xTextContentPropertySet.setPropertyValue(
FRAME_IS_AUTOMATIC_HEIGHT, new Boolean( true ) );

XPropertySet xShapeProps = ( XPropertySet )
UnoRuntime.queryInterface( XPropertySet.class,
writerShape );

// Setting the vertical position
xShapeProps.setPropertyValue( VERT_ORIENT, new Short(
VertOrientation.NONE ) );
xShapeProps.setPropertyValue( HORI_ORIENT, new Short(
HoriOrientation.NONE ) );

// I need to recalculate x & y for the header
// Setting the vertical position
xShapeProps.setPropertyValue( HORI_ORIENT_POSITION,
new Integer( ( x.intValue() ) ) );
xShapeProps.setPropertyValue( VERT_ORIENT_POSITION,
new Integer( ( y.intValue() ) ) );
// making sure that text can overlap
xShapeProps.setPropertyValue( BACK_TRANSPARENT,
Boolean.TRUE );
xShapeProps.setPropertyValue( OPAQUE, Boolean.FALSE );

XText xShapeText = ( XText )
UnoRuntime.queryInterface( XText.class, writerShape );

mxDocText.insertTextContent( xParaCursor,
xTextContentShape, false );

xShapeText.setString( textContentString +
getDebugString( x, y, width, height ) + getRNDString()
);

// xTextContentPropertySet also gives me the same
result
Integer heightInteger =
(Integer)xShapeProps.getPropertyValue(
FRAME_HEIGHT_ABSOLUTE );
System.out.println("heightInteger " + heightInteger);

--- Stephan Wunderlich <[EMAIL PROTECTED]>
wrote:

Hi Kent,

If you have a textframe and you it is autosized is
there no way of finding out how big it is after
you
put the text content in it?

I have tried everything. I have three text frames
of
various sizes (due to various content) and they
always
return the same size.
I even tried going through the drawpage, but oddly
that didn't work.

XDrawPage xDrawPage =
xDrawPageSupplier.getDrawPage();
XShapes xShapes = ( XShapes )
UnoRuntime.queryInterface( XShapes.class,
xDrawPage );
int shapeCount = xShapes.getCount();
for ( int i = 0; i < shapeCount; i++ )
{
Object shapeObj = xShapes.getByIndex( i );
XShape shape = ( XShape )
UnoRuntime.queryInterface(
XShape.class, shapeObj );

Size size = shape.getSize();
}
a TextFrame has the properties "FrameHeightAbsolute"
and "FrameWidthAbsolute" which, as far as I know, contain the values you look for.

Hope that helps

Regards

Stephan


---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]




__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
---------------------------------------------------------------------
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]

Reply via email to