Hi Fernand,

the refresh don´t have a effect.

// Attach the fieldmaster to the field...
userField.attachTextFieldMaster(masterPropSet);
((XRefreshable) UnoRuntime.queryInterface(XRefreshable.class, xTextFieldsSupplier.getTextFields())).refresh();

Am 27.08.2012 11:48, schrieb Fernand Vanrie:
Carsten ,

you need a "refresch" off the field ?

hope it helps

Fernand
Hello, i have a problem with formatting of a text field. I create a text field in Java and insert this in a document. The content is 0.0 and the format is the default currency. But the content is not formatted. The document show me 0.0 and not 0,00 €.
Why?

private void setTextField(Object[] value)
{
try
{
XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, oBean.getDocument());
XController xController = xTextDocument.getCurrentController();
XTextViewCursorSupplier xTextViewCursorSupplier = (XTextViewCursorSupplier) UnoRuntime.queryInterface(XTextViewCursorSupplier.class, xController); XTextViewCursor xDocTextCursor = xTextViewCursorSupplier.getViewCursor();

XText xText = xDocTextCursor.getText();

xText.insertTextContent(xDocTextCursor, createTextField(xTextDocument, (String) value[2], (String) value[1]), false);
}
catch (Exception e)
{
logger.error(e);
}
}

private XDependentTextField createTextField(XTextDocument xTextDocument, String fieldName, String fieldValue)
{
XMultiServiceFactory xMultiServiceFactory = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument); XTextFieldsSupplier xTextFieldsSupplier = (XTextFieldsSupplier) UnoRuntime.queryInterface(XTextFieldsSupplier.class, xTextDocument); XNameAccess xNamedFieldMasters = xTextFieldsSupplier.getTextFieldMasters();
XDependentTextField userField = null;
XPropertySet masterPropSet = null;

try
{
// Create the field...
userField = (XDependentTextField) UnoRuntime.queryInterface(XDependentTextField.class, xMultiServiceFactory.createInstance("com.sun.star.text.TextField.User"));

if (!xNamedFieldMasters.hasByName("com.sun.star.text.FieldMaster.User." + fieldName))
{
// Create the field master...
masterPropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xMultiServiceFactory.createInstance("com.sun.star.text.FieldMaster.User"));

// Set the field name and content...
masterPropSet.setPropertyValue("Name", fieldName);
masterPropSet.setPropertyValue("Content", fieldValue);

if (fieldValue.equals("0.0"))
{
// Query the number formats supplier of the document
com.sun.star.util.XNumberFormatsSupplier xNumberFormatsSupplier = (com.sun.star.util.XNumberFormatsSupplier) UnoRuntime.queryInterface(com.sun.star.util.XNumberFormatsSupplier.class, xTextDocument);

// Get the number formats from the supplier
com.sun.star.util.XNumberFormats xNumberFormats = xNumberFormatsSupplier.getNumberFormats();

// Query the XNumberFormatTypes interface
com.sun.star.util.XNumberFormatTypes xNumberFormatTypes = (com.sun.star.util.XNumberFormatTypes) UnoRuntime.queryInterface(com.sun.star.util.XNumberFormatTypes.class, xNumberFormats);

// Get the number format index key of the default currency
// format,
// note the empty locale for default locale
com.sun.star.lang.Locale aLocale = new com.sun.star.lang.Locale();
int nCurrencyKey = xNumberFormatTypes.getStandardFormat(com.sun.star.util.NumberFormat.CURRENCY, aLocale);

XPropertySet fieldProperties = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, userField); fieldProperties.setPropertyValue("NumberFormat", new Integer(nCurrencyKey));

}
}
else
{
masterPropSet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xNamedFieldMasters.getByName("com.sun.star.text.FieldMaster.User." + fieldName));
}

// Attach the fieldmaster to the field...
userField.attachTextFieldMaster(masterPropSet);
}
catch (java.lang.Exception e)
{
logger.error(e);
}
return userField;
}

Kind regrads
Carsten




Reply via email to