Pagina 1 di 1

Divisione tabella tra pagine e colonne

Inviato: lunedì 23 settembre 2019, 9:42
da Sara M.
Ciao a tutti,
avrei bisogno di sapere come si fa ad impostare o togliere la proprietà "Consenti la divisione della tabella tra pagine e colonne".
Ho una tabella che viene creata lato codice e a volte l'effetto in fondo alla pagina non è buono (vedi allegato).
Credo che agendo su quella opzione forse posso correggere il problema.

Grazie
Sara

Re: Divisione tabella tra pagine e colonne

Inviato: lunedì 23 settembre 2019, 12:00
da charlie
Ciao e benvenuto/a sul forum.
Se intanto ti vuoi presentare puoi farlo in questa sezione -> viewforum.php?f=16
Per una panoramica delle regole del forum puoi consultare il Manuale di sopravvivenza -> http://forum.openoffice.org/it/forum/vi ... hp?f=1&t=2

Buon proseguimento.

Re: Divisione tabella tra pagine e colonne

Inviato: lunedì 23 settembre 2019, 12:34
da hubert lambert
Ciao Sara,

Ogni riga di una tabella ha una proprietà "IsSplitAllowed", che consente o no la divisione di quella riga tra pagine. Quando si deseleziona l'opzione "Consenti la divisione della tabella tra pagine e colonne" senza selezionare nessuna riga, il programma applica il valore "False" per tutte le righe, un po' così:

Codice: Seleziona tutto

    doc = thiscomponent
    doc.lockControllers()
    tabella = doc.TextTables(0)
    righe = tabella.Rows
    for n = 0 to righe.Count -1
        righe(n).IsSplitAllowed = False    
    next n
    doc.unlockControllers()
Cordiali saluti.

Re: Divisione tabella tra pagine e colonne

Inviato: giovedì 26 settembre 2019, 9:15
da Sara M.
Intanto grazie per la risposta.

Ho provato a cercare la proprietà IsSplitAllowed, ma non riesco a trovarla.

Il modello contiene un segnalibro che uso per creare la tabella in quel punto
Il codice è il seguente:

Codice: Seleziona tutto

var servfac = (XMultiServiceFactory)base._componentInstance;
var xBookmarkSupplier = (XBookmarksSupplier)base._componentInstance;
var xNamedBookmarks = xBookmarkSupplier.getBookmarks();
var bookmark = xNamedBookmarks.getByName(bookmarkName);
var xTextContent = (XTextContent)bookmark.Value;
var xTextRange = xTextContent.getAnchor();
var xLocalText = xTextRange.getText();
var xLocalCursor = xLocalText.createTextCursorByRange(xTextRange);

//creo la tabella
var xTextTable = (XTextTable)servfac.createInstance("com.sun.star.text.TextTable");
xTextTable.initialize(rowsCount, colsCount);
xLocalText.insertTextContent(xLocalCursor, xTextTable, false);
Ho provato ad andare sulla singola riga, ma non ho quella proprietà

Codice: Seleziona tutto

var righe = xTextTable.getRows();
//IsSplitAllowed non c'è
righe.getByIndex(1).IsSplitAllowed

Re: Divisione tabella tra pagine e colonne

Inviato: giovedì 26 settembre 2019, 16:11
da hubert lambert
Ciao,

Dovresti dirci quando si tratta di un altro linguaggio che il oobasic.
Prova forse così:

Codice: Seleziona tutto

var righe = xTextTable.getRows();
righe.getByIndex(1).setPropertyValue("IsSplitAllowed", false)
https://www.openoffice.org/api/docs/com ... leRow.html

Re: Divisione tabella tra pagine e colonne

Inviato: venerdì 27 settembre 2019, 10:05
da Sara M.
Scusami :oops:

Il codice è scritto in C# e usa una libreria (sviluppata internamente dalla mia azienda) che a sua volta usa le librerie di open office (cli_basetypes, cli_cppuhelper, cli_oootypes e cli_uretypes).
Mi sono ritrovata questo progetto già fatto così in cui ho dovuto aggiungere una stampa e non sono per niente pratica di OO

Purtroppo non ho "setPropertyValue"....

Ho provato così

Codice: Seleziona tutto

using uno;
using unoidl.com.sun.star.beans;

var xPS = (XPropertySet)xTextTable;
xPS.setPropertyValue("IsSplitAllowed", new Any(false));
e anche così

Codice: Seleziona tutto

var xCellRange = (XCellRange)xTextTable;
var xSelectedCells = xCellRange.getCellRangeByName(range);
xCellProps = (XPropertySet)xSelectedCells;
xCellProps.setPropertyValue("IsSplitAllowed", new Any(false));
ma ottengo sempre l'errore: Unknown property: IsSplitAllowed

Re: Divisione tabella tra pagine e colonne

Inviato: venerdì 27 settembre 2019, 11:46
da hubert lambert
Devi chiamare setPropertyValue dall'interfaccia XPropertySet dell'oggetto "row".
Non so come ottenere quella interfaccia con C#. Ma nei tuoi ultimi esempi, hai solo provato con un oggetto "table" e "cellrange", chè quella proprietà nessuno l'ha... ;)