Global 5.0

Изменения:

1 : Изменить поведение клавиши Home в редакторе скрипта

Изменения в поведении клавиш: Home - позиционирование курсора на начало строки End - позиционирование курсора на конец строки Alt + Home - позиционирование курсора перед первым в строке литералом Alt + End - позиционирование курсора за последним в строке литералом Alt + > - оставить маркер в коде/добавить маркер (маркеры формируют собой стек) Alt + < - вернуться к маркеру

2 : 4.30+ Отключить компиляцию операций при подготовке дискового архива.

Отключена предкомпиляция операций выброк перед сохранением в дисковый кеш. Такие изменения существенно ускоряют первичные открытия выборок, и незначительно замедляют их последующие открытия.

3 : 4.31+ Исправить стиль приложения GlobalClassic

Внесены следующие изменения и исправления в стиль приложения GlobalClassic:

  • вид кнопок раскрытия/свертки узлов двевовидных списков и списков с группировкой изменен на аналогичный в предыдущих версиях клиента.
  • отключена тень заголовков форм.
  • перерисована кнопка открытия карточки с 3-мя точками.
  • установлен минимально допустимый размер ползунка полосы прокрутки (8 пикселей).
  • обеспечено отображение кнопок автофильтра и настройки видимости колонок в списках.
  • реализовано корректное отображение заголовков групп объединений в карточке.
  • изменен цвет фона полей, доступных только для чтения, с белого на серый.
  • изменен внешний вид закладок.

Перечисленные изменения обеспечивают наибольшую приближенность внешнего вида темы GlobalClassic и вида приложения ранних версий при классическом стиле.

4 : Формат области итогов не применяется при смене типа итогов

  • Логика работы свойств атрибута выборки “Формат области (промежуточных )итогов” и “Вывод в области (промежуточных )итогов” отныне разделены, т.е. они не зависят друг от друга непосредственно.

    Формат итогов рассчитывается независимо от причин востребованности: в первую очередь применяется “Формат области итогов”, если он не задан если тип редактора агригируемого атрибута “редактор в строке” - в качестве формата отображения используется маска ввода, иначе если редактор денежный - применится денежный формат отображения если не один из вышеописанных случаев не подходит - используется формат отображения по умолчанию: “0.00”.

    Для типа итогов “Количество” формат неизменен. В формате для всех типов итогов кроме суммы присутствует соркащённое его наименование. Ранее, если тип и формат задавались свойствами атрибута, то сокращённое наименование не отображалось.

  • Если “Формат области промежуточных итогов” не задан, то при необходимости вместо него берётся “Формат области итогов”.

  • Сохраняются пользовательские переопределения типа итогов.

    К примеру: свойство “Вывод в области итогов” определено как Минимум, но пользователь в интерфейсе укажет тип Максимум - при следующем открытии выборки будет Максимум.

5 : Selection.Controller.Hints.RecordId не понимает id с типом строка

Тип возвращаемого результата метода Selection.Controller.Hints.RecordId изменён с Int64 на String как он везде и используется, как и тип соответствующих входящих параметров в методах Selection.Controller.Hints

6 : 4.31.6 Динамические фреймы, по умолчанию считать, что выравнивание главного фрейма - по центру.

Изменено значение по умолчанию свойства “положение мастер-фрейма” в случае, если детальный фрейм отсутствует. Ранее это значение было “по левому краю”, теперь - “растянуть по всей области”.

7 : Фортуна/Время вывода на печать

Уменьшено время построения Word-отчетов за счет использования временных файлов вместо буфера обмена. Новая возможность доступна при использовании Office версии от 2007.

Реализованная заявка:

1 : Импорт Excel через SYLK не воспринимает русские символы

Реализована поддержка русских букв при импорте Excel через Sylk.

2 : Реализовать полноценный клавиатурный режим для редактора с мультивыбором

Реализован клавиатурный режим работы с редактором с мультивыбором. Теперь клавишами “влево” и “вправо” можно перемещаться по тегам, а клавишами “Delete” и “BackSpace” - удалять активный тег.

3 : Ошибка при сохранении данных в формат .xlsx на кленте

Реализован экспорт списка в XLSX-документ, поддерживающий выгрузку до 1 млн. строк и 16 тыс. столбцов. Для использования этой возможности добавлен пункт “Документ Excel без форматирования (*.xlsx)” в контекстное меню “сохранить как”. Особенности и характеристики реализованного экспорта данных перечислены в резолюции задачи 30847 “Сохранение данных списка в XLSX без предварительной прогрузки данных”.

Реализована возможность формирования XLSX и XLSM отчетов, содержищих до 1 млн. строк и 16 тыс. столбцов на каждой закладке. Ранние ограничения допускали не более 1 млн ячеек.

4 : 4.30.27 selection: Cannot perform this operation on a closed dataset

Для облегчения выявления причин ошибки в описание ошибки “selection: Cannot perform this operation on a closed dataset” добавлено имя выборки в которой произошла ошибка.

5 : В окне дебага выводить системные имена выборки и отображения через точку, а не в отдельных полях

Теперь в окне дебагера системные имена выборки и отображения выводятся через точку, а не в отдельных полях

6 : Редактор скрипта. Автодополнение. Выводить операции выборки в списке.

Для выборок конкретизированного типа, реализованных ранее, реализована возможность вводить операции из “подсказчика кода”(Автодополнения, Ctrl+Space). Синтаксис следующий: TSel_FooSelectionClass(Selection).Operations.

Для не конкретизированного типа выборки этот способ работает и в значительно более ранних версиях клиента: Selection.Operations.FooOperationname

Пример использования
<pascal>
  uses SEL_FOO_Selection;
  a := Selection.Master;
  TSel_Foo_Selection(a).Operations.DoSomething;
</pascal>

7 : Сделать возможность расположения табов в несколько рядов при заполнении панели табов

Реализована возможность расположения закладок окон в несколько рядов. В главное меню приложения, в элементы закладки “Вид”, добавлен соответствующий пункт “Многострочная панель закладок”.

Для возможности динамического изменения вида панелей закладок реализовано скриптовое свойство Application.MultilineWindowTabs.

8 : Поддержка очень больших кнопок на тулбаре

Обеспечена возможность использования кнопок панелей инструментов произвольного размера. Размер кнопок определяется значениями, указанными в используемой коллекции изображений.

Для переопределения стандартных коллекций, соответствующих “большому” и “маленькому” размеру кнопок (см. св-во выборки “Размер кнопок панели управления”), восстановлена работоспособность свойств группы “Настройки пиктограмм тулбара”. Для корректной работы выборки необходимо, чтобы изображения коллекций иконок активных, не активных и выделенных операций имели одинаковые размеры.

Для возможности задания размера шрифта заголовков кнопок добавлено свойство выборки “Размер шрифта надписей (ToolBar)” на закладке “Заголовок и панели фрейма”. Для использования свойства необходим релиз BTK 1.4.109.0.

Восстановлена корректная работа свойства “Автоподбор ширины кнопок (ToolBar)”, отключение которого позволяет установить одинаковый размер кнопок.

9 : Перенос слов на кнопках панели инструментов

В 31+ версиях реализован перенос слов на кнопках панелей инструментов, аналогичный имеющемуся в предыдущией версии клиентского приложения.

10 : Редактор скрипта/скрпт. Реализовать возможность использовать явное приведение типов, чтобы список автодополнения понимал класс приведения.

Пример:

a := Selection;
TbtkScriptSelectionObject(a).|

Комбинация клавиш Ctrl+Space в редакторе скрипта в этом случае выдаст список свойств и методов класса выборки.

Attention

Выполнение скрипта с использованием приведения к типу в некоторых случаях может быть не применимо для более ранних версий клиента. Использование допустимо начиная с версии 4.31 соответствующего номера сборки (билда).

11 : Редактор скрипта. Автодополнение. Реализовать поиск типа по синтаксическому дереву скриптера.

Реализована возможность списка автодополнения в редакторе скриптов учитывать использование строгой типизации: указание типа локальной переменной, типа глобальной переменной и входщих параметров.

<pascal>
    var
      a: TbtkScheduler; //Глобальная переменная.

    procedure FooRoutine(a, b, c: TbtkScriptSelectionObject); //входящие параметры
    var
      z: TSomeClasstype; //локальная переменная
    begin
    ...
    end;

  begin
  ...
  end.
</pascal>

12 : Числа сохраняются в эксель как текст

Реализован экспорт древовидных списков в документы Excel (*.xlsx). Новая возможность доступна в контакстном меню древовидных списков “Сохранить как” - “Документ Excel (*.xlsx) без форматирования”. Его отличительной чертой является автоматическая установка формата ячеек Excel, соответствующего типу данных атрибутов списка. Например, столбцы с типом редактора “Денежный” сохраняются в Excel как числа с 2-мя знаками после запятой. Числовые столбцы сохраняются как числа со стандартным представлением Excel. Это дает возможность использовать значения экспортированных ячеек в формулах Excel. Реализованный экспорт без форматирования поддерживает заголовки столбцов, но не работает с бандами.

13 : Сделать настройку системы, позволяющую управлять интервалом опроса базы на наличие блокировок в момент выполнения sql блока.

Изменено поведение проверки блокировки сессии (SQL-операция, SQL-блок Pascal-операции, выполнение GST): ранее существовавшая настройка задержки первой проверки блокировки используется и как значение интервала между проверками. Изменено наименование константы хранящей вышеописанную настройку, с LockCheckInteral на LocksCheckInterval - в настоящей версии чтение производится обоих значений, приоритетна новая константа. Использовать LockCheckInteral не рекомендуется, т.к. в последствии она перестанет использоваться. Добавлено свойство операции выборки (LocksCheckInterval “Интервал проверки блокировки sql-сессии”) - возможность перекрыть общее значение настройки для операции индивидуально -1 - использовать умолчательное значение, значение настроенное для БД в целом (константа LocksCheckInterval, btk_clientgate.GetConstantValue)

0 - не использовать проверку блокировки
1 - 2^31 - интервал между запросами проверки блокировки сессии выполняющей запрос данных, в миллисекундах.

Свойство LocksCheckInterval выйдет в BTK 1.4.109.0

14 : Реализовать возможность использовать конкретизированный скриптовый класс выборки: вместо TbtkScriptSelectionObject, а ля TSel_BTK_FOOSELECTION

Чтобы определить конкретизированный класс выборки - следует определить подключаемый модуль, имя модуля и есть имя выборки: uses Sel_BTK_Enviroment; - например. После чего в скрипте будет доступен класс с тем же именем, что определённый модуль с префиксом “T”: TSel_Btk_Enviroment; также решена проблема с методами возврашающими интерфейс вместо объекта, когда было нельзя обратиться к свойствам/методам встроку, GetFooObject.DoSomething, но можно было через переменную a := GetFooObject; a.DoSomething; (за счёт потери типизации).

15 : Заменить вызов метода GetClientLockSession на аналог с другими параметрами

При открытии сессия получает свой параметр - уникальный идентификатор сессии в рамках кластера ("userenv("sessionid");") который в последствии используется при вызове нового метода проверки сессии на блокировку. Используется новый метод проверки блокировки сесси - GetClientLockSessionAUD. Елси при его использовании возникает ошибка (к примеру метод не определён) - проверка переключается на метод использовавшийся ранее, GetClientLockSession.

16 : Реализовать межпроцесcный DragAndDrop

Реализована возможность получать файлы перетаскиваемые из других приложений.

Возможность принимать файлы доступна во фреймах TbtkLookupGridFrame, TbtkLookupTreeFrame и их наследниках, при этом в качестве цели для бросания выступают непосредственно грид и дерево, а не фреймы вцелом. В свойствах фреймов добавлен раздел “Параметры межпроцессорного Drag-and-Drop для файлов”, со следующими свойствами:

“Разрешить бросание”, - позволяет включать и отключать обработку бросаемых файлов. “Операция вызываемая на бросание”, - позволяет указать имя операции, которая будет обрабатывать событие бросания. Для включения возможности приёма бросаемых файлов, необходимо чтобы оба свойства были заполнены. У операции-обработчика доступны следующие аргументы:

  • Args.FileNames, - массив имен файлов;

  • Args.DropEffect, - in/out параметр определяющий выполняемые/выполненные действия при бросании. Может принимать следующие значения:

    • deCopy, - копирование файлов;
    • deLink, - создание ссылок на файлы;
    • deMove, - перемещение файлов;
    • deNone, -отсутствие какого-либо действия;

    В зависимости от типа файлов и активных клавиатурных модификаторов (клавиши shift, ctrl и alt) входное значение флага Args.DropEffect может меняться. Для корректного взаимодействия с приложением из которого были брошены файлы, после выполнения операций над файлами необходимо установить соответствующее произведённым действиям значение свойства Args.DropEffect.

17 : Режим приложения с принудительной активностью и фокусировкой

Реализованы новые скриптовые методы перехвата нажатия клавиш клавиатуры, для всго приложения:

procedure HookKeyboardKeyDownEvent(Operation : TbtkScriptDataSetOperationObject) - Установить перехватчик. В параметре Operation необходимо указать операцию обратного вызова.

Данная операция будет вызываться при каждом нажатии клавиши. Перхват можно отключить с помощью procedure UnHookKeyboardKeyDownEvent(), либо будет снять автоматически при выгрузке метаданных. В приложении можно одновременно установить не более одного перехватчика на нажатие клавиш. При попытке установить перехватчик при уже установленном будет возбуждено исключение.

Операция-обработчик вызывается с аргументами в которых передается информация о нажатой клавише:

VirtualKey - код виртуальной клавиши Char - виртуальный код преобразованный в символ клавиатуры(Сканкод) ShiftState - состояние зажатых модификаторов типа TShiftState. Handled - флаг в который можно вернуть результат обработки нажатия. По умолчанию False - это значит, что нажатие клавиши будет передано следующим обработчикам. True - нажатие обработано и другим обработчикам передавать обработку нажатия не надо. В этом случае элементы управления никак не узнают о срабатывании клавиши.

Пример операции-обработчика:
<PASCAL args>
  args.Validate(['VirtualKey','Char','ShiftState','Handled']);
  str := Format('VK: %s; Char: %s; CTRL: %s; SHIFT: %s;ALT:%s;',
    [IntToStr(args.VirtualKey), args.Char,
       IntToStr(GetShiftState(ssCTRL)),
       IntToStr(GetShiftState(ssSHIFT)),
       IntToStr(GetShiftState(ssALT))
       ]);
  SetVar('Caption', str);
  args.Handled := true;
</PASCAL>

procedure UnHookKeyboardKeyDownEvent - Снять перехватчик.

Перехватчик ловит нажатия на всех формах и контролах в рамках одного приложения.

Пример регистрации перехватчика:
<PASCAL>
  Application.HookKeyboardKeyDownEvent(Selection.OperationByName('HookProc'));
</PASCAL>
Дерегистрация:
<PASCAL>
  Application.UnHookKeyboardKeyDownEvent;
</PASCAL>

18 : Сделать автоматическое увеличение окна сообщения о серверной ошибке

Реализован автоматический подбор размера окна об ошибке по его содержимому.

19 : 31+ В дебагере на закладке операции скрыть фильтр по системного имени, но показать строку автофильтра.

Добавлена строка автофильтра в окне дебагера и скрыт фильтр по системному имени.

20 : Создать скин для 31 версии наиболее повторяющий стандарптную раскраску предыдущих версий

Реализована тема интерфейса GlobalClassic, наиболее точно повторяющая стиль ранних версий Global.

21 : Поддержка управлением стилем для надписи около редактора

Реализована поддержка свойства атрибута выборки “Стиль раскраски заголовка” для заголовков элементов карточных фреймов и редактора типа “кнопка”. Восстановлено применение свойства “зачеркнутый” при редактировании шрифтов элементов ввода.

22 : Реализовать поддержку открытия отчетов FastReport в не блокирующем режиме

Реализована поддержка открытия отчетов FastReport 4й версии в не блокирующем режиме.

Для того чтоб отчет открылся в немодальном окне необходимо передать fcfMDI в параметре StyleFlag функции CreateReportEx.

Есть ограничение, отчеты используют датасет выборки и не могут без нее существовать. По этому при закрытии выборки, при наличие использующих её открытых отчетов, будет предложено закрыть их вместе с выборкой.

23 : Деревянный грид: перемещение курсора после удаления объекта

Реализовано восстановление сфокусированной записи после обновления древовидного списка.

Если запись сфокусированная до бновления пропала, то пытаемся сфокусироваться на записях в следующем порядке:

Запись выше сфокусированной Запись ниже сфокусированной Корень сфокусированной записи Наиболее дальний корневой узел сфокусированной записи Первый узел в древовидном списке

24 : Реализация возможности отправки кода ZPL2 для печати этикеток на принтеры фирмы Zebra

Реализавана возможность отправки кода ZPL2 для печати этикеток на принтеры фирмы Zebra.

Для работы с принтером в скриптор добавлено пространство имен Printer, которое содержит следующие функции:

function SelectPrinter(var PrinterName: String; var CopiesCount: Integer): Boolean; - Позволяет выбрать принтер для печати, для этого она выводит на экран стандартный диалог выбора принтера. В первом параметре APrinterName она возвращает имя принтера, а во втором ACopiesCount указанное количество копий. Если в диалоге пользователь нажал OK, то результатом функции будет True в противном случае False.

function Escape(in PrinterName: String; in EscapeCode: String): Boolean;- Оправляет последовательность кодов, указанную в параметре EscapeCode, непосредственно драйверу принтера PrinterName минуя GDI. Предназначена, например, для работы с принтерами фирмы Zebra Technologies поддерживающими язык ZPL или ZPL II. Возвращает True в случае успеха, в противном случае False.

Функцию Printer.SelectPrinter необходимо использовать взамен SelectPrinter, которая объявлена устаревшей.

Документация: Работа с принтером

Справочная статья в BDN: bdn://Printer

25 : При попытке закрыть документ, не сохраняя

Ошибка возникает из-за того что используется старая версия btkfReport4.dll Необходимо чтоб версии Global.exe и btkfReport4.dll совпадали.

26 : Реализация события на изменение выделения в гриде

Был доработан вызов паскаль операции SelectedRecordsChanged. Раньше операция вызывалась по отдельности для каждой добавленой или удаленной записи, теперь она вызывается асинхронной командой. В BDN и на wiki была добавлена информация об операции SelectedRecordsChanged, т.к. ранее она не была документирована.

27 : Добавить в пункт Помощь пункт “Скопировать версию приложения в буфер обмена”

Реализована возможность в окне “Помощь -> О программе” копировать информацию о пользователе, базе данных и программе с помощью контексного меню.

28 : Добавить возможность просмотра PDF файлов в фрейме Global.

Реализована возможность просмотра PDF файлов.

Реализован новый фрейм TbtkLookUpPDFViewFrame, и зарегистрировано свойство FileNameField. В этом свойстве нужно указать атрибут с именем файла, или с блобом. При этом из-за особенности работы ActiveX компонента Acrobat Reader’a, перед отображением блоб сохраняется во временный файл, после закрытия приложения временный файл будет удалён.

Также и во фрейме TbtkLookUpTextViewFrame (поддерживает документы формата doc, docx, rtf или txt) реализована возможность загрузки из блоба, аналогично TbtkLookUpPDFViewFrame. За тем лишь исключением, что он не нужнается во временном файле, и загрузка производится непосредственно из блоба. При загрузке из блоба тип загружаемого документа определяется по сигнатуре документа, а не по расширению, как в случае загрузки из файла.

Для работы фрейма TbtkLookUpPDFViewFrame необходимо чтоб в системе был установлен Acrobat Reader)

Версия BTK 1.4.111.0

29 : Сделать проверку версии библиотеки отчета

Реализована проверка версии библиотек отчета btkfReport4.dll и btkReportDLL.dll Если версия библиотеки и исполняемого файла не совпадает, то об этом пишется в DBMonitor, проверка выполняется перед загрузкой соответствующей библиотеки.

30 : Сортировка с приведением к числу: доработка

Доработана сортировка строки как числа на клиенте: и точка и запятая воспринимаются как разделитель дробной части числа если две строки начинаются с одного и того же числа, то они сравниваются по нечисловому продолжению строки введено разбиение строки на группы при сортировке. Группы разделяются симолом “-“, или “\”, или “/”.

31 : 4.30.31 Реализовать в дереве операцию OnFocusedCellChanged по анологии со списком

В дереве, по аналогии со списком, реализована операция OnFocusedCellChanged.

32 : Не корректное сохранение в PNG иконок из коллекций с прозрачностью

Для работы с коллекциями изображений в скриптор добавлены следующие методы:

  • TbtkImageList.Create(Width, Height: Integer): TbtkImageList; - Создать новый экземпляр коллекции.
  • TbtkImageList.SerializeToBlob: Variant; Сериализовать объект для сохранения в базу.
  • TbtkImageList.AddImage(Width, Height: Integer): TbtkImageList; - Добавить изображение в коллекцию.

Также добавлен новый формат извлечения изображений из коллекции, метод GetImage - “png.realpha”, полученный блоб будет в формате PNG, но при выгрузке альфа-слой изображения (слой прозрачности) будет удалён и создан новый по цвету прозрачности (RGB, цвет пикселя 0:0). Подробнее ознакомиться с коллекциями пиктограмм можно ознакомиться тут: работа с коллекциями пиктограмм. Или в BDN, соответственно описание класса TbtkImageList. В выборке коллекций изображений добавлена операция ReplaceAlphaLayer (Пересоздать слой прозрачности). Выйдет в BTK 1.4.110.0

33 : 4.31+ Научить строку автофильтра ставить процент слева.

Добавлено новое свойство “Поиск в строке автофильтра по произвольному вхождению” к свойствам выборки и к свойствам атрибутов выборки. При включении этого свойства к строке поиска автофильтра слева добавляется процент, что позволяет вести поиск по произвольному вхождению. Свойство атрибута перекрывает свойство выборки. По умолчанию выключено.

Будет доступно в BTK версии 1.4.110.0

Также это свойство добавлено ко всем таблицам отладочного окна и по умолчанию включено.

34 : Дать редактору скриптов способность определять тип переменной по ближайшему её присвоению

пример скрипта:
<PASCAL>
  a := Selection;
  a.DoSomething;
</PASCAL>

Сочетание клавиш Ctrl+Space выдаст список свойств и методов зарегистрированных в BDN для класса TbtkScriptSelectionObject, экземпляром которого и является скриптовое свойство Selection.

Исправленные ошибки:

1 : Ошибка закрытия окна ОЛАП фрейма

Т.к. не-lookup-ный ОЛАП фрейм использует чужую выборку, то и операции выборки взоимодействуют не с этим фреймом, а с владельцем выборки. Операция CloseFormCancel переработана для корректного функционирования в подобных случаях - закрывает активное окно работающее с выборкой операции, если такого нет, - по стандартной схеме. Вызов операции CloseFormOk из GUI не-lookup-ных фреймов запрещён.

2 : Не работает правая кнопка мыши в списке “Вывести на принтер”

Восстановлена работа контекстного меню в диалоге вывода на принтер.

3 : Ошибка сохранения текста операции в дебагерном окне

Исправлено, теперь текст скрипта в метаданных выборки сохраняется корректно.

4 : Сбрасываются значения в фильтре по Enter при использовании контрола “Выпадающий список с мультивыбором”

Исправлена ошибка сброса значений в фильтре по Enter при использовании контрола “Выпадающий список с мультивыбором”

5 : 32 не сохраняется скрипт в списке составляющих релиза

Исправлено сохранение CLOB параметров.

6 : 4.30.26: зависание при закрытии прикрепленных файлов

Устранено зависание приложения при закрытии файла открытого на редактирование через BlobOpenEx2 в не модальном режиме.

7 : XE3v2: Не работаетт поиск/позиционирование по набору текста руками в гриде

Исправлен поиск с позиционированием при наборе текста в гриде.

8 : Вставка шаблона в редактор паскаль операций не меняет его состояния

Переработана вставка Ctrl + Shift + P и Ctrl + Shift + S шаблонов в редактор скрипта. Блок не пропадает на обновление, или сохранение Вставленный блок можно отменить Ctrl + Z как и любое другое изменение Ctrl + Shift + P не вставляет блок <Pascal> повторно, а позиционирует курсор на начало существующего.

Устранено AV при Ctrl + Shift + S с курсором в начале строки Ctrl + Shift + S больше не теряет последнюю букву идентификатора под курсором

9 : Не отображается кнопка с дверью в doLookUp

Исправлено.

10 : Не работает контекстный поиск

Исправлена ошибка контекстного поиска в списке с детализацией и частичной прогрузкой данных. Последствия ошибки приводили к поломке контекстного поиска, невозможности вызова дебагера и установке всех полей ReadOnly.

11 : Не работает драг энд дроп в клиенте 4.31.0 ms 56

Восстановлена возможность перетаскивания ячеек в гриде (Drag & Drop), настраиваемая в свойствах выборки (настройкик фрейма - параметры Drag-and-Drop).

12 : 30.26 В дереве не работает clientsetvar для атрибутов без сеттеров.

Теперь метод TbtkScriptSelectionObject.ClientSetVar вызванный в древовидной выборке позволяет присваивать новое значения атрибутам не имеющим операции-сеттера.

13 : Не сохраняются настройки для пользователей с точкой в логине

Обеспечены корректные сохранение и восстановление настроек пользователей с точкой в логине.

14 : Исправить вставку текста в html фрейм из аськи через буфер обмена.

Исправлена вставка текста в html фрейм из qip’a через буфер обмена.

15 : Ошибка при переключении закладок карточки, если на открытой закладке был открыт выпадающий список автофильтра

Исправлена ошибка, возникавшая при переключении закладок выборки в случае, если на старой закладке был открыт выпадающий список автофильтра.

16 : Не вывести курсор из редактирования строки автофильтра в документе импорта

Внесены следующие изменения в работу автофильтра:

  • При клике на пустую обрасть грида снимается фокус строки автофильтра. Это позволяет вывести курсор из редактирования если в гриде нет записей.
  • Если выделена строка автофильтра, то начало ввода влечет начало редактирование ячейки автофильтра (а не контекстный поиск, как ранее). Исключение - комбинации Ctrl + V и Shift + Ins, добавляющие данные в грид из буфера обмена.
  • Нажатие клавиши Esc выполняет следующие функции: - завершает редактирования ячейки автофильтра, если она изменяется. Оставляет строку автофильтра выделенной. - снимает фокус строки автофильтра, если она выделена и не редактируется. - вызывает операцию “закрыть выборку”, если автофильтр не выделен.

Внесенные изменения делают работу со строкой автофильтра удобнее, и решают проблему невозможности снятия выделения из строки автофильтра, если в гриде нет строк.

17 : На RefreshTranspose и Open в наборе выделенных записей “транспонированной выборки” появляется лишняя пустая запись.

В набор SelectedRecords попадала лишняя запись, пустая, которая создаётся в сервисных нуждах при открытии и перезапросе “транспонированной” выборки - больше она туда не попадает.

18 : 4.30.28n Множатся узлы в дереве после рефреша с переоткрытием датасета.

Исправлено появление дублирующихся узлов при рефреше дерева.

19 : Фрейм-дерево при вставке дублируются записи

Исправлено дублирование записей в дереве

20 : Ошибка при открытии прикрепленных файлов

Исправлена ошибка, возникавшая при открытии файла средством просмотра фотографий Windows 8 в модальном режиме или с CallBack-операцией. Стандартное средство просмотра Windows 8 не создает нового процесса и не занимает файл (открывает только для чтения). Теперь в этом случае методы BlobOpenEx2 и ShellExec генерируют исключение EbtkFileWatcherException, уведомляющее о невозможности создания объекта следения за файлом.

Пример обработки нового исключения:
try
  Selection.BlobOpenEx2('BlobAttr', '...\test.txt', Selection, 'AfterMyOperation', wmProcess, False, True, fcmAlwaysWithDialog);
except
  if not SameText(LastExceptionClassName, 'EbtkFileWatcherException') then
    raise(LastExceptionMessage);
end;

21 : 31+ Не блокируется интерфейс при выполении паскаль операции.

Исправлена ошибка начала выполнения одной операции выборки во время выполнения предыдущей (эффект параллельного исполнения). В большинстве случаев такой эффект мог быть связан с установкой значения Html редактора в операции, во время выполнения такой операции(загрузки) GUI был активен и позволял запустить пользователю операцию.

22 : ошибка Field “nsumbase[01062014]” not found для дин. столбцов

Устранена проблема Field “FieldName” not found возникающая при следующих условиях: фокусируемся на динамическом атрибуте, обновляем выборку, а запрос возвращает новый набор полей и без сфокусированного поля.

23 : Пропала раскраска атрибутов в гриде

Исправлена ошибка использования стилей в приложении.

24 : Арифметическое переполнение на прокрутке выпадающего списка подсказок скриптера.

Ошибка сторонних компонентов - исправлена. Проявляется при прокручивании списка автодополнения колесом мыши дальше 128-й позиции.

25 : Нажатие клавиши Shift в html фрейме начинает транзакцию.

Исправлено, теперь нажатие Shift в html фрейме не приводит к началу транзакции

26 : 4.30/4.31 В дереве не рисуются “…” если содержимое ячейки не влезает на экран, также не показывается хинт с полным содержимым ячейки при наведении курсора мыши.

Восстановлено отображение многоточия “…” в ячейках древовидных списках в случае, если они не вмещают свое значение. Обеспечено корректное применения значения по умолчанию “Да” свойства “Показывать всплывающие подсказки ячеек” древовидных фреймов.

27 : 4.31.6n List index out of bounds (-1) .

Исправлена ошибка List index out of bounds (-1), возникавшая в древовидных списках при смене активной записи.

28 : 4.31.5 и 4.30.30 Бесконечная неисправимая ошибка.

Исправлена ошибка AccessVioltation регулярно возникающая в редакторах “выпадающий спискок”

29 : На BTD-схемах не отображаются картинки в 5 версии

Исправлено отображение картинок на схемах.

30 : Двойной клик на слове в HTML фрейме оставляет зажатой кнопку мыши

Исправлен двойной клик в HTML фрейме.

31 : 4.31.6n Пропадают иконки на тулбаре после применения фильтра с переоткрытием датасета

Больше иконки не пропадают на тулбаре при его перестроении

32 : Не корректно работает скриптовый метод выборки MultiSelect.

Исправлена работа скриптового метода MultiSelect в Grid-фреймах.

Раньше в грид-фреймах с включенным мультиселектом, вызов метода MultiSelect всегда возвращал True если выделено больше одной записи, иногда возвращал False если выделена одна запись, и никогда не возвращал True если не выделено ни одной записи. Во фреймах с выключенным мультиселектом, вызов метода MultiSelect всегда возвращал False. Теперь, метод MultiSelect всегда возвращает True если у Grid-фрейма включен мультиселект, и False если мультиселект отключен.

33 : Проблема с прикрепленными файлами

Исправлена ошибка, возникавшая при попытке принудительного закрытия выборки несмотря на наличие открытых документов.

34 : Настройка свойства атрибута “Объединение ячеек (Горизонтальное)”

Восстановлена корректная работа свойства атрибута выборки “Объединение ячеек (Горизонтальное)”. Реализована возможность горизонтального объединения при любом значении свойства “Разделительные линии” (горизонтальные / вертикальные). Ранее объединение ячеек происходило только при горизонтальных линиях.

35 : Фрейм вывести на принтер в 5.0 не подхватывает настройки из реестра

Восстановлено сохранение пользовательских настроек фрейма “Вывести на печать”.

36 : Перезагрузка списка стилей в диалоге выбора

Обеспечено обновление списка всех стилей приложения при создании нового стиля. Ранее это происходило только при перезапуске приложения.

37 : 4.31.6 При вставке в html фрейм из буфера текста, скопированного из qip, первое слово абзаца вставляется другим шрифтом

Исправлена вставка в html фрейм текста через буфер обмена, скопированного из qip’a

38 : 4.31.5n Ошибка загрузки значения по умолчанию выпадающего списка по запросу.

Исправлена загрузка “значения по умолчанию” параметра фильтра, что проявляла признаки не корректного функцонирования в случае реадктора выпадающий список.

39 : 30.27 connection not defined при выполении sql в библиотечной операции вызываемой при получении данных с ком порта

Проблема проявлялась при использовании операции клиентской выборки как обработчика асинхронных событий(например события от последовательного порта). В этом случае контекстом библиотечной операции является сама библиотечная выбора, которая не обладает собственной сессией. Теперь при выполнение библиотечной операциии выделяется новая сессия из пула при отсутствие сессии в контекте. Сессия возвращается в пул после выполнения операции.

40 : В 5.x у сессии не выставлется свойство Action и отсутствую отступы у выложенных операций в ДБ мониторе

Исправлено отображение отступов у вложенных операций в ДБ мониторе.

41 : 4.31.6n Не работает операция “закрыть” в контекстном меню таба

Исправлена работа операций выпадающеего меню у таба MDI окон.

42 : Пропадают пункты выпадающего меню на табе MDI окон после использования URI пунктов

Исправлено пропадание нужных и появление лишних пунктов выпадающего меню на табе MDI окон

43 : Карточный грид - не работает свойство атрибута “Формат отображения значений числовых атрибутов”

Обеспечено применение свойства атрибута выборки “Формат отображения значений числовых атрибутов” для карточных списков.

44 : Неверное отображение стилей ячеек в транспонированном гриде (итиллиум - 0000027896)

Исправлена ошибка рассинхронизации данных транспонированного списка со стилем его ячеек.

45 : Поддержка очень больших кнопок на тулбаре

Обеспечено использование коллекций иконок в выпадающих списках панелей инструментов тех же, что и в самих панелях. Размер шрифта в выпадающих списках также определяется настройкой выборок для панелей инструментов.

46 : 4.30.30. Неполностью прогружаемый список становится редактируемым после сортировки.

Исправлена ошибка, приводившая к возможности редактирования не редактируемых полей, после изменения порядка сортировки. Ошибка проявлялась если операция выборки “редактирование” была заблокированна устаревшим методом SetDisabled.

47 : 4.31.6n/4.30.31n Скрылся мастер фрейм.

Исправлена ошибка выравнивания мастер-фрейма.

48 : Выравнивание заголовков операций по вертикали, в выпадающих меню кнопок панели инструментов с большими картинками

Восстановлено вертикальное выравнивание по центру текста на кнопках пенелей инструментов

49 : Ошибка при смене стиля или темы приложения

Исправлена ошибка, возникавшая при смене стиля или темы приложения.

50 : 31+ Ошибка включения кнопок на разделителях - фиксируются размеры окон.

Восстановлена возможность изменения размеров окон с помощью перемещения мышкой разделителя.

51 : 5.0.0 не работает прием данных с ком порта

Исправлена работа с COM портом

52 : 4.30.28 Ошибка установки ширины колонки, видимость которой установлена настройкой грида

  • Когда колонка делается видимой методом списка (“Настройка видимости колонок”) - для неё сразу подбирается оптимальная ширина.
  • Для таких колонок будет сохраняться ширина также и после выполнения “Подобрать ширину всем колонкам”.

53 : Ошибка при создании или изменении стиля раскраски

Исправлена ошибка возникающая при изменении стиля раскраски. Измененный стиль для тестовой строки применяется по нажатию кнопки “Сохранить изменения”.

54 : Assert при вставке данных в дерево из блокнота

Исправлена ошибка, возникавшая при вставке данных из текстового редактора в древовидный список.

55 : Двухкратное открытие одной и той же выборки

Исправлена ошибка повторного открытия выборки с указанными параметрами фильтров. Попытка повторного открытия уже открытой выборки приводит только к активации последней.

56 : 4.31.6n Снова проблемы с календарем, зависает глобал.

Устранена обшибка зависания приложения при открытии выборки с календарем

57 : 4.31+ виснет при отображении некоторых сообщений об ошибке.

Исправлена ошибка, возникавшая при автоматическом подборе размеров окна об ошибке.

58 : 4.32.0 Cannot perform this operation on a closed dataset

Исправлена ошибка Cannot perform this operation on a closed dataset возникающая в транспонированном списке при открытии.

59 : 4.31n Не работают операции второго уровня детальных фреймов.

Исправлена ошибка, возникавшая при раскрытии выпадающего списка операций второго уровня.

60 : 30.9 Ошибка работы кнопок html фрейма Настрочный и Подстрочный.

Исправлена работа кнопок Надстрочный и Подстрочный. Теперь при нажатии на одну из них вторая выключается.

61 : 31+ Не применяется свойство высота заголовка в дереве.

Восстановлена работа свойства “высота заголовка” в древовидных списках.

62 : Отправка почты с клиента: неверно заполняется адресат

Исправлена отправка почты с клиента

63 : 5.0n Ошибка при обновлении дерева.

Исправлена ошибка при восстановлении фокуса в дереве после рефреша.

64 : Зависает построение отчета, если файл шаблона в старом формате

Устранено зависание при построении офисных отчетов. Ошибка проявлялась когда шаблон был создан более старой версией MS Office по отношению к версии на которой происходит формирование отчета.

65 : 4.31.6 Тулбар в карточке ТМЦ переехал вниз

Исправлено выравнивание тулбара в динамических фреймах

66 : Окно ошибки в клиенте, кнока “Закрыть” - не нажимается с клавиатуры, пробелом.

Исправлена ошибка в диалоге об ошибке, из-за которой кнопка “Закрыть” не реагировала на пробел.

67 : Обрезанный по высоте редактор в древовидном списке

Исправлен размер редактора в дереве, он теперь совпадает с размером ячейки.

68 : После обновления видны глючит DoLookupex на всех актуальных версиях клиентов.

Исправлен DoLookUp, сделано чтоб RecCount возвращал сумму выделенных строк по всем выборкам. Раньше возвращал число выделенных записей в последней выборке.

Неприятность случилась из-за обновления системы KB3006226 и KB3010788 от 11 ноября. Функция WinAPI SafeArrayRedim перестала изменять количество элементов во второй размерности массива если количество элементов в первой равняется нулю.

69 : Форма прерывания отчета не расстягивается под большой размер шрифта

Исправлена ошибка, при которой в случае увеличения шрифта в системе в результате чего в окно прерывания sql запроса не влезал текст сообщения.

70 : (итиллиум - 0000044331) Область итогов: слетает настройка при закрытии документа.

Исправлена установка итогов для атрибутов на основе метаданных. Из-за ошибки итоги выставляли только для одного атрибута.

71 : Выпадающий список с мультивыбором: редактируется если залочен

Больше не редактируется.

72 : 4.31.7n Множатся узлы в дереве после фильтрации с переоткрытием датасета.

Исправлено дублирование записей в дереве.

73 : ОЛАП: Не корректная настройка “маски форматирования”

В редакторе карты измерений для OLAP-фрейма удалено поле с настройкой маски форматирования показателей. Маски форматирования показателей, как и прежде, можно задавать в окне настроек показателей.

74 : AV по горячей клавише.

Исправлена ошибка приводившая к обработке горячих клавиш в заблокированных формах. В некоторых случаях это приводило к краху приложения. Теперь все горячие клавиши игнорируются при заблокированной форме.

75 : ExecSQLWithProgress - отображается по центру экрана

Исправлено отображение окна прогресса, вызываемого с помощью ExecSQLWithProgress, теперь оно отображаеться по центру главного окна приложения, а не Desktop-а.

76 : 4.31+ расширение тулбара не в ту сторону.

Исправлено расширение тулбара. Теперь вертикальный тулбар расширяется вправо, а не влево как было раньше.

77 : 30.26 При наличии связываемых переменных в gst выборки приложения, любой addvar заканчивается закрытием приложения.

Устранена ошибка приводившая к закрытию приложения при наличии связываемых переменных в GST выборки приложения.

78 : 4.31.6 Автофильтр по английски

Диалог автофильтра переведен на русский язык

79 : Доработки по не модальности отчетов - заменить текст сообщения “Закрыть”

Изменен текст сообщения появляющегося если есть открытые отчеты которые используют закрываемую выборку: “Имеются отчеты (печатные формы), построенные от закрываемого окна. Они будут закрыты вместе с окном. Закрыть?”

80 : 4.30+ Контрол у которого нет сеттера можно разблокировать методом SetFieldsReadOnly

Аналогичное действие произвести сеттером TbtkScriptFieldObject.ReadOnly не возможно (разблокировать атрибут для ввода при отсутствии сеттера).

Для сеттера свойства и метода TbtkScriptSelectionObject.SetFieldsReadOnly реализована общая логика проверки.

81 : AV при прерывании выполнения запроса(на блокировке)

Любое исключение, в том числе и исключительная ситуация отмены выполнения, во время работы сеттера блобового поля приводила к аналогичному AV. Это связано с тем, что для полей с большими данными(Blob) не запоминалось “старое значение”, которое должно быть возвращено в случае провала работы сеттера.

Исправлено. Старые значения сохраняются в том числе и для Blob-полей.

82 : предпросмотр отчета OraQuery1: Access violation

Исправела ошибка возникающая при предпросмотре отчёта из дизайнера

83 : Некорректная работа мультиселекта в реестрах документов

Исправлена работа мультиселекта в табличных фреймах.

Ошибки можно было наблюдать в выборках с частичной прогрузкой. При выделении нескольких записей с помощью мыши и зажатой кнопки Ctrl, фокусировалась не та хзапись на которой производился щелчок мыши.

84 : “Перескок” курсива в HTML фрейме

Исправлено перескакивание курсора при начале ввода текста в HTML фрейме.

85 : 4.30.35 нажатие кнопки на клавиатуре DELETE в строке автофильтра приводит к вызову операции выборки DeleteItem

Исправлена ошибка при которой в некоторых редакторах (не являющихся нащими собственными редакторами) нажатие клавиш отдавалось в обработку горячих клавиш ниже лежащим элементам управления.

86 : List index out of bounds (1) с зацикливанием

Исправлена ошибка List index out of bounds возникающая при некоторых обстоятельствах в момент применение сортировки из скриптера

87 : Library btkfreport4.dll no found.

Добавлены bpl без которых возникала ошибка “Library btkfreport4.dll no found”, также исправлена ошибка возникающая при закрытии программы после работы с FastReport 4

88 : При разрыве соединения в POS терминале не предлагается перезапуск клиента

Доработан алгоритм определения разрыва соединения. При разрыве соединения может возникать ошибка ORA-3113, но по данной ошибке нет возможности однозначно определить, что было разорвано соединения. Теперь при получение этой ошибке выполняем проверку состояния соединения главной сессии приложения и пытаемся выполнить запрос. Если попытка попытка окончилась неудачно, предлагаем пользователю перезапустить приложение.

89 : При AdminVisible = false для атрибута, есть возможность сделать атрибут видимым

Реализовано скрытие от пользователя полей с AdminVisible=False. Раньше свойство AdminVisible делало поля только невидимыми, но их можно было сделать видимыми через редактирование отображаемых колонок. Теперь такие поля не доступны пользователю для изменения их видимости. Также для пользователей не имеющих роли gsdeveloper, эти поля не будут отображаться в окне отладки.

90 : 4.31.7n Отвалилось перемещение закладок

Возвращена возможность менять местами вкладки с MDI окнами с помощью Drag&Drop.

91 : Проверить и скорректировать по факту проверки наличие отладочной информации из стандартныых модулей в дебавой сборке.

Исправлен скрипт автоматической сборки, возращена обратно потерянная отладочная информация для стандартных модулей.

92 : Не закрыть приложение если произошла потеря соединения при открытой модальной форме

I. Возвращено прежнее поведение локальным сессиям: они закрываются в случае неисправности сессии на сервере (или её убийстве/kill)

II. Окна, чья сессия отключена, закрываются по первому запросу, без дополнительных проверок.

93 : 4.31 Возникает ошибка при открытии списка задач с графиком Ганта

Убрана ошибка AccessViolation возникающая в дереве при отсутсвие записей.

94 : Загорается commit при использовании в HTMLEditor-е не связанных с редактированием кнопок

Исправлено неоправданоне загорание коммита при нажатии не связанных с редактированием кнопок, а также сделано чтоб коммит загорался при вставке и вырезании текста из контексного меню.

95 : Обработка ошибки DRG-51030: wildcard query expansion resulted in too many terms

Функционал обратного извещения запроса(перезапрос с выставленным параметром сигнализирующим о провале прошлой попытки с ошибкой DRG-51030) работал в случае когда ошибка возникает при выполнении запроса. В случае же когда ошибка возникает при извлечении даных этот функционал не работал - исправлено.

96 : Не открывается фрейм “вывести на печать”

Исправлена ошибка открытия фрейма “Вывести на печать”.

97 : 5.0 AV на операцию “Сумма значений по выделенным записям”

Исправлена ошибка возникающая при обращении к пункту меню “Сумма значений по выделенным записям” табличного представления.

98 : стек операций паскаль ошибки стал содержать хлам

Стек паскаль операций ошибки мог содержать повторяющиеся операции, которые были частью стека другой ошибки. Исправлено.

99 : 30.32+ IMMEDIATE_HALT_APPLICATION_DISCONNECT_WITHOUT_SAVE сохраняет изменения

Изменено поведения отключения сессии. В OCI по умолчанию при разрыве соединения выполняется сохранение транзакции. Теперь же перед разрывом соединения явно выполняется RollBack. Таким образом команда IMMEDIATE_HALT_APPLICATION_DISCONNECT_WITHOUT_SAVE не будет приводить к сохранению сессии.

100 : При включении автообновления для выборки приложения - в момент автообновления закрывается главное меню

Выполнение SQL-запросов приводило к закрытию различных всплывающих окон, в том числе и меню, как главного, так и контекстных, или выпадающих меню на кнопках панели инструментов. Исправлено.

101 : При сортировке по размножаемой колонке нужно оборачивать название колонки в кавычки

Добавлено оборачивание в кавычки имен размножаемых атрибутов (вида fieldName[index]) при сортировке по клику на заголовок колонки в списка. Иначе поле при выполнение запроса не находилось.

102 : 4.31.6n Рисуется разделитель детальных фреймов, а деталей нет.

Скрыт разделитель в динамическом фрейме, если детали отсутствуют.