OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 12:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: StdTables.Table
СообщениеДобавлено: Среда, 31 Март, 2010 14:59 

Зарегистрирован: Среда, 27 Май, 2009 17:33
Сообщения: 27
В Модуле описана переменная
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;


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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: StdTables.Table
СообщениеДобавлено: Среда, 31 Март, 2010 16:14 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
В смысле? Размер её в тексте?

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: StdTables.Table
СообщениеДобавлено: Среда, 31 Март, 2010 17:38 

Зарегистрирован: Среда, 27 Май, 2009 17:33
Сообщения: 27
то есть
Код:
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
задает атрибуты содержания заданного диапазона.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: StdTables.Table
СообщениеДобавлено: Четверг, 01 Апрель, 2010 06:53 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Программно ширину столбцов в StdTables изменить невозможно. Попробуйте подсистему Grid (качать тут: http://oberoncore.ru/bbcc/subs/start)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: StdTables.Table
СообщениеДобавлено: Пятница, 02 Апрель, 2010 11:34 

Зарегистрирован: Среда, 27 Май, 2009 17:33
Сообщения: 27
Спасибо, отличная подсистема.
Вот только документации маловато... Описан только модуль GridTables


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: StdTables.Table
СообщениеДобавлено: Пятница, 21 Май, 2010 13:35 

Зарегистрирован: Среда, 27 Май, 2009 17:33
Сообщения: 27
Код:
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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: StdTables.Table
СообщениеДобавлено: Пятница, 21 Май, 2010 17:35 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
l2qwe писал(а):
Если в GetItem третим параметрмо можно использовать только Views.View то каким образом я могу получить значения GridTables.Table при, что все ячейки заполнены через GridCells.NewLabel


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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: StdTables.Table
СообщениеДобавлено: Понедельник, 24 Май, 2010 10:17 

Зарегистрирован: Среда, 27 Май, 2009 17:33
Сообщения: 27
Иван Кузьмицкий писал(а):
если Вы записали (методом 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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: StdTables.Table
СообщениеДобавлено: Понедельник, 24 Май, 2010 10:21 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Делайте так:
Код:
VAR
   vlabel: Views.View;
   s: ARRAY 255 OF CHAR;
...
BEGIN
...
         table.GetItem(i, j, vlabel);
         WITH vlabel: GridCells.Label DO vlabel.GetText(s) END;
...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: StdTables.Table
СообщениеДобавлено: Понедельник, 24 Май, 2010 10:41 

Зарегистрирован: Среда, 27 Май, 2009 17:33
Сообщения: 27
Спасибо большое.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB