Обсуждение:Длм-ка dtb.d32 - объекты для разработки своих консольных приложений (+)
0 (0)
Обсуждение:Длм-ка dtb.d32 - объекты для разработки своих консольных приложений (+) ( Обсуждение примера 11.11.2003 16:31 )
5(1)Средство разработки своих консольных форм и их объектов + объекты для доступа к данным и фильтрации
22.02.2006 В примеры добвлен макрос dtbconsole.mac, который будет содержать
функции, эмулирующие РСЛ-ные консольные функции (для режима "DTB
under GUI"). Пока там dtb_MsgBox и dtb_MsgBoxEx.
18.02.2006 Сделаны доступными функции:
dtb_ScreenSize - Возвращает размеры консольного экрана
SetConsoleScreenBufferSize - Устанавливает размер экрана. Но
только в сторону увеличения раз-меров.
dtb_GetConsoleTitle - Возвращает заголовок консоли
dtb_SetConsoleTitle - Устанавливает заголовок консоли
dtb_CreateConsole - Создает консоль (только в режиме "DTB under GUI")
dtb_DeleteConsole - Уничтожает консоль (только в режиме "DTB under GUI")
dtb_CheckConsole - Проверяет режим приложения
dtb_DisableClose - Отключает "крестик", которым можно закрыть консольное окно
Исправлен метод TlgList.Del(TlgNode * node). При удалении первого узла
программа падала. Теперь все ОК.
13.02.2006 Бета-версия. Длм-ка переписана для работы под графическим приложением
(например по интерфейсом EasyWin). Если приложение не консольное, то при
первом вызове консольных функций создается отдельное консольное окно.
Реализована эмуляция всех fs-функций, кроме fs_wrtMarkStr.
Не реализована пока эмуляция функций: MsgBox, MsgBoxEx, InitProgress,
UseProgress, RemProgress, GetInt (все Get-ы), menu.
Вместо message() юзайте dtb_message().
Под XP (наверное и под 2000) у консольного окна можно через "Свойства"
окна задать шрифт и размеры окна, и применить их для "всех окон с тем же
именем", тогда эти настройки будут использованы в дальнейшем.
Для терминала теперь достаточно одной длм-ки t_textgp.d32. В ней объеди-
нены функции обмена терминал-сервер с упаковкой и без. При этом в направ-
лении сервер-терминал, если упакованный буфер больше неупакованного, то
посылается неупакованный. t_textga.d32 больше не используется.
Исправлено некорретное сохранение и восстановление строки статуса, сфор-
мированной приложением до запуска первой формы dtb. Ранее считалось, что
это 24-ая строка (нумерация с 0) с шириной 80 символов. При закрытии пос-
ледней формы на окне с размерами буфера больше 25 х 80 выводилась строка
с пробелами. Теперь сохраняется и восстанавливается по факту (определяются
размеры экрана и т.д.).
16.09.2005 Введено свойство TlgNode.Value аналогичное TlgNode.Object.
Конструктор TlgFile теперь поддерживает контейнер на основе ADO-
RecordSet, созданного rsax.d32.
15.09.2005 Немного изменен алгоритм определения местонахождения TlgFile при
открытии. Теперь, если в TlgFile.Open не задан путь к файлу, то
сначала определяется путь местонахождения словаря и подставляется к
файлу, если же он не задан - берется стандартный каталог данных.
07.09.2005 При присвоении TlgField значения типа V_UNDEF стандартная функция
dlm-ки ValueCopy вызывала сбой программы. Теперь эта ситуация обой-
дена.
01.08.2005 Исправлена работа TlgFile. Если по полю в ключе одновременно стоят
ограничения по SetMinMax и SetValues, то это будет корректно отраба-
тываться. Добавлено свойство bool TlgField.InValues - значение поля
соответствует SetValues или нет.
В TjkEdit дата по умолчанию теперь выводится в виде "dd.mm.yyyy".
26.05.2005 Новое свойство int TlgField.ToType. Содержит код типа, в который
автоконвертируется TlgField.Value во время метода Get. Например,
у вас поле в базе типа V_STRING, содержит только цифры. Тогда, за-
дав ToType=V_INTEGER, вы получите автоконвертирование в целое зна-
чение. Если ToType=0 (по умолчанию) или равно текущему типу поля,
конвертации не происходит. При использовании автоконвертации в гриде
желательно устанавливать у поля грида Length, равным его Width.
Посмотреть пример
>> ОтветитьРабота в 3-х звенке ( omm 18.02.2004 05:30 )
0(0)При вызове метода формы в 3-х звенке программа зависает, а в 2-х звенке работает все нормально. В чем может быть причина?
P.S.: файлы для терминальной части лежат в C:\Terminal
>> ОтветитьДа, я забыл в архив добавить терминальные части, теперь добавил, попробуй с ними (-) ( григ 18.02.2004 07:45 )
0(0)Not specified
>> Ответить
Изменения в dtb.d32 (+) ( григ 05.03.2004 10:30 )
0(0)04.03.2004 Добавлено свойство TlgFile.FormatCurrency для более гибкого регулиро-
вания формата денежных полей в файле. Возможные значения:
0 - зависит от глобальных установок dtbSetCurrency (по умолчанию)
1 - старый формат 10-ти байтовый long double (LDMON)
2 - новый формат 8-ми байтовый целый (Currency).
Также модернизирован метод TlgField.Set. Теперь новое значение
предварительно приводится к типу поля (для невычисляемых полей).
>> ОтветитьГде файлы библиотеки dtb? ( Iv 20.07.2004 16:29 )
0(0)В представленной архивном файле sample166.zip находятся только примеры, а самой библиотеки dtb нет.
>> ОтветитьТеперь есть (-) ( григ 20.07.2004 16:51 )
0(0)Not specified
>> ОтветитьСпасибо ( Iv 20.07.2004 16:57 )
5(1)Not specified
>> Ответить
Как узнать размеры окна консоли ( Iv 22.07.2004 10:06 )
0(0)Существует ли функция в dtb с помощью которой можно было бы узнать размеры окна консоли? Или есть стандартные функции в RSL?
>> ОтветитьПока никак (+) ( григ 22.07.2004 10:13 )
0(0)Нет такой функции, но теоретически можно добавить. А смысл?
dtb жестко ориентирована на окно 80*25
>> ОтветитьИз каких соображений сделаны такие ограничения окна 80*25? ( Iv 22.07.2004 10:23 )
0(0)Not specified
>> ОтветитьИз исторических (+) ( григ 22.07.2004 10:44 )
0(0)N-цать лет назад не было Win2000, соответственно все консольные окна были одного размера. Ну и потом там экраны пересылаются и буфер под это выделен в 4 кило.
>> ОтветитьСтоит ли в планах отменить указанное ограничение? ( Iv 22.07.2004 10:59 )
0(0)Not specified
>> ОтветитьВ планах - возможно, (+) ( григ 22.07.2004 11:17 )
0(0)в планах надо бы вообще переписать вывод на экран - это бы ускорило работу. Надо Юру Крысова трясти, автора.
>> Ответить
Не работает в БОУРМ TlgFile. ( Iv 27.07.2004 10:26 )
0(0)На строку в макросе:
TlgFile("..\\DBFile\\clbpDoc.dbt", "..\\DBFile\\clntbnk.def");
Выдаются сообщения
1. Неверный ключ 2 в ..\dbfile\clntbnk.def
2. TlgDef: нет в словаре файла ..\DBFile\clbpDoc.dbt!
3. TlgFile не создан!
Возможно ли вообще нормальная работа dbt в БОУРМЕ?
>> ОтветитьСкорее всего да (+) ( григ 27.07.2004 13:29 )
0(0)Хотя у меня нет Боурма.
У тебя ошибка в конструкторе:
надо так:
clbpDoc=TlgFile("clbpDoc.dbt", "..\\DBFile\\clntbnk.def"); clbpDoc.Open(0,-2,"..\\DBFile\\clbpDoc.dbt"); clbpDoc.AddAllFields; clbpDoc.ApplyRange; i=0; InitProgress(clbpDoc.nrecords,null,"Обработка данных..."); clbpDoc.First; while(not clbpDoc.eof) ... clbpDoc.Next; i=i+1; UseProgress(i); end; RemProgress;
>> ОтветитьОшибка повторилась. Выдается точно такая же диагностика. ( Iv 27.07.2004 13:57 )
0(0)Ругается именно на первую строку
clbpDoc=TlgFile("clbpDoc.dbt", "..\\DBFile\\clntbnk.def");
>> ОтветитьА "define.def" у тебя в DBFILE лежит? (-) ( григ 27.07.2004 14:33 )
0(0)Not specified
>> ОтветитьDefine.def лежит в DBFile ( Iv 27.07.2004 14:57 )
0(0)Если его там нет, то выдается следующая диагностика:
1. TlgDef: не найден define.def!
2. TlgFile не создан!
>> ОтветитьКинь мне на greg@ezmail.ru свой def и dbt, я посмотрю (-) ( григ 28.07.2004 07:35 )
0(0)Not specified
>> ОтветитьВсе понятно (+) ( григ 29.07.2004 14:24 )
0(0)Имя структуры надо задавать точно так, как в словаре. Т.е.
clbpDoc=TlgFile("clbpdoc.dbt", "..\\DBFile\\clntbnk.def");
а не clbpDoc=TlgFile("clbpDoc.dbt", "..\\DBFile\\clntbnk.def");
В словаре (def) ключ по имени структуры регистрозависим. Поэтому неправильный регистр не находит и ругается.
>> ОтветитьВсе заработало. Спасибо. ( Iv 29.07.2004 15:52 )
0(0)Not specified
>> Ответить
Не работает пример использования источника данных ADO в гриде dtb ( Iv 30.07.2004 18:09 )
0(0)Файл dtb_ado.mac.
При запуске макроса ругается на строку
File0.First;
Текст сообщения:
Ошибка dtb_ado.mac
Строка 43
Ошибка выполнения : Invoke, ошибка вызова свойства/метода DISP_E_EXCEPTION
Хотя сам SQL-запрос работает
>> ОтветитьОшибка в макросе после обновления версии dtb ( alexeaa207 03.12.2004 09:29 )
0(0)После обновления версии dtb стала появляться ошибка типа "Не определена операция Money + MoneyL"
В Макросе примерно следующее:
pd = TlgFile("pay_doc.dbt") /* файл из RS-Retail*/
pd.AddAllFields;
pdInSum = pd.AddField("InSum");
pd.Open(0,-2);
Total = $0;
pd.First;
While(NOT pd.eof)
Total = Total + pdInSum.Value; /* ругается на этот оператор */
end;
Пробовал задавать dtbSetCurrency(False,True) - не помогло
Пробовал явно задавать pd.FormatCurrency = 2 - не помогает.
В чем может быть дело? (и где взять последнюю доку, а то у меня очень древняя)
dtb.d32 размер 786432 от 02.12.04
>> ОтветитьВозможно (+) ( григ 03.12.2004 09:55 )
0(0)версия dtb.d32 тут ни при чем. Ругается ведь сам РСЛ (наверное ты сборку обновил). Попробуй сделать:
Total=$0L;
А дока, как и примеры, как и сам длм-ка лежат:
http://support.softlab.ru/portal/Samples/samples.asp?Typ=7
>> ОтветитьСборку-то я, конечно, обновил, но ( alexeaa207 03.12.2004 10:35 )
0(0)и на ней со старой dtb (размер770048 от 10.06.03) РАБОТАЕТ нормально.
А Total = $0l пробовал (равно как и MoneyL(Total)). Тип ее от этого (на этой сборке, по крайней мере) остается тем же
Причем ValType(Total) выдает 2, ValType(pdInSum.Value) выдает 4.
На попытку Money(pdInSUm.Value) говорит, что не может выполнить преобразование типов.
Попробовал пользовать файл как pdd=TBFile. В этом случае ValType(pdd.rec.InSum) показывет 2 (тип Money, насколько я понимаю). Так что, от DTB что-то зависит, но в чем дело непонятно.
>> ОтветитьВыходит, что (+) ( григ 03.12.2004 13:01 )
0(0)Твой РСЛ (в котором ты макрос выполняешь) поддерживает только Currency (Money, только 8-ми байтовое целое). Попробуй в начале сделать dtbSetCurrency(true,true).
>> ОтветитьПопробовал по-всякому ( alexeaa207 03.12.2004 13:46 )
0(0)Но результат не изменился.
Мне непонятно, почему pdInsum.Value получает тип MoneyL, несмотря ни на что. Может что-тот я делаю не так?
dtbSetCurrency вызываю перед объявлением pd=TlgFile
Влияние второго параметра в dtbSetCurrency явно заметно - начинает ругаться при выполнении, влияние же первого параметра внешне не заметно, но результат (см.пред.сообщения)
>> ОтветитьЯ кое-что поправил и послал тебе, проверь, жду ответа (-) ( григ 06.12.2004 09:12 )
0(0)Not specified
>> ОтветитьЧто-то ничего пока не получил. ( alexeaa207 06.12.2004 10:05 )
0(0)Not specified
>> ОтветитьСкачай из примеров Р-Стайла, я там обновил (-) ( григ 06.12.2004 10:22 )
0(0)Not specified
>> Ответить
Теперь все получилось. ( alexeaa207 06.12.2004 11:34 )
0(0)Теперь при задании dtbSetCurrency(true,true) все работает нормально.
>> Ответить
Теряется связка с мастер-файлом ( mlv 23.12.2004 17:22 )
0(0)Мастер-файл и текущий файл связаны по полю, которое в ключе подчиненного файла идет вторым. На первое поле в ключе подчиненного файла наложен SetMinMax и Max>Min. Как сделать так, чтобы отрабатывалось движение при всех значениях первого поля из заданного диапазона, при хорошем быстродействии.
>> ОтветитьСтандартный вариант. Должно работать. (-) ( григ 24.12.2004 08:09 )
0(0)Not specified
>> ОтветитьРаботает только для значения первого поля равном Min. ( mlv 24.12.2004 11:19 )
0(0)Что тут может быть?
>> ОтветитьПонятно (+) ( григ 24.12.2004 11:53 )
0(0)Тогда пример не совсем корректный. Чтобы все быстро и правильно работало подчиненное поле должно быть первым в ключе. Либо же MinValue и MaxValue д.б. одинаковы. Как вариант - перебор в цикле MinValue до MaxValue с заданием SetMinMax заново. Еще можно попробовать указать в SetMaster ключ, отличный от текущего в подчиненном файле. Но тогда конечно, ни о какой скорости говорить не приходится.
>> ОтветитьНе совсем понятно где должен отрабатываться цикл с перебором. ( mlv 27.12.2004 11:21 )
0(0)Ведь подбор значения первого поля нужно производить после установки на запись в мастер-файле.
>> Ответить
Как "подружить" TlgFile и TRecHandler (или TbFile) ( alexeaa207 28.02.2005 13:44 )
0(0)Имеется давний макрос, которому в качестве параметра передается rr - типа Record.
Теперь понабилось использовать вызов этот макроса из программы, которая работает уже с TlgFile.
Можно использовать GetBufer, но проблема в том, что хочется отказаться от Record совсем, чтобы в определении использовать имя словаря в качестве переменной (record требует явный строковый литерал)
Пример.(сейчас)
Файл tst1.mac
Macro tstFunct( rr ) /* вызывется в массе других программ, так что переделывать его не хочется*/
println(rr.Sum);
end;
Файл tstMain
record rr ("postdoc.dbt","n:\\dbfile\\bank.def") /* работа с БД RS-BANK 5.0 из RS-Retail, в котором другая структура postdoc*/
fil = TlgFile("postdoc.dbt", GetINIString("MYDISTDBFILE")+"\\bank.def");
fil.Open;
.....
rr = fil.GetBufer;
tstFunct(rr);
Хочется избавиться от явного имени словаря в объявлении record (например использованием TRecHandler)
При этом решение
rr = TRecHandler("postdoc.dbt", GetINIString("MYDISTDBFILE")+"\\bank.def");
rr.SetRecordAddr( fil.GetBufer );
не проходит. Т.е., ругаться-то не ругается, но и к полям записи неверно обращается
Есть ли выход?
>> ОтветитьПри обращении через ADODB к MS SQL серваку вылетает ошибка: ( Smolenkov 29.03.2005 17:01 )
0(0)┌──────────────────────────────────────────────────────────────────────┐ │ ActiveX Error: │ │ [Microsoft][ODBC SQL Server Driver][SQL Server]Could not find stored │ │ procedure 'ToString'. │ │ (80040E14) │ └──────────────────────────────────────────────────────────────────────┘
1.Подключаемся через АДО к серваку.
2. Делаем запрос (select)
3. Кол-во выбранных записей > 0
4. File0=TlgFile(rs), где rs - RecordSet с выборкой.
5. Создаем Grid0 с Grid0.Source=File0
6. Начинаем цеплять поля к Grid0: Grid0.AddField(File0.GetField("XXXXXX")); (или ...AddField(XXXXXX) - где XXXXXX объявлется как поле после (4))
7. На 6-ом шаге получаем выше описанную ошибку с сообением от DTB: "Ошибка выполнения :Метод AddField:нет источника данных для навигации"
Что я делаю не так? (что мало вероятно) если это ошибка разработчиков DLM, то когда нужно исправиться :))
>> ОтветитьРабота с GRID-ом ( Iv 22.04.2005 12:30 )
0(0)Можно ли в одной колонке GRID-а выводить значения нескольких полей dbt-файла
>> ОтветитьВ строчке - да, в колонке - через вычисляемое поле (-) ( григ 11.07.2005 15:21 )
0(0)Not specified
>> Ответить
Можно ли сделать ячейку Grid-а редактируемой? ( Iv 11.07.2005 11:16 )
0(0)Можно ли сделать ячейку Grid-а редактируемой?
>> ОтветитьTjkField.Edited=true (-) ( григ 11.07.2005 15:20 )
0(0)Not specified
>> ОтветитьПоле все равно остается нередактируемым ( Iv 11.07.2005 16:02 )
0(0)Я написал примерно такой код
Source01 = TlgList("Source01"); grid01 = Form01.AddGrid(6); f01 = grid01.AddField(Source01); f01.Edited = true;
Но поле f01 все равно нередактируемо
>> ОтветитьНу так бы сразу сказал про источник-список (+) ( григ 12.07.2005 07:46 )
0(0)В этом случае встроенный редактор не действует. Делай сам обработку Enter и потом - либо стандартную Getxxx, либо выводи форму-карточку.
>> Ответить
Глюк при определении источника данных в Гриде? ( Iv 13.07.2005 15:45 )
0(0)Не правильно определяется источник данных.
ЕслиL1 = TlgList("List1"); G1 = Form1.AddGrid(6); T1 = G1.AddField(L1);
Тогда приG1.Field(0).SourceField
получаем "TlgNode", хотя по документации должны получить "TlgList"
>> ОтветитьЭто неточность в доке (+) ( григ 16.09.2005 12:37 )
0(0)В принципе поле содержит указатель на список, но он недоступен из РСЛ.
>> Ответить
Возможно ли создавать свои классы на основе классов dtb? ( Iv 19.07.2005 15:02 )
0(0)Возможно ли создавать свои классы на основе классов dtb?
У меня выдается ошибка
Т.е. на строку
CLASS (TlgFile) TBaseFile(TableName, DicName)
получаем TlgDef: не могу найти словарь W!
Может, я что-то не так делаю?
>> ОтветитьЯ посмотрю это дело, как руки дойдут (-) ( григ 16.09.2005 14:06 )
0(0)Not specified
>> ОтветитьРуки дошли, разобрался (+) ( григ 11.10.2005 14:07 )
0(0)Для версии РСЛ 949 и длм-объектов, требующих входные параметры для конструктора видимо не получится. Почему-то РСЛ перестал передавать входные параметры в конструктор родительского объекта. Объект отдельно создается без параметров, а потом они инициализируются в Init... Очень странная логика. TlgFile обязательно требует входных параметров в конструкторе и его такая логика не устраивает. Используй композицию объектов, а не наследование.
>> Ответить
Виндовый интерфейс ( Oleg_S 27.12.2005 10:52 )
0(0)как заставить dtb работать в виндовом интерфейсе?
>> ОтветитьПока никак. В праздники займусь (-) ( григ 27.12.2005 12:22 )
0(0)Not specified
>> ОтветитьВиндовый интерфейс ( Oleg_S 27.12.2005 12:39 )
0(0)григ, (я так понимаю это Григорий Лупов), как скоро будет реализация?
или может стоит посмотреть в сторону VCLRSL?
>> ОтветитьВ эти праздники буду пробовать (+) ( григ 27.12.2005 12:58 )
0(0)Не хватает времени. Сразу скажу, что будет на уровне отдельного консольного окна, а не в окне с EasyWin-ом, т.к. разработчики не дали инструментарий для работы с графическим окном. А если новое окно - будут проблемы с настройкой внешнего вида: шрифт, размеры, когда окно гасить и т.д. В консольном режиме dtb работает по старому.
VclRsl - принципиально другая вещь, там идет действительно самостоятельное графическое окно и ему не важно в каком режиме работает окно RS-Bankа. В принципе можно работать с этой длм-кой. Но у многих есть наработки на dtb.d32, поэтому я все равно буду дорабатывать под параллельную работу с EasyWin (хотя я сам и не буду этот интерфейс юзать).
А в целом, оглядываясь назад, не может не радовать тот факт, что R-Style не забывает сторонних разработчиков и всегда подкидывает им очередную бесплатную проблему.
>> ОтветитьГОСПОДА, программисты, может поддержим разработчика? ( Oleg_S 27.12.2005 13:20 )
0(0)Предлагаю скинуться хотя бы по полтинику...
Если посчитать, то DTB сильно сокращает время разработки, повышает вашу квалификацию в глазах юзеров, и соответственно повышает вашу зарплату :)
Очень уж нуно виндовый интерфейс...
>> ОтветитьКуда переводить? ( moleg 28.12.2005 04:15 )
0(0)Not specified
>> ОтветитьДа! Реквииты, пжалста! ( alexeaa207 28.12.2005 10:56 )
0(0)Not specified
>> ОтветитьГригорий!!! Не молчи! Народ требует! ( Oleg_S 28.12.2005 11:11 )
0(0)Not specified
>> ОтветитьМожет не надо? Не коммерческий я человек. (-) ( григ 28.12.2005 11:42 )
0(0)Not specified
>> Ответить
Хотелось как лучше, что бы маленько тебя подбодрить :) ( Oleg_S 28.12.2005 11:56 )
0(0)Not specified
>> ОтветитьНу тогда записывай (+) ( григ 28.12.2005 12:18 )
0(0)БИК 043304711, ОАО КБ "Хлынов" г.Киров, счет 42301810800000028039, Луппов Григорий Борисович.
>> ОтветитьПеревел ( Oleg_S 28.12.2005 13:02 )
0(0)Отправил 100 вам на двоих с Юрием (по полтинику как и договаривались)
Перевод от Садовникова Олега Сергеевича
>> ОтветитьСпасибо (-) ( григ 28.12.2005 14:02 )
0(0)Not specified
>> ОтветитьНет уж... ( PoMbI4 11.01.2006 11:19 )
0(0)Нет уж... Это тебе спасибо. Большое. :)
И в приложение к благодарностям тоже вот выслал небольшой денежный знак.
>> Ответить
Сделал. Теперь dtb.d32 может работать и в графических приложениях (+) ( григ 13.02.2006 09:20 )
0(0)с формированием своего консольного окна. Кто хочет потестить - давайте заявки.
Не реализована пока эмуляция функций: MsgBox, MsgBoxEx, InitProgress, UseProgress, RemProgress, GetInt (все Get-ы), menu.
Вместо message() юзайте dtb_message().
Под XP (наверное и под 2000) у консольного окна можно через "Свойства" окна задать шрифт и размеры окна, и применить их для "всех окон с тем же именем", тогда эти настройки будут использованы в дальнейшем.
>> ОтветитьВ каком виде заявки? ( Oleg_S 13.02.2006 09:29 )
0(0)В любом, кроме 3. Тебе уже отправил. (+) ( григ 13.02.2006 10:21 )
0(0)Not specified
>> Ответить
dtb.d32 и графические приложения ( Oleg_S 15.02.2006 06:40 )
0(0)Дошли руки до проверки. Оригинальное решение. Я даже от неожиданности дар речи потерял :-)
Однако работать можно и теперь это не останавливает при переходе на графику. Спасибо!
Вот только один вопрос: консоль так и останется или со временем dtb тоже станет "гуЁвым"?
>> ОтветитьОстанется консольным, не все же будут работать в GUI (+) ( григ 15.02.2006 07:58 )
0(0)Разработчик планирует поддерживать три интерфейса: консоль, EasyWin и RS-Forms. Чтобы работать в EasyWin с графическим окном, надо писать эмуляцию fs-функций и Win32API-консольных функций для графики, т.к. Сергей Кубрин пока не дал в свободное пользование функций по работе с графическим окном EW. Если даст - можно будет думать над переделкой.
Пока же dtb просто создает свое консольное окно и работает в нем. И все ваши наработки на Dtb будут работать нормально в приложении с GUI-интерфейсом. И действительно, теперь можно думать о переходе под графику. Только мне еще нужно дописать свои аналоги тех функций РСЛ, которые работают с экраном.
Если же нужен GUI-интерфейс, пользуйтесь vclrsl.d32. Очень старая разработка.
>> ОтветитьОстанется консольным, не все же будут работать в GUI (+) ( Oleg_S 15.02.2006 08:21 )
0(0)Согласен, что не все будут работать.
По поводу всяких мессаджбоксов: мне кажется, что можно оставить как есть. Пусть они выдаются в "гуях". Лучше все силы отдать на гуевое дтб, причем если эрос-банк используется в консоли, то и дтб должно быть консольным, а если эрос-банк гуевый, то и дтб гуевый автоматически. Это как бы максимальная задача и как я понял все зависит от Кубрина.
Будем ждать!
>> ОтветитьСергей, что скажешь? Я же говорил, что такое решение половинчатое. (-) ( григ 15.02.2006 10:09 )
0(0)Not specified
>> ОтветитьОтвет ( Кубрин Сергей 20.02.2006 19:29 )
0(0)Григорий, я дал тебе ответ. Можешь его здесь выложить в развёрнутом виде.
Если кратко:
- Выдать эмуляцию fs функций для EasyWin мне не жалко, но таковой не существует в природе.
- Стандартное GUI средство расширения приложений RS-Bank - это RS-Forms, которое мы будем активно развивать. EasyWin - это переходный вариант.
>> ОтветитьВот развернутый ответ (+) ( григ 21.02.2006 07:32 )
0(0)Никаких «символ-атрибут в заданной позиции» в EasyWin не существует. Теоретически ты можешь использовать как для EasyWin режима так для консольного режима, технологию, применяемую для EasyWin. EasyWin на лету конвертирует описание консольных панелей из LBR в окна Windows. У тебя уже есть графическая библиотека VCLRSL. Поэтому ты можешь реализовать автоматическое преобразование своих консольных DTB панелей в графические панели VCLRSL. Но ещё лучше не тратить столько сил и времени на занятие искусством. Продукты R-Style планируется переводить на RS-Forms, хотя это займёт не один год. Зачем опять идти кривым путём. Не лучше ли заняться разработкой специализированных ActiveX контролов, которые станут полезным расширением стандартной палитры элементов. DTB выполнил свою роль. Пора поставить точку.
Сергей Кубрин, директор Управления технологического развития R-Style Softlab
>> ОтветитьDTB и его роль в RSL ( Oleg_S 21.02.2006 07:46 )
0(0)Если Сергей Кубрин считает, что DTB выполнил свою роль, то пусть подскажет как средствами RSL заменить не визуальную часть. А это самое мощное, что есть в DTB. Т.е. если отказываться от него, то надо доработать класс TbFile на предмет: фильтрации, построение отношений (один-к-одному, один-ко-многим) и т.д.
Если все это перейдет в стандарт RSL, то думаю все будут только "ЗА". А пока рано списывать DTB!!!
>> ОтветитьНевизуальную часть можно юзать без проблем (-) ( григ 21.02.2006 09:22 )
0(0)Not specified
>> ОтветитьНевизуальную часть можно юзать без проблем ( Oleg_S 21.02.2006 09:29 )
0(0)Это я писал для Кубрина.
Может он подумает над тем, что иногда разработки пользователей надо включать в стандарт?
>> ОтветитьНаврядли они пойдут этим путем, скорее будут свои аналоги делать. (-) ( moleg 21.02.2006 09:45 )
0(0)Not specified
>> ОтветитьПоскольку ( Кубрин Сергей 21.02.2006 11:35 )
0(0)речь шла о визуальной части, мои высказывания относятся только к визуальной части DTB. Все остальные прелести DTB, равно как и другие наработки Григория и ещё многих энтузиастов никуда не денутся. DLM интерефейс будет поддерживаться пока существует RSL. Фактически наработки Григория уже и так являются стандартом в области расширений RSL. О чём тут ещё думать? В своё время Григорий получал от меня предложение о работе в нашей компании. Вероятно, это могло бы вывести его наработки на более высокий уровень. Но ничего страшного, Григорий открыл свои исходные коды. Теперь у всех желающих есть возможность усовершенствовать его библиотеки. Безусловно, у нас есть планы развития наших продуктов и инструментов. Естественно, какие-то вещи, которые были реализованы в DLM пользователей, реализуются нами в ядре. Например, RSCOM сервер rsax перекрывает возможности не только класса Григория TlgActiveX, но так же и нашего стандартного класса ActiveX. Не нужно из этого делать выводы, что мы собираемся переписать всё, что сделано в библиотеках Гигория или кого-либо ещё. Это естественные последствия технологического развития.
В то же время не стоит забывать, что просто есть вещи, которые отжили, или отживают свой срок. В недалёком будущем это будет касаться и TBFile, и объектов Григория для работы с Btrieve файлами. И нет в этом злого умысла, просто не будет этих самых Btrieve файлов, как нет их в версии RS-Bank V6. TBfile в этой системе - это эмуляция Btrive файла. Гораздо лучше воспользоваться возможностями SQL и для фильтраци данных, объединения таблиц и т.п. В принципе, эти же возможносоти доступны и для Pervasive SQL. Из RSL SQL доступен как при помощи нашей библиотеки RSD, так и при помощи Microsoft ADO. В этом свете мне представляется совершенно бесполезным превращать TBFile в этакий микро SQL менеджер. Нравится это или не нравится, но его время, как и время консоли, увы, уходит.
>> ОтветитьRe: Не нужно из этого делать выводы ... ( moleg 21.02.2006 11:45 )
0(0)Не нужно из этого делать выводы, что мы собираемся переписать всё, что сделано в библиотеках Гигория или кого-либо ещё. Это естественные последствия технологического развития.
Это, в принципе, я и имел ввиду.
>> ОтветитьЕсли это рассматривать в подобном ключе, то совершенно согласен (-) ( Oleg_S 21.02.2006 11:47 )
0(0)Not specified
>> ОтветитьТут есть один нюанс (+) ( григ 22.02.2006 07:49 )
0(0)который Сергей, как разработчик инструментария не учитывает. Банковские программисты преимущественно прикладники. Мы пишем модули, программы, которые используются в конкретной банковской задаче. Есть такие проекты, в которых задействованы десятки визуальных форм, вложено очень много человеко-часов. Все работает, только сопровождай, да время от времени вноси небольшие корректировки. И когда предлагается перейти на новый инструмент, но при этом переписать все свои задачи (понятно, что другой интерфес - другие объекты, другие свойства-методы-события, принцип работы), я бы вот сильно подумал, переходить или нет. Как бы получается с одной стороны, если вам что-то не хватает, берите РСЛ и пишите свои задачи, а с другой стороны, новый этап технологического развития, забудьте все, что писали ранее и пользуйтесь либо RS-Forms (шаг вперед), либо lbr (два шага назад). Хотелось бы как-то по возможности, чтобы новое органично сочеталось со старым.
>> ОтветитьЧестно говоря, ( Кубрин Сергей 22.02.2006 11:14 )
0(0)я уже устал объяснять на разных уровнях (и пользователям и нашим разработчикам), что есть вещи несовместимые и никаких нюансов тут нет. Нужны старые прикладные наработки? Пожалуйста. Но они по-старому и будут работать, т.е. в консоли. Даже Btrieve API в SQL версии RS-Bank работает и будет работать. Но не думайте, что это оптимальный вариант работы с СУБД. Это только органичное сочетание. Переходить или не переходить - думать надо всегда. Вероятно, что-то должно перевесить.
>> Ответить
В каталоге примеров Р-Стайла выложил новый вариант dtb.d32 (+) ( григ 22.02.2006 10:57 )
0(0)А также ее исходники.
>> ОтветитьОбновил dtbConsole.mac (+) ( григ 26.02.2006 08:15 )
0(0)26.02.2006 В dtbConsole.mac добавлены функции dtb_GetTrue, dtb_GetString,
dtb_GetStringR, dtb_GetInt, dtb_GetDouble, dtb_GetMoney, dtb_GetDate,
dtb_GetTime, dtb_Menu.
Осталось придумать эмуляцию Progress
>> ОтветитьОбъясните, пожалуйста, ( Кубрин Сергей 26.02.2006 10:43 )
0(0)зачем нужна эмуляция MsgBox, Get..., индикаторов и других стандартных функций?
>> ОтветитьЗатем, чтобы они выдавались в моем консольном окне (+) ( григ 26.02.2006 11:35 )
0(0)И так пользователю приходится работать с двумя окнами, так если при этом еще и между окнами переключаться, чтобы на Getxxx ответить...
>> ОтветитьГригорий, ( Кубрин Сергей 26.02.2006 11:46 )
0(0)если открытие консольного окна выполнять стандартным способом так, как я описал при помощи посылки сообщений, то консольное окно становится вершиной стека, и в него перенаправляется весь вывод. Так сделано специально, чтобы не только MsgBox отображался в консольном окне, но если даже из RSL кода будет вызвана какая-либо встроенная процедура RS-Bank, отображающая пользовательский интерфейс, то и её вывод пойдёт в консоль, пока консольное окно не уёдёт с вершины стека.
>> ОтветитьЯ пробовал, не получилось (+) ( григ 26.02.2006 12:29 )
0(0)я и подумал, что способ с посылкой сообщений работает с более свежей версией терминал-сервер.
Вот кусок кода:
typedef HWND (WINAPI* GetWndType) (void); typedef BOOL (WINAPI* SetFWType) (HWND hWnd); EXP32 void DLMAPI EXP InitExec( void ) { // Открыть консольное окно, если оно не открыто и // активизировать его. if (RslSendMes (1001, NULL) == 1) { GetWndType ptr; SetFWType ptr2; HMODULE hmod = GetModuleHandle ("kernel32.dll"); ptr = (GetWndType)GetProcAddress (hmod, "GetConsoleWindow"); hmod = GetModuleHandle ("user32.dll"); ptr2 = (SetFWType)GetProcAddress (hmod, "SetForegroundWindow"); if (ptr && ptr2) { HWND wnd = ptr (); if (wnd) ptr2 (wnd); } } // Далее код инициализации ....... } EXP32 void DLMAPI EXP DoneExec( void ) { // Код деинициализации .... // Закрыть консольное окно, если оно было откыто RslSendMes (1002, NULL); }
Собственно на RslSendMes (1001, NULL); мы должны получить консольное окно. Остальной код просто делает его активным. Окно не выходит. Терминал версии 5.09.134.0.
Поэтому я по простому сам создаю окно, сам туда вывожу данные, сам читаю клаву и мышку.
>> Ответить
dbt и Pervasive 8.0 ( JVR 08.01.2006 13:37 )
0(0)Добрый вечер!
Скажите, а работа dtb на Pervasive 8.0 тестировалась? Я на днях попробовал - поля типа MONEY (новые деньги PV8) не отображаются - вернее отображается 0 (реально в поле файла значение не нулевое).
Заранее благодарю
>> ОтветитьВиноват ( JVR 08.01.2006 13:44 )
0(0)Извиняюсь, нашел свойство FormatCurrency :)
>> ОтветитьПривет из Екатеринбурга! С удовольствием отправили свой взнос. Присоединяйтесь остальные ( bstr 11.01.2006 10:47 )
0(0)Not specified
>> ОтветитьГригорий, сообщи Инн свой или банка, необходим для перевода ( bstr 11.01.2006 10:52 )
0(0)Not specified
>> ОтветитьПросьбу снимаю, все o'key ( bstr 11.01.2006 10:58 )
0(0)Not specified
>> Ответить
Pervasive 8 ( Oleg_S 13.01.2006 08:02 )
0(0)А у меня нету такого свойства (FormatCurrency)
Ind2 = TlgFile("index2.dbt");
Sum = Ind2.AddField("Sum");
MsgBox(Sum.Value) - действительно дает пусто
DTB.D32 - длина 765952
Что делать?
>> ОтветитьОбновить dtb.d32 ( JVR 13.01.2006 08:44 )
0(0)Pervasive 8 ( Oleg_S 13.01.2006 08:57 )
0(0)Судя по длине у вас более свежая.
Если не трудно, киньте в меня мылом :)
Желательно полностью, включая терминальную часть.
И примерчик с formatcurrency.
>> ОтветитьТУТ ( JVR 13.01.2006 10:47 )
0(0)Вот тут еще более свежая чем у меня
http://support.softlab.ru/Portal/Samples/sample.asp?Typ=7&Id=166
примеры
http://support.softlab.ru/Portal/Samples/sample.asp?Typ=7&Id=168
дока
http://support.softlab.ru/Portal/Samples/sample.asp?Typ=7&Id=167
для того чтобы читались новые форматы денег нужно:
вызвать 1 раз в макросе dtbSetCurrency (true, true)
>> Ответить
раскраска ( g-retic 11.01.2006 11:42 )
0(0)возможно ли в гриде изменить цвет наименований столбцов ?
>> ОтветитьНельзя (-) ( григ 13.01.2006 12:53 )
0(0)Not specified
>> Ответитьможет я чего недопонял ... ( g-retic 18.01.2006 16:56 )
0(0)но в примере hscroll.mac не отрабатывает OnKey.
есть необходимость, чтобы эта и функции OnMouse и т.д. отрабатывали.
я так понял,что если создание формы заключено в
MACRO ()
END;
почему то эти функции не отрабатываются.
>> ОтветитьНадо вынести fr_OnKey за пределы функции FormOnFly (+) ( григ 19.01.2006 07:46 )
0(0)Старый пример, еще тех времен когда для вызова макрофункций использовалась другая длм-ная функция. Из-за необходимости переопределения Key пришлось перейти на другую, которая работает только с глобальными макрофункциями.
>> Ответитьможно ан "мыло" небольшой пример ? ( g-retic 19.01.2006 09:58 )
0(0)что-то не могу понять ... :(
>> Ответить
вроде так... ( bada 13.02.2006 09:25 )
0(0)fld = grid.AddField(db01.GetField("c810_Give")); fld.Color=14; fld.TitleLabel=" Рубли"; fld = grid.AddField(db01.GetField("c840_Give")); fld.Color=10; fld.TitleLabel=" Доллары";
как раз задает именно цвет текста (наименования) столбцов?
>> ОтветитьЭто изменит цвет столбцов, а не наименований стобцов (-) ( григ 13.02.2006 10:23 )
0(0)Not specified
>> Ответить
SetMinMax на дату ( Oleg_S 07.03.2006 09:32 )
0(0)Var DocR = TlgFile("arhdoc.dbt"),
docrDateC = DocR.AddField("Date_Carry"),
docrAccPayer = DocR.AddField("Account_Payer");
DocR.Open(2);
docrAccPayer.SetMinMax("70206810000000000000", "70209810999999999999");
docrDateC.SetMinMax(Date(1,2,2006),Date(28,2,2006));
DocR.ApplyRange();
результат 0
может дату не так надо задавть?
хотя пробовал и так: docrDateC.SetMinMax("01.02.2006", "27.02.2006");
>> ОтветитьСори... DocR.Open(1); (-) ( Oleg_S 07.03.2006 09:49 )
0(0)Not specified
>> ОтветитьМожет дату вообще нельзя задавать? (-) ( Oleg_S 07.03.2006 09:52 )
0(0)Not specified
>> ОтветитьОткрывать надо с 0-ым Open(0) ( PAN 07.03.2006 09:55 )
0(0)Not specified
>> ОтветитьОткрывать надо с 0-ым Open(0) ( Oleg_S 07.03.2006 10:02 )
0(0)Зачем?
в 1-м ключе Date_Carry тоже есть
да, даже если и небыло бы, то отбор должен вестись по значению
>> ОтветитьТут такая особенность: ( григ 07.03.2006 10:53 )
0(0)У тебя по умолчанию поле Date_Carry участвует в отсечке по Range. Т.е. любой выход значения Date_Carry за пределы SetMinMax-а прекращает перебор записей, потому она и отсечка по Range. Если сделать docrDateC.SetMinMax(Date(1,2,2006),Date(28,2,2006),false); - участвует только в фильтре по данным. Отрабатывать будет, но долго. Предпочтительно делать связку с account.dbt. По нему делать SetMinMax по счетам и идти по нему. А связку с документами делать по SetMaster и на документах делать SetMinMax по Date_Carry. Будет и быстро и правильно.
>> ОтветитьТут такая особенность: ( Oleg_S 07.03.2006 11:02 )
0(0)я так понял, что связку счетов и документов делаем по апликейшинкинд и кей
в таком случае Date_Carry в документах тоже будет по значению, поскольку в 6-м ключе нет Date_Carry
это не будет долго?
>> ОтветитьТы что-то путаешь (+) ( григ 07.03.2006 11:16 )
0(0)Связка делается по счетам:
ac=TlgFile("account.dbt"); ac.Open; ac.AddAllFields; ac.GetField("Account").SetMinMax("701","702"); //выбирается все счета по 701 б/с первого порядка ac.ApplyRange; arhdoc=TlgFile("arhdoc.dbt"); arhdoc.Open(1); arhdoc.AddAllFields; arhdoc.GetField("Date_Carry").SetMinMax(db,de); field=arhdoc.GetField("Result_Carry); field.SetValues(23); field.KindValues=false; arhdoc.ApplyRange; arhdoc.SetMaster(ac,"Account","Real_Payer",arhdoc.KeyNum); ac.First; while(not ac.eof) arhdoc.First; while(not arhdoc.eof) ... arhdoc.Next; end; ac.Next; end;
>> ОтветитьТы что-то путаешь (+) ( Oleg_S 07.03.2006 11:27 )
0(0)да, конечно, это я с дуру... конечно по счетам...
просто запарился...
и в ключе дата есть...
спасибо!
>> Ответить
Непонятки с новым DTB под EasyWin-ом ( mcb 21.04.2006 13:50 )
0(0)Поставил новый DTB (dtb.d32 -> Mac, define.def -> DBFile, t_textgp.d32, t_textgp.dlm -> Терминал). Запускаю RS-Bank в EasyWin-e. При отладке макроса должно появиться новое консольное окно? У меня при вызове метода Show объекта TjkForm ничего не происходит, а dtb_CreateConsole возвращает True. Подскажите что я делаю не так?
>> ОтветитьКакой РС-Банк? (+) ( григ 21.04.2006 14:01 )
0(0)Тестировалось на 5.00.090. Под 6-й версией пока не работает.
>> ОтветитьRS-Bank 5.00.090.021 ( mcb 21.04.2006 14:36 )
0(0)Not specified
>> ОтветитьВ первом моем сообщении опечатка (+) ( mcb 21.04.2006 16:14 )
0(0)dtb_CheckConsole возвращает True
>> ОтветитьЗначит опять что-то в РС-Банке поменялось ( григ 24.04.2006 07:44 )
0(0)Если можно, вышли урезанную версию: минимальный набор файлов для запуска "Оболочки РСЛ" под опера 9999 без пароля. Тогда я смогу потестить.
>> ОтветитьОтправил на e-mail (-) ( mcb 25.04.2006 10:56 )
0(0)Not specified
>> ОтветитьПрикрепленный файл 5 МБ не лезет к Вам в ящик (-) ( mcb 25.04.2006 14:47 )
0(0)Not specified
>> ОтветитьПерешли на greg@bank-hlynov.kirov.ru (-) ( григ 25.04.2006 15:12 )
0(0)Not specified
>> ОтветитьДошла почта? (-) ( mcb 28.04.2006 09:11 )
0(0)Not specified
>> ОтветитьДошла. В эти выходные гляну, на работе некогда, а вечером сил уже нет (-) ( григ 28.04.2006 09:18 )
0(0)Not specified
>> ОтветитьВыслал рабочий вариант. Жду ответа - работает или нет? (-) ( григ 03.05.2006 08:44 )
3(1)Not specified
>> ОтветитьРезультаты тестирования (+) ( mcb 03.05.2006 09:14 )
0(0)Я вчера Вам отсылал на greg@bank-hlynov.kirov.ru результаты тестирования, сейчас повторил на greg@ezmail.ru. Или речь идет о еще более новой версии?
>> ОтветитьПолучил. Ответил. (-) ( григ 03.05.2006 12:24 )
0(0)Not specified
>> Ответитьа можно по подробней? ( =Lex= 19.06.2006 15:09 )
0(0)у меня те же симптомы:
Поставил новый DTB (dtb.d32 -> Mac, define.def -> DBFile, t_textgp.d32, t_textgp.dlm -> Терминал). Запускаю RS-Bank в EasyWin-e. При отладке макроса должно появиться новое консольное окно? У меня при вызове метода Show объекта TjkForm ничего не происходит, а dtb_CheckConsole возвращает True. Подскажите что я делаю не так?
хотелось бы знать к какому решению вы пришли?
тестирую на RS-Bank 5.00.090.021 и RS-Bank 5.10.105.32 (Loans)
>> ОтветитьПроблема была в том, что (+) ( григ 19.06.2006 15:37 )
0(0)Помимо новой dtb в MAC в OBJ лежала старая dtb. Если 3-х звенка, то плюсом надо к term.exe бросить новый t_textgp.d32. Если 2-х звенка, то в свойствах окна надо сделать фонт Lucide Console и установить это для всех окон.
>> Ответитьв 2-х звенке все заработало ( =Lex= 20.06.2006 09:55 )
0(0)но нужна 3-х звенка, а там запускаю выпонение тестового макроса
import dtb; var Form:TjkForm; Form = TjkForm("Form"); Form.Border = 2; Form.Height = 14; Form.Width = 29; Form.X = 25; Form.Y = 5; Form.Show;
и в строке статуса вижу "выполнение test.mac..."
я так понял что должно открыться новое окно, в котором уже и появится моя форма. Но ничего не открывается.
нигде никаких хвостов от старой dtb не осталось, rs-bank поставил с нуля.
кстати в readme говорится
1. Поместить файлы T_TEXTGP.D32,T_TEXTGA.D32,T_TEXTGP.DLM на рабочую станцию
в каталог C:\TERMINAL.
но в sample166.zip файла T_TEXTGA.D32 нету
>> ОтветитьДолжно работать (+) ( григ 20.06.2006 10:37 )
0(0)t_textgp.d32 должен лежать вместе с term.exe. Без разницы какая директория. t_textga.d32 более не используется. Все в t_textgp.d32. Скорее всего терминальная длм-ка у тебя старая.
>> ОтветитьСодержимое папки Term ( =Lex= 20.06.2006 12:12 )
0(0)06.03.2006 18:12 155 652 adm.exe
06.03.2006 19:12 655 360 ewextt.d32
06.03.2006 18:12 593 924 term.exe
20.06.2006 13:15 947 term.ini
20.06.2006 11:22 174 term0001.key
06.03.2006 18:12 161 566 Term16.exe
06.03.2006 18:12 593 924 termw.exe
18.02.2006 06:42 45 056 t_textgp.d32
10.02.2000 15:29 3 170 T_TEXTGP1.DLM
вроде все нормально
но под EasyWin-ом не работает
такое ощущение что он создает консоль но ее не видно
>> ОтветитьА версия РС-Банка какая? (+) ( григ 20.06.2006 14:33 )
0(0)Мне тогда нужен твой рс-банк в минимальной рабочей конфигурации (с Оболочкой РСЛ и пустым паролем для 9999) плюс инсталляшку СП. Тогда я бы посмотрел в реале. Только вот с четверга в отпуске - могу не успеть посмотреть до отъезда.
Еще могу посоветовать поспрашивать народ в этом Форуме - у кого работает в твоей версии.
>> Ответить
Как перехватить событие в Grid? ( Oleg_S 05.05.2006 09:58 )
0(0)Есть форма, на ней Grid с несколькими колонками.
Надо при изменении значения в одной колонке, произвести подсчет и вывести значение в той же строке другой колонки.
Как?
Заранее спасибо.
>> ОтветитьХм-м. Вообще-то редактируемый грид - (+) ( григ 05.05.2006 12:07 )
0(0)Это самый простой грид и вешать на него такие крутости не рекомендую. Лучше всего форма+нередактируемый грид + форма-карточка, при выходе из которой грид обновляется.
Значение поля файла обновится только при переходе к другой записи. Горизонтальный скроллинг-редактирование грида к обновление полей файла не приведет.
Но если очень надо, то надо ловить событие form_OnEditExit(Sender) - выход из поля, либо клавишу Enter - условный конец редактирования и делать
field=Sender.Owner.Field(Sender.Owner.iCol);
field.SourceField.Set(field.Value);
>> Ответить
Список с использованием объекта ( Oleg_S 06.05.2006 08:15 )
0(0)Есть вот такой объект:
import CommonInter;
var clnts = TClientList;
var stat, i;
if (not clnts.MayUpdate)
clnts.MayUpdate = true;
end;
clnts.ClearFilterKey();
clnts.SetFilter_CodClient(0,9999999999);
clnts.SetFilter(false);
stat = clnts.first();
i = 0;
while(stat)
i = i+1;
printLn(clnts.CurRec.rec.Name1," ",clnts.CurRec.rec.Name2," ",clnts.CurRec.rec.Name3);
stat = clnts.next();
end;
Можно ли этот список совместить с grid?
Или выход один - скопировать все в промежуточный файл?
Заранее спасибо
>> ОтветитьМожно без файла (+) ( григ 06.05.2006 09:52 )
0(0)Грид может работать на основе списка TlgList, данные хранятся в TlgNode.Object. Для каждого столбца нужен свой TlgList. Их Size должны быть одинаковы.
Т.е. нужно перекачать данные из твоего списка в TlgList и далее
EditG=grid.Add(List0);
EditG=grid.Add(List1);
...
>> ОтветитьА на какие объемы я могу расчитывать? ( Oleg_S 06.05.2006 10:02 )
0(0)У нас сотни тысяч клиентов, соответственно надо столько записей в TlgList
Чем ограничивается список? Виртуальной памятью сервера?
>> ОтветитьСамо-собой память кушается (+) ( григ 06.05.2006 12:28 )
0(0)Если такие объемы - надо dbt-файл. Если бы у тебя был ADO-шный рекордсет с выборокой - можно было бы его пихнуть.
Вообще - по идее твой TClientList - это оболочка для client.dbt. Кто мешает юзать файл напрямую? В данном же случае сервис TClientList тебе совсем не нужен - значит долой прослойку.
>> ОтветитьЭта прослойка из Retail... ( Oleg_S 06.05.2006 12:41 )
0(0)Это из Retail, там вся информация разбросана по разным файлам.
Запасной вариант, разобраться откуда все берется и объединить их по setmaster
Скорее всего так и придется
Попутный вопрос:
Что то у меня не получается поиск в TlgFile
Per = TlgFile("persn.dbt", "bank.def");
perID = Per.AddField("PersonID");
Per.Open(0); // ключ по PersonID
perID.Set(3213);
Per.GetEQ - не работает
>> ОтветитьДолжно работать (+) ( григ 06.05.2006 13:58 )
0(0)Ты попробуй все то же самое с TBFile-ом. Должно работать одинаково.
И еще проверь результат open - открылся файл или нет. Можешь выслать мне persn.dbt и bank.def - я гляну.
>> ОтветитьC TbFile не получится ( Oleg_S 06.05.2006 14:04 )
0(0)Я предлагал TBFile в качестве теста работы GetEQ (-) ( григ 10.05.2006 07:55 )
0(0)Not specified
>> ОтветитьТест GetEQ ( Oleg_S 10.05.2006 09:47 )
0(0)Если в плане того, что надо убедиться есть ли такая запись...
то я вышел из этого положения, используя вместо этого SetMinMax, все замечательно работает
>> Ответить
Кто-нибудь проверял DTB в ReTail 5.10.104.18? ( Oleg_S 06.05.2006 08:38 )
0(0)У меня не работает...
>> Ответитьна .21 работает ( Ltybc 06.05.2006 08:59 )
0(0)не в win интерфейсе, конечно
>> ОтветитьПоменял версию... заработало! (-) ( Oleg_S 06.05.2006 09:13 )
0(0)Not specified
>> Ответить
Некорректная работа dtb в 2-х звенке, консольный режим. ( Iv 25.05.2006 11:01 )
0(0)dtb использую в БОУРМ 5.2. В 3-х звенке вроде все хорошо работает, а в 2-х звенке при использовании визуальных форм выдается полная ерунда, как будто с кодировкой что-то не так. Например, вот так выглядит статусная строка
ESC Вeaод ENTER Вe?оa F4 ?о?a? F5 Сc?aа F7 Соaaaдн
>> ОтветитьНадо выставить у консольного окна шрифт Lucida Console и запомнить для всех окон (-) ( григ 25.05.2006 12:08 )
0(0)Not specified
>> Ответить
Опять SetMinMax не отрабатывает... ( Oleg_S 31.07.2006 10:52 )
0(0)RS-Bank 5.00.090.33
dtbSetCurrency (true, true);
SearchM = $0;
rSum = rDoc.AddField("Sum"),
If (GetMoney(SearchM, "Введите сумму документа."))
rSum.SetMinMax(SearchM, SearchM);
End;
>> ОтветитьА переработка под 5.5 планируется? ( Ltybc 24.02.2009 15:44 )
0(0)А то не хотелось бы отказываться от привычного инструмента...
>> ОтветитьДа, в рамках типа NUMERIC, под консоль (-) ( григ 24.02.2009 15:47 )
0(0)Not specified
>> ОтветитьЗдорово. ( Ltybc 24.02.2009 15:51 )
0(0)Будем ждать, а то 1 мая все ближе
>> ОтветитьМожет заодно и виндовый интерфейс сделать в визуальной части? ( Oleg_S 24.02.2009 15:52 )
0(0)Not specified
>> ОтветитьВиндовый интерфейс есть в vclrsl.d32, а dtb.d32 - это чистая консоль (-) ( григ 24.02.2009 16:06 )
0(0)Not specified
>> ОтветитьЭто я помню. Думал с 2005 года что-нибудь изменилось... ( Oleg_S 24.02.2009 16:09 )
0(0)Not specified
>> ОтветитьRS-Forms к сожалению приспособлен только для вывода отчетов... ( Oleg_S 24.02.2009 16:11 )
0(0)Not specified
>> Ответить
А когда ждать? ( bada 18.03.2009 15:17 )
0(0)Счас с столкнулся типом NUMERIC, сижу думаю что делать :(
>> ОтветитьМожно пробовать dtb.d32 с поддержкой Numeric(+) ( григ 27.03.2009 10:26 )
0(0)Огромная благодарность Кубрину Сергею (R-Style) за подробные консультации, без которых я бы не одолел этот новый тип данных.
http://support.softlab.ru/portal/Samples/sample.asp?Typ=7&Id=319
>> ОтветитьСпасибо, Григорий, работает ( sokols 30.03.2009 09:49 )
0(0)Not specified
>> Ответить
при TlgFile.Insert() или grid.InsertRec() происходит добавление новой строки, но и затирание текущей ( Paul 18.08.2009 14:39 )
0(0)Добрый день, коллеги! Подскажите пожалуйста в следующей проблеме:
код макроса:
//----------
fileSymbCash = TlgFile("symbcash.dbt","bank.def");
res = fileSymbCash.Open(0, 0,"symbcash.dbt"); // (key, mode, path) mode = 0 Ї®§ў®«пҐв § ЇЁблў вм
if(not res) MsgBox("ЌҐ ¬®Јг ®вЄалвм д ©«!","symbcash.dbt"); exit(1); end;
fileSymbCash.AddAllFields();
fileSymbCash_Kind = fileSymbCash.GetField("Kind");
fileSymbCash_iApplicationKind = fileSymbCash.GetField("iApplicationKind");
fileSymbCash_ApplicationKey = fileSymbCash.GetField("ApplicationKey");
fileSymbCash_Symbol = fileSymbCash.GetField("Symbol");
fileSymbCash_Sum = fileSymbCash.GetField("Sum");
fileSymbCash.GetField("iApplicationKind").SetMinMax(AppKey, AppKey);
fileSymbCash.GetField("ApplicationKey").SetMinMax(AppKind, AppKind);
fileSymbCash.ApplyRange();
fileSymbCash.First();
fileSymbCash.Connect = true;
//---------------------------------------------------------
SymbCashForm = TjkForm("SymbCashForm");
gridSF = SymbCashForm.AddGrid(5);
gridSF.Name = "gridSF";
gridSF.Border = 1;
gridSF.Row = 5;
gridSF.titles = true;
gridSF.Width = 40;
gridSF.X = 2;
gridSF.Y = 2;
gridSF_column1 = gridSF.AddField(fileSymbCash_Symbol);
gridSF_column1.TitleLabel = "Symbol";
gridSF_column1.Width = 6;
gridSF_column2 = gridSF.AddField(fileSymbCash_Sum);
gridSF_column2.TitleLabel = "Summa";
gridSF_column2.Width = 20;
MACRO SymbCashForm_OnKey(obj, key)
if(Key == VK_ENTER)
elif(Key == VK_F9)
gridSF.InsertRec();
//fileSymbCash.Insert();
end;
gridSF.Refresh();
END;
//----------
>> Ответитьпродолжение ... ( Paul 18.08.2009 14:42 )
0(0)При выполнении TlgFile.Insert() или grid.InsertRec() происходит добавление новой строки в гриде и в таблице, но и затирается текущая строка на момент выполнения процедуры. Затирается она значениями новой. Вот такая вот ерунда!
>> ОтветитьУ TlgFile, если он используется визуальными объектами свойство Connect=true (+) ( григ 18.08.2009 14:49 )
0(0)При этом любой Set любого поля вызывает Update. Надо делать так:
connect=id.Connect; id.Connect=false;
field1.Set(...)
...
fieldN.Set(...)
id.Insert;
id.Connect=connect;
//если это грид, то
Grid.Refresh;
Это в доке где-то есть...
>> ОтветитьСпасибо огромное!!! ( Paul 18.08.2009 15:15 )
0(0)Not specified
>> Ответить
DTB и RS-Bank 5.5 !!!!!!!!!!!!!!!!!! ( Oleg_S 20.01.2010 13:34 )
0(0)Кто-нибудь тестировал?
>> ОтветитьРаботает ( sokols 20.01.2010 13:53 )
0(0)Not specified
>> Ответить
Связка файлов по iApplicationKind/ApplicationKey ( alexeaa207 18.02.2011 18:21 )
0(0)Есть ли возможность при помощи dtb построить grid в колонках которого отображались бы поля документов из разных файлов. Сами документы в файлах связаны один к одному по iApplicationKind/ApplicationKey. При помощи SetMinMax и SetMaster удается добиться отображения только для определенного iAppKind.
Может есть какой-то еще хитрый способ?
>> ОтветитьПоявилась достойная замена DTB для скролинга файлов. ( Oleg_S 21.02.2011 05:53 )
5(1)//-*--------------------------------------------------------------------------*-
//
// File Name : btrdata.mac
//
// Copyright (c) 1991 - 2009 by R-Style Softlab.
// All Rights Reserved.
//
//-*--------------------------------------------------------------------------*-
// June 16,2009 Sergei Kubrin (K78) - Create file
//-*--------------------------------------------------------------------------*-
>> Ответитьа где его брать? ( yukson 13.05.2011 09:49 )
0(0)Not specified
>> Ответить
Грид можно строить на основе TlgList-ов (+) ( григ 21.02.2011 07:42 )
0(0)при этом можно использовать любые типы данных. Например, можно сделать грид отображающий имена и значения полей файла: один столбик имена, второй значения. Можно посмотреть каталог примеров "Оперлог, проводки, транзакции" - там такой грид используется.
>> ОтветитьДелаешь Grid на основе TlgList-ов и (+) ( григ 16.05.2011 07:39 )
0(0)заполняешь их как тебе надо. Минус в том, что список статический объект.
>> Ответить
Старый RSL + dtb + RS-BANK 5.5 ( alexeaa207 10.06.2011 10:28 )
0(0)Имеется старая сборка Retail-а(5.1.093.31) и RS-Bank 5.5. Из Retail-а запускается макрос, который лезет в некоторые файлы RS-BANK-а (в частности restdate). При использовании ключей, не включающих сумму (0,1,4) наложенные SetMinMAx + ApplyRange отрабатывают нормально, для ключей же 2,3 при выполнении First программа зависает. Подозреваю, что дело в NUMERIC. Как конкретно нужно работать с этими полями, используя dtb32?
Для RS-BANK 5.0 все работало с использованием dtbSetCurrency(true).
Пробовал вариант с dtbSetCurrency(true,true) - не помогло.
>> ОтветитьПопробуй так: (+) ( григ 14.06.2011 07:39 )
0(0)Сделай тестовый макрос.dtbSetCurrency - пока не используй, создай restdate - поработай с ним.
>> ОтветитьПробовал тестовым макросом поработать с postdoc ( alexeaa207 14.06.2011 20:03 )
0(0)Сорри за паузы в ответах - переходим на 5.5
при работе с postdoc в любом случае поле сумма в отладчике показывается как undefined.
Мне кажется, что версия RSL имеет значение (у нас rslver.exe показывает 2.01.0110.0, rsl32 кажет 7.11.095.0), но вот вопрос - можно ли к старой сборке "подлить" какие-то dll-ки, чтобы обновить только RSL, или нужно накатываться на более новую сборку целиком?
>> ОтветитьДолжно и так работать (+) ( григ 15.06.2011 07:46 )
0(0)1. Убедись, что dtb.d32 у тебя свежая и в доке у нее описана поддержка V_NUMERIC
2. В RS 5.5 попробуй тестовым макросом поработать через dtb с postdoc.dbt - должно работать, у других работает нормально. При этом никакие dtbSetCurrecny не нужны длм-ка сама определяет -поддерживает ли РСЛ V_NUMERIC и какой тип поля в базе.
3. Тот же макрос пробуй в Retail-е.
Конечно, что касается стандартного РСЛ, то старый РСЛ не будет понимать новый тип V_NUMERIC однозначно.
Насчет подлить длл-ки - это нужно пообщаться с теми, у кого есть 5.5 или с поддержкой.
>> Ответить