OberonCore
https://forum.oberoncore.ru/

StdTables.Table
https://forum.oberoncore.ru/viewtopic.php?f=24&t=2502
Страница 1 из 1

Автор:  l2qwe [ Среда, 31 Март, 2010 14:59 ]
Заголовок сообщения:  StdTables.Table

В Модуле описана переменная
testTable* : StdTables.Table;

Дальше задаю размер testTable (кол-во строк и столбцов) и заполняю её.

Потом вывожу её
f.WriteView(StdTables.dir.NewControl(p));
где p : Controls.Prop
Код:
NEW(p); p.link:='ВолнаDSE.testTable'; p.guard:=''; p.notifier:='';
p.level:=0; p.opt[Controls.sorted]:=FALSE;


в итоге у меня в отдельном документе вставляется эта таблица(я так понимаю что это фрэйм).

Вопрос : могу ли я в дальнейшем изменить размер таблицы. Не кол-во строк и столбцов фрэйма в котором отображается таблица.

Автор:  Илья Ермаков [ Среда, 31 Март, 2010 16:14 ]
Заголовок сообщения:  Re: StdTables.Table

В смысле? Размер её в тексте?

Запомните саму вьюшку (StdTables.dir.NewControl(p)).

После вставки в документ размер вьюшки в документе можно менять путём: v.context.SetSize(w, h)

Автор:  l2qwe [ Среда, 31 Март, 2010 17:38 ]
Заголовок сообщения:  Re: StdTables.Table

то есть
Код:
vTable := StdTables.dir.NewControl(p);
f.WriteView(vTable);
...
...
...
vTable.context.SetSize(w, h)


Большое спасибо.

Следующий вопрос:
Как можно программно изменить ширину столбцов?
PROCEDURE (VAR tab: Table) SetAttr (l, t, r, b: INTEGER; style: SET; weight: INTEGER; color: Ports.Color), NEW
задает атрибуты содержания заданного диапазона.

Автор:  Иван Кузьмицкий [ Четверг, 01 Апрель, 2010 06:53 ]
Заголовок сообщения:  Re: StdTables.Table

Программно ширину столбцов в StdTables изменить невозможно. Попробуйте подсистему Grid (качать тут: http://oberoncore.ru/bbcc/subs/start)

Автор:  l2qwe [ Пятница, 02 Апрель, 2010 11:34 ]
Заголовок сообщения:  Re: StdTables.Table

Спасибо, отличная подсистема.
Вот только документации маловато... Описан только модуль GridTables

Автор:  l2qwe [ Пятница, 21 Май, 2010 13:35 ]
Заголовок сообщения:  Re: StdTables.Table

Код:
PROCEDURE PrintGrid*(table : GridTables.Table;);
VAR
   i, j            : INTEGER;   
   vlabel         : GridCells.Label;   
   s            : ARRAY 255 OF CHAR;
BEGIN
   t := TextModels.dir.New();
   f.ConnectTo(t);
   StdLog.Ln;
   StdLog.Int(table.cols);
   StdLog.String("        ");
   StdLog.Int(table.rows);
   StdLog.Ln;
   i:=0;
   WHILE i < table.rows DO
      j := 0;
      WHILE j < table.cols DO
         table.GetItem(i, j, vlabel);
         vlabel.GetText(s);
         f.WriteString(s);
         IF j < table.cols -1 THEN
            f.WriteTab;
         END;
         INC(j);
      END;
      INC(i);
      f.WriteLn;
   END;   
   v := TextViews.dir.New(t);
   Views.OpenView(v);
END PrintGrid;


При компиляции выдает ошибку на строку
table.GetItem(i, j, vlabel[type is not identical with that of formal VAR-, IN-, or OUT-parameter]);

Если в GetItem третим параметрмо можно использовать только Views.View то каким образом я могу получить значения GridTables.Table при, что все ячейки заполнены через GridCells.NewLabel

Автор:  Иван Кузьмицкий [ Пятница, 21 Май, 2010 17:35 ]
Заголовок сообщения:  Re: StdTables.Table

l2qwe писал(а):
Если в GetItem третим параметрмо можно использовать только Views.View то каким образом я могу получить значения GridTables.Table при, что все ячейки заполнены через GridCells.NewLabel


Дело в том, что таблица Grid - это контейнер для отображений. GridCells.Label является частным случаем, и если Вы записали (методом SetItem) в ячейку отображение GridCells.Label, то его же и прочитаете (метод GetItem).

Что там дальше Вы будете делать с отображением, это Ваше дело :)

GridCells.Label - это отображение для визуализации цепочки символов. Эту цепочку можно получить методом Label.GetText.

Автор:  l2qwe [ Понедельник, 24 Май, 2010 10:17 ]
Заголовок сообщения:  Re: StdTables.Table

Иван Кузьмицкий писал(а):
если Вы записали (методом SetItem) в ячейку отображение GridCells.Label


я это и пытаюсь сделать, но модуль не компилируется, а выдает ошибку как раз на GetItem


Код:
VAR
   vlabel         : GridCells.Label;   
   s            : ARRAY 255 OF CHAR;
...
BEGIN
...
         table.GetItem(i, j, vlabel);
         vlabel.GetText(s);
...


table.GetItem(i, j, vlabel[type is not identical with that of formal VAR-, IN-, or OUT-parameter]);

Возможно я не правильно объявляю переменную vlable

Автор:  Иван Кузьмицкий [ Понедельник, 24 Май, 2010 10:21 ]
Заголовок сообщения:  Re: StdTables.Table

Делайте так:
Код:
VAR
   vlabel: Views.View;
   s: ARRAY 255 OF CHAR;
...
BEGIN
...
         table.GetItem(i, j, vlabel);
         WITH vlabel: GridCells.Label DO vlabel.GetText(s) END;
...

Автор:  l2qwe [ Понедельник, 24 Май, 2010 10:41 ]
Заголовок сообщения:  Re: StdTables.Table

Спасибо большое.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/