OpenOffice Base - как изменить высоту управления таблицей в макросе? - PullRequest
3 голосов
/ 13 декабря 2011

У меня есть элемент управления таблицей в Libre / OpenOffice Base, который заполняется динамически.
Я хочу изменить его высоту в соответствии с количеством строк.
Как это сделать?

Я пытался изменить свойства getSize() / setSize() и height, но получаю:

Property or method not found: getSize

Мой код:

oTable = oForm.GetByName("MySubForm").GetByName("MyTable")
oTable.getSize()

Визуализация: http://i.imgur.com/IHi75.png

Об этом элементе управления таблицей, как он назван в Base - в отладчике это com.star.comp.forms.OGridControlModel, в content.xml он указан как com.sun.star.form.component.GridControl

1 Ответ

1 голос
/ 21 декабря 2011

Ваша проблема в том, что объект Table не имеет высоты, высота зависит от количества строк (а также от TopMargin и BottomMargin).

У каждой строки есть свое свойство Height.

Если вы хотите высоту таблицы, вам нужно сложить высоту всех строк. Таблицы имеют свойства TopMargin и BottomMargin, которые влияют на «воспринимаемый» Высота также.

Rows = Table.getRows
For I = 0 To Rows.getCount() - 1
   Row = Rows.getByIndex(I)
   CurrentHeight = CurrentHeight + Row.Height
Next

Если вы хотите установить высоту таблицы, вам нужно либо добавить / удалить строки, либо изменить высоту текущих строк.

Rows.insertByIndex(Rows.getCount(), 1)
Row = Rows.getByIndex(Rows.getCount() - 1)
Row.IsAutoHeight = False
Row.Height = 1000

Вы можете посмотреть полную документацию онлайн. http://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide/More_Than_Text

...