Hi,

On Thu, Sep 19, 2013 at 11:32:50PM +0300, K.Misha wrote:
> Code in attached file makes TextTable like this:
> 
> 
> 
>  
> 
> But how i can make table like this:

The answer is in the code snippet in the API documentation:
http://www.openoffice.org/api/docs/common/ref/com/sun/star/text/TextTable.html

Set the HoriOrient property to NONE and then set the LeftMargin and
RightMargin; or try other combinations, like in the attached example.


Regards
-- 
Ariel Constenla-Haile
La Plata, Argentina
#include <iostream>

#include <cppuhelper/bootstrap.hxx>
#include <rtl/ustring.hxx>

/** === begin UNO includes === **/
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/chart/XChartData.hpp>
#include <com/sun/star/chart/XChartDataArray.hpp>
#include <com/sun/star/chart/XChartDocument.hpp>
#include <com/sun/star/document/XEmbeddedObjectSupplier.hpp>
#include <com/sun/star/frame/XComponentLoader.hpp>
#include <com/sun/star/lang/XComponent.hpp>
#include <com/sun/star/lang/XMultiComponentFactory.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/sheet/XCellRangeData.hpp>
#include <com/sun/star/sheet/XCellRangeData.hpp>
#include <com/sun/star/table/XCell.hpp>
#include <com/sun/star/table/XTableRows.hpp>
#include <com/sun/star/text/ControlCharacter.hpp>
#include <com/sun/star/text/TableColumnSeparator.hpp>
#include <com/sun/star/text/HoriOrientation.hpp>
#include <com/sun/star/text/XText.hpp>
#include <com/sun/star/text/XTextContent.hpp>
#include <com/sun/star/text/XTextCursor.hpp>
#include <com/sun/star/text/XTextDocument.hpp>
#include <com/sun/star/text/XTextTable.hpp>
#include <com/sun/star/text/XTextTableCursor.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
/** === end UNO includes === **/

/** === begin UNO using === **/
using ::com::sun::star::beans::PropertyValue;
using ::com::sun::star::beans::XPropertySet;
using ::com::sun::star::chart::XChartData;
using ::com::sun::star::chart::XChartDataArray;
using ::com::sun::star::chart::XChartDocument;
using ::com::sun::star::document::XEmbeddedObjectSupplier;
using ::com::sun::star::frame::XComponentLoader;
using ::com::sun::star::lang::XComponent;
using ::com::sun::star::lang::XMultiComponentFactory;
using ::com::sun::star::lang::XMultiServiceFactory;
using ::com::sun::star::sheet::XCellRangeData;
using ::com::sun::star::sheet::XCellRangeData;
using ::com::sun::star::table::XCell;
using ::com::sun::star::table::XTableRows;
using ::com::sun::star::text::TableColumnSeparator;
using ::com::sun::star::text::XText;
using ::com::sun::star::text::XTextContent;
using ::com::sun::star::text::XTextCursor;
using ::com::sun::star::text::XTextDocument;
using ::com::sun::star::text::XTextTable;
using ::com::sun::star::text::XTextTableCursor;
using ::com::sun::star::uno::Any;
using ::com::sun::star::uno::Exception;
using ::com::sun::star::uno::Reference;
using ::com::sun::star::uno::RuntimeException;
using ::com::sun::star::uno::Sequence;
using ::com::sun::star::uno::UNO_QUERY_THROW;
using ::com::sun::star::uno::UNO_QUERY_THROW;
using ::com::sun::star::uno::XComponentContext;
using ::com::sun::star::uno::XInterface;
using ::com::sun::star::uno::makeAny;
/** === end UNO using === **/

using namespace std;
using rtl::OUString;
namespace ControlCharacter = ::com::sun::star::text::ControlCharacter;

int SAL_CALL main( int argc, char *argv[] )
{
    try
    {
        // bootstrap the office
        Reference< XComponentContext > rContext ( ::cppu::bootstrap() );
        Reference< XMultiComponentFactory > rMCF( rContext->getServiceManager() 
);

        // instantiate the Desktop and get a reference to XComponentLoader
        Reference < XComponentLoader > rComponentLoader(
            rMCF->createInstanceWithContext( OUString( 
RTL_CONSTASCII_USTRINGPARAM(
                    "com.sun.star.frame.Desktop" ) ), rContext ), 
UNO_QUERY_THROW );

        // load a new empty OOo Writer document
        Reference< XTextDocument > rTextDocument (
            rComponentLoader->loadComponentFromURL(
                OUString( RTL_CONSTASCII_USTRINGPARAM( 
"private:factory/swriter" ) ),
                OUString( RTL_CONSTASCII_USTRINGPARAM( "_blank" ) ),
                0,
                Sequence < ::com::sun::star::beans::PropertyValue >() ), 
UNO_QUERY_THROW );

        // get the XText interface
        Reference< XText > rText = rTextDocument->getText();

        // create a text cursor
        Reference< XTextCursor > rTextCursor = rText->createTextCursor();
        rTextCursor->gotoStart( sal_False );

        rText->insertString(
            rTextCursor.get(),
            OUString( RTL_CONSTASCII_USTRINGPARAM( "Default table:" ) ),
            sal_False );

        // insert a paragraph break
        rText->insertControlCharacter(
            rTextCursor.get(), ControlCharacter::PARAGRAPH_BREAK, sal_False );

        // get the document's factory
        Reference< XMultiServiceFactory > rDocFactory( rTextDocument, 
UNO_QUERY_THROW );

        // create a text table
        Reference< XTextTable > rTextTable (
            rDocFactory->createInstance(
                OUString( RTL_CONSTASCII_USTRINGPARAM( 
"com.sun.star.text.TextTable" ) ) ),
            UNO_QUERY_THROW );
        // initalize it with 5 rows and 6 columns
        rTextTable->initialize( sal_Int32( 5 ), sal_Int32( 6 ) );

        // insert it in the document
        rText->insertTextContent( rTextCursor.get(), rTextTable.get() , 
sal_False );

        //----------------------------------------------------------------------

        rText->insertString(
            rTextCursor.get(),
            OUString( RTL_CONSTASCII_USTRINGPARAM( "Table: center alignment, 80 
% relative width" ) ),
            sal_False );

        // insert a paragraph break
        rText->insertControlCharacter(
            rTextCursor.get(), ControlCharacter::PARAGRAPH_BREAK, sal_False );

        rTextTable.set(
            rDocFactory->createInstance(
                OUString( RTL_CONSTASCII_USTRINGPARAM( 
"com.sun.star.text.TextTable" ) ) ),
            UNO_QUERY_THROW );
        // initalize it with 5 rows and 6 columns
        rTextTable->initialize( sal_Int32( 5 ), sal_Int32( 6 ) );

        // insert it in the document
        rText->insertTextContent( rTextCursor.get(), rTextTable.get() , 
sal_False );

        Reference< XPropertySet > rTablePropertySet ( rTextTable, 
UNO_QUERY_THROW );


        rTablePropertySet->setPropertyValue(
            OUString( RTL_CONSTASCII_USTRINGPARAM( "HoriOrient" ) ),
            makeAny( com::sun::star::text::HoriOrientation::CENTER ) );
        rTablePropertySet->setPropertyValue(
            OUString( RTL_CONSTASCII_USTRINGPARAM( "RelativeWidth" ) ),
            makeAny( sal_Int16( 80 ) ) );

        //----------------------------------------------------------------------

        rText->insertString(
            rTextCursor.get(),
            OUString( RTL_CONSTASCII_USTRINGPARAM( "Table: manual alignment, 
left and right margins" ) ),
            sal_False );

        // insert a paragraph break
        rText->insertControlCharacter(
            rTextCursor.get(), ControlCharacter::PARAGRAPH_BREAK, sal_False );

        rTextTable.set(
            rDocFactory->createInstance(
                OUString( RTL_CONSTASCII_USTRINGPARAM( 
"com.sun.star.text.TextTable" ) ) ),
            UNO_QUERY_THROW );
        // initalize it with 5 rows and 6 columns
        rTextTable->initialize( sal_Int32( 5 ), sal_Int32( 6 ) );

        // insert it in the document
        rText->insertTextContent( rTextCursor.get(), rTextTable.get() , 
sal_False );

        rTablePropertySet.set( rTextTable, UNO_QUERY_THROW );

        rTablePropertySet->setPropertyValue(
            OUString( RTL_CONSTASCII_USTRINGPARAM( "HoriOrient" ) ),
            makeAny( com::sun::star::text::HoriOrientation::NONE ) );
        rTablePropertySet->setPropertyValue(
            OUString( RTL_CONSTASCII_USTRINGPARAM( "LeftMargin" ) ),
            makeAny( sal_Int32( 3000 ) ) );
        rTablePropertySet->setPropertyValue(
            OUString( RTL_CONSTASCII_USTRINGPARAM( "RightMargin" ) ),
            makeAny( sal_Int32( 1500 ) ) );


        cout << "Press ENTER to finish the example";
        cin.get();
    }
    catch ( Exception &e )
    {
        cerr << "caught UNO exception: "
             << OUStringToOString( e.Message, RTL_TEXTENCODING_ASCII_US 
).getStr()
             << '\n';
        return 1;
    }
    return 0;
}


Attachment: pgpVg4xMXoJrV.pgp
Description: PGP signature

Reply via email to