OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 07 Июль, 2020 11:51

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: Пятница, 18 Февраль, 2011 19:20 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2762
Понадобилось вывести таблицу, вроде из стандартных подсистем для этого есть StdTables. Но не удалось найти пример использования и в документации достаточно сухо. Есть подсистема Grid, но хотелось бы обойтись стандартными средствами, благо таблица не сложная.

Поделитесь примером, пожалуйста!

Или, что я делаю не так? Открывается серый кварат...
Код:
   PROCEDURE LogT*;
      VAR j, i: INTEGER; t1, t2: SqlDB.Table; money: Money;
         temp1, temp2: ARRAY 50 OF CHAR; sum, ttt: REAL; user: User; rec: Rec;
         table: StdTables.Table;
         p: Controls.Prop;
   BEGIN
      IF db = NIL THEN Start() END;
      IF db # NIL THEN
         db.Exec("USE [DCentre_Discount]");
         Query(db, "SELECT * FROM Cards", t1);
         IF t1.rows > 0 THEN
            db.Exec("USE [DCentre]");
            NEW(p);
            p.link := ""; p.label := ""; p.guard := ""; p.notifier := "";
            p.level := 0; p.opt[Controls.sorted] := TRUE;
            
            table.SetSize(t1.rows, 2);
            FOR i := 0 TO t1.rows - 1 DO
               t1.Read(i, user);
               Strings.IntToString(user.ID_Man, temp1);
               Query(db, "SELECT  ID_Man, Card_Number, SurName, Name, Secname, BirthDay, Phone  FROM Man WHERE ID_Man = " + temp1$, t2);
               IF t2.rows > 0 THEN
                  table.SetItem(i, 0, rec.Card_Number$);
                  table.SetItem(i, 1, rec.SurName$)
               END
            END;
            Views.OpenAux(StdTables.dir.NewControl(p), "Test")
         END
      END
   END LogT;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Февраль, 2011 20:54 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2651
Откуда: Россия, Ярославль
во-первых в p.link должен стоять адрес экспортированой переменной типа StdTables.Table, т.н. интерактор, например:
Код:
MODULE MyModule;

VAR t1*: StdTables.Table;
<...>
p.link:='MyModule.t1';


Во-вторых, так как таблица контрол сложный, то у него есть ещё свои особые пропиртя. Их тоже можно установить программно, но, как я понял из примера, лучше, если создать форму и разместить на ней контрол руками, и заполнить в свойствах контрола поле Link.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Февраль, 2011 20:57 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2651
Откуда: Россия, Ярославль
А открывать форму, сохранённую на диске(обычно в каталоге Rsrc), можно командой StdCmds.OpenAuxDialog.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Февраль, 2011 21:01 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8336
Откуда: Троицк, Москва
divan писал(а):
Понадобилось вывести таблицу
Можно попросить намеком хотя бы: почему не получается ограничиться табулированной табличкой в тексте? с парой Rulers?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Февраль, 2011 21:25 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4593
Откуда: Россия, Орёл
Да, уточните постановку задачи, пожалуйста.

Таблицу нужно вывести для печати, для интерактива?

P.S. я предпочитаю увернуться от использования контролов (и м.б. буду полезен в этом деле)... Таблицей пока пользоваться не доводилось, тут я пас...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 19 Февраль, 2011 06:15 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2762
Большое спасибо Петру. Все получилось! Таблица нужна для наглядности и интерактива, чтобы через нее можно было менять значения в базе данных.

Пока получился вот такой пример с таблицей, пока без интеректива, просто вывод без заранее приготовленного контрола.
Код:
MODULE MyTest;
   IMPORT Controls, StdTables, Views, Strings;
   VAR
      t1*: StdTables.Table; p: Controls.Prop;
   PROCEDURE Do*;
      VAR i, j: INTEGER; temp: ARRAY 20 OF CHAR;
   BEGIN
      NEW(p);
      p.link := "MyTest.t1"; p.label := ""; p.guard := ""; p.notifier := "";
      p.level := 0; p.opt[Controls.sorted] := TRUE;
      t1.SetSize(100, 2);
      t1.SetLabel(0, "i");
      t1.SetLabel(1, "i*i");
      FOR i := 0 TO 99 DO
         Strings.IntToString(i, temp);
         t1.SetItem(i, 0, temp$);
         Strings.IntToString(i*i, temp);
         t1.SetItem(i, 1, temp$);
      END;
      Views.OpenAux(StdTables.dir.NewControl(p), "Test table")
   END Do;

END MyTest.Do


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

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


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

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


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

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