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/ |