.Net Core SDK, cannot set text property

Ilya Sokolov is at rula-tech.com
Fri Mar 28 05:35:17 UTC 2025


Hello,

It seems there is another issue with the .Net Core SDK.

There is a need to set with of the column of a table. There is a function,
which sets the width of a table column, listed below. The function is
converted from the code, which works with the .Net Framework SDK.

void SetColumnWidth(XTextTable textTable,int ColNum, short Width)
{
    Any obj =
textTable.query<XPropertySet>().getPropertyValue("TableColumnSeparators");
    TableColumnSeparator[] tcs = (TableColumnSeparator[])(obj.Value);
    short Delta = 0;
    if (tcs != null)
    {
        if (tcs.Length - 1 >= ColNum)
        {
            if (ColNum == 0)
            {
                Delta = (short)(Width - tcs[ColNum].Position);
                tcs[ColNum].Position = Width;
            }
            else
            {
                Delta = (short)(Width - (tcs[ColNum].Position -
tcs[ColNum].Position));
                tcs[ColNum].Position = (short)(Width + tcs[ColNum -
1].Position);
            }
        }

        Any val = new Any(typeof(com.sun.star.text.TableColumnSeparator[]),
tcs);

textTable.query<XPropertySet>().setPropertyValue("TableColumnSeparators",
val);
    }
}

If the function is called in
\sdk\examples\dotnet\WriterDemo\csharp\WriterDemo.cs, like listed below:

// Get first row
XTableRows tableRows = textTable.getRows();
Any rowAny = tableRows.query<XIndexAccess>().getByIndex(0);

*SetColumnWidth(textTable, 1, 200);*

// Set a different background color for the first row
XPropertySet firstRowPropertySet = rowAny.cast<XPropertySet>();
firstRowPropertySet.setPropertyValue("BackTransparent", new Any(false));


It gives an access violation error ("Attempted to read or write protected
memory. This is often an indication that other memory is corrupt") on the
line

 textTable.query<XPropertySet>().setPropertyValue("TableColumnSeparators",
val);

When I tried to get the columns of the table via the code below (the code
is inserted in the  WriterDemo.cs  example too):

// Set the table background color
XPropertySet tablePropertySet = textTableI.query<XPropertySet>();
tablePropertySet.setPropertyValue("BackTransparent", new Any(false));
tablePropertySet.setPropertyValue("BackColor", new Any(0xCCCCFF));


*XTableColumns tableCols = textTable.getColumns();Any colAny =
tableCols.query<XIndexAccess>().getByIndex(1);*

// Get first row
XTableRows tableRows = textTable.getRows();
Any rowAny = tableRows.query<XIndexAccess>().getByIndex(0);


However, the   tableCols.query<XIndexAccess>().getByIndex(1) line give
another error:

Exception thrown: 'System.ArgumentException' in net_basetypes.dll
An unhandled exception of type 'System.ArgumentException' occurred in
net_basetypes.dll
Value of Any can only be null if Type is void. Perhaps you want Any.VOID?


Could you tell me what is a proper way to change the table column width
using the .Net Core SDK?


On Thu, Mar 27, 2025 at 6:28 PM Ilya Sokolov <is at rula-tech.com> wrote:

> Hello
>
> I am trying to use the .Net Core SDK and  try to run some program, which
> previously run on .Net Framework.
>
> There is a strange issue here: there are two properties of a
> character, CharEscapement and CharEscapementHeight, they are set like
>
>  XText DocText = m_Doc.query<XTextDocument>().getText();
> m_TextCursor = DocText.createTextCursor();
>
> XPropertySet CurObject = m_TextCursor.query<XPropertySet>();
>
> CurObject.setPropertyValue("CharEscapement", new Any((Int16)0));
> CurObject.setPropertyValue("CharEscapementHeight", new Any((Byte)100));
>
> And the CharEscapement is set successfully, but an : 'Object reference not
> set to an instance of an object.' exception occurres when the second
> property is set.
>
> Could you tell me if there is a known workaround about the issue?
>
>
>
> --
> Best Regards,
> Ilia Sokolov
>
>

-- 
Best Regards,
Ilia Sokolov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libreoffice/attachments/20250328/faa1ef44/attachment.htm>


More information about the LibreOffice mailing list