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]