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(
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") );

                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;
}





--
Ariel Constenla-Haile
La Plata, Argentina

[EMAIL PROTECTED]
[EMAIL PROTECTED]

http://www.ArielConstenlaHaile.com.ar/ooo/



"Aus der Kriegsschule des Lebens
                - Was mich nicht umbringt,
        macht mich härter."
                Nietzsche Götzendämmerung, Sprüche und Pfeile, 8.

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

Reply via email to