Hello Ariel,
many thanks for your code-snippet...
That was it, what I need;-)
Works fine...
Best regards from Germany
Andre
Am Donnerstag, 7. Februar 2008 23:09 schrieb Ariel Constenla-Hagle:
> Hello Andre,
>
> Andre Heine escribió:
> > Hello all,
> >
> > in oobasic can I set the "SetOptimalColumnWidth" on selected
> > cells/columns.
>
> I guess you were using the dispatch with the command URL
> ".uno:SetOptimalColumnWidth", because there is no method named
> setOptimalColumnWidth().
>
> In fact there is the property "OptimalWidth" in the service
> css.table.TableColumn.
>
> > Know someone the property name for the C++ API?
>
> there is only *one* OOo API, with different language bindings. SO that
> the services and interfaces are the same, i.e. language independent.
>
> > Any hints?
>
> the following works, but is pure API calls, NO dispatching at all
> (because I don't like it at all ;-) ). See if you can modify it to fit
> your needs:
>
> #include <iostream>
>
> #include <cppuhelper/bootstrap.hxx>
> #include <rtl/ustring.hxx>
>
> #include <com/sun/star/beans/PropertyValue.hpp>
> #include <com/sun/star/beans/XPropertySet.hpp>
> #include <com/sun/star/container/XIndexAccess.hpp>
> #include <com/sun/star/frame/XComponentLoader.hpp>
> #include <com/sun/star/lang/XMultiComponentFactory.hpp>
> #include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
> #include <com/sun/star/sheet/XSpreadsheets.hpp>
> #include <com/sun/star/sheet/XSpreadsheet.hpp>
> #include <com/sun/star/table/XCell.hpp>
> #include <com/sun/star/table/XColumnRowRange.hpp>
> #include <com/sun/star/table/XTableColumns.hpp>
> #include <com/sun/star/uno/XComponentContext.hpp>
>
> using namespace std;
> using namespace rtl;
> using namespace com::sun::star::beans;
> using namespace com::sun::star::container;
> using namespace com::sun::star::frame;
> using namespace com::sun::star::lang;
> using namespace com::sun::star::sheet;
> using namespace com::sun::star::table;
> using namespace com::sun::star::uno;
>
>
> 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 Calc document
> Reference< XSpreadsheetDocument > rSpreadsheetDocument (
> rComponentLoader->loadComponentFromURL(
> OUString( RTL_CONSTASCII_USTRINGPARAM(
> "private:factory/scalc" ) ),
> OUString( RTL_CONSTASCII_USTRINGPARAM( "_blank" ) ),
> 0,
> Sequence < ::com::sun::star::beans::PropertyValue >()
> ), UNO_QUERY );
>
> // get the collection of sheets in the document
> Reference< XSpreadsheets > rSheets =
> rSpreadsheetDocument->getSheets();
>
> // XIndexAccess to get an spreadsheet by index
> Reference< XIndexAccess > rIndexedSheets( rSheets, UNO_QUERY );
>
> // get the first sheet (index == 0)
> Reference< XSpreadsheet > rSpreadsheet(
> rIndexedSheets->getByIndex(
> sal_Int32( 0 ) ), UNO_QUERY );
>
> // query the sheet's XColumnRowRange to access the collections
> of
> columns and rows of the sheet
> Reference< XColumnRowRange > rColumnRowRange ( rSpreadsheet,
> UNO_QUERY );
>
> // get the collection of columns
> Reference< XTableColumns > rTableColumns =
> rColumnRowRange->getColumns();
>
> // get the first column (index == 0), and query its
> XPropertySet to
> cahnge its properties
> Reference< XPropertySet > rPropertySet (
> rTableColumns->getByIndex(
> sal_Int32( 0 ) ), UNO_QUERY );
>
> // get the cell named A1
> Reference< XCell > rCellA1 = rSpreadsheet->getCellByPosition(
> sal_Int32( 0 ), sal_Int32( 0 ) );
>
> // set a very long text
> rCellA1->setFormula( OUString::createFromAscii(
>
> "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
>aaaaaaaaaaaaaaaaaaaa") );
>
> cout << "Press ENTER to set the column property OptimalWidth
> to true";
> cin.get();
> cout << endl;
>
> // change the property OptimalWidth, so that the column is as
> width as
> the text inside the cell
> rPropertySet->setPropertyValue(
> OUString::createFromAscii("OptimalWidth"), Any( sal_True ) );
>
> 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;
> }
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]