OberonCore https://forum.oberoncore.ru/ |
|
Приличный пример использования StdTables? https://forum.oberoncore.ru/viewtopic.php?f=35&t=3268 |
Страница 1 из 1 |
Автор: | Иван Денисов [ Пятница, 18 Февраль, 2011 19:20 ] |
Заголовок сообщения: | Приличный пример использования StdTables? |
Понадобилось вывести таблицу, вроде из стандартных подсистем для этого есть 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 ] |
Заголовок сообщения: | Re: Приличный пример использования StdTables? |
во-первых в p.link должен стоять адрес экспортированой переменной типа StdTables.Table, т.н. интерактор, например: Код: MODULE MyModule; VAR t1*: StdTables.Table; <...> p.link:='MyModule.t1'; Во-вторых, так как таблица контрол сложный, то у него есть ещё свои особые пропиртя. Их тоже можно установить программно, но, как я понял из примера, лучше, если создать форму и разместить на ней контрол руками, и заполнить в свойствах контрола поле Link. |
Автор: | Пётр Кушнир [ Пятница, 18 Февраль, 2011 20:57 ] |
Заголовок сообщения: | Re: Приличный пример использования StdTables? |
А открывать форму, сохранённую на диске(обычно в каталоге Rsrc), можно командой StdCmds.OpenAuxDialog. |
Автор: | Info21 [ Пятница, 18 Февраль, 2011 21:01 ] |
Заголовок сообщения: | Re: Приличный пример использования StdTables? |
divan писал(а): Понадобилось вывести таблицу Можно попросить намеком хотя бы: почему не получается ограничиться табулированной табличкой в тексте? с парой Rulers?
|
Автор: | Евгений Темиргалеев [ Пятница, 18 Февраль, 2011 21:25 ] |
Заголовок сообщения: | Re: Приличный пример использования StdTables? |
Да, уточните постановку задачи, пожалуйста. Таблицу нужно вывести для печати, для интерактива? P.S. я предпочитаю увернуться от использования контролов (и м.б. буду полезен в этом деле)... Таблицей пока пользоваться не доводилось, тут я пас... |
Автор: | Иван Денисов [ Суббота, 19 Февраль, 2011 06:15 ] |
Заголовок сообщения: | Re: Приличный пример использования StdTables? |
Большое спасибо Петру. Все получилось! Таблица нужна для наглядности и интерактива, чтобы через нее можно было менять значения в базе данных. Пока получился вот такой пример с таблицей, пока без интеректива, просто вывод без заранее приготовленного контрола. Код: 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 |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |