OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 15 Июнь, 2025 22:37

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Table Control
СообщениеДобавлено: Воскресенье, 19 Март, 2006 17:43 

Зарегистрирован: Воскресенье, 19 Март, 2006 17:37
Сообщения: 11
Здравствуйте, уважаемые. С переменной какого типа соединяется Table Control? Смотрел в документации, но там эта штука не рассматривается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 21 Март, 2006 12:42 
Аватара пользователя

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

Если Вы имеете в виду Table Control подсистемы Sql, то они соединяются с переменной типа SqlDB.Table. Подводный камень - SqlDB.Table - это POINTER, поэтому Ваш интерактор нужно проинициализировать ДО открытия окошка с привязанной к нему таблицей. Потом Вы меняете не сам POINTER, а содержимое этой таблицы через ее Exec.
Лучше всего создайте все таблицы-интеракторы сразу после подключения к базе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 01 Апрель, 2006 17:19 

Зарегистрирован: Воскресенье, 19 Март, 2006 17:37
Сообщения: 11
А я, наивный, хотел ее употреблять для вывода массивов и прочих пустяков. Видимо для этого придется использовать обычные документы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 18 Апрель, 2006 15:56 

Зарегистрирован: Четверг, 01 Декабрь, 2005 16:00
Сообщения: 18
Необходимо вывести неизвестное количество таблиц (StdTables.Table), каждая в отдельное окно. Пользуюсь способом описанным в примере к подсистеме CtlsxTestTables.CrateMultiTable следующим образом:

PROCEDURE NextTable (OUT link: ARRAY OF CHAR; VAR n: INTEGER);
VAR tab: POINTER TO ARRAY OF CT.Table;
i: INTEGER;
str: Dialog.String;
BEGIN
IF tables = NIL THEN NEW(tab, 1); n:=0;
ELSE n:=LEN(tables); NEW(tab, n+1);
FOR i:=0 TO n-1 DO tab[i]:=tables[i] END
END;
tables:=tab;
Strings.IntToString(n, str);
link:='ArmshnData.tables[' + str + ']'
END NextTable;

PROCEDURE (this: PacketList) CreateTable(), NEW;
VAR link: Dialog.String;
el: Data;
i: INTEGER;
p: Controls.Prop;
v: Views.View;
BEGIN
NextTable(link, this.index);
tables[this.index].SetSize(this.rows, this.packet.data_count);
el:=this.packet.data; i:=0;
WHILE (i < this.packet.data_count) & (el # NIL) DO
tables[this.index].SetLabel(i, el.name);
INC(i);
el:=el.next
END;
NEW(p); p.link:=link$; p.label:=''; p.guard:=''; p.notifier:='';
p.level:=0; p.opt[Controls.sorted]:=FALSE;
Views.Deposit(CT.dir.NewControl(p));
Views.Fetch(v);
StdDialog.Open(v, this.id, NIL, '', NIL, FALSE, TRUE, FALSE, FALSE, FALSE);
END CreateTable;

(*äåéñòâèÿ ïðè íàæàòèè êíîïêè Open äèàëîãîâîãî îêíà main*)
PROCEDURE OpenTable*();
VAR str: Dialog.String;
el: PacketList;
BEGIN
dialog.list.GetItem(dialog.list.index, str); (*âûäåëåííàÿ ñòðîêà â ñïèñêå òèïîâ ïàêåòîâ*)
el:=packet;
WHILE el # NIL DO
IF el.id$ = str$ THEN el.CreateTable(); RETURN END;
el:=el.next
END
END OpenTable;

При нажатии кнопки для создания вызывается процедура OpenTable, которая должна открыть таблицу в новом окне, соответствующую выделенной строке в списке dialog.list. Данные в таблице периодически должны обновляться при обновлении информации об отображаемой ими модели. Но обновляется всегда только последняя открытая таблица, хотя (как было проверено) сообщение Dialog.Update(table[this.index]) передаю всем открытым в данный момент таблицам.


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

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


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

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


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

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