1.2.1. Методы быстрого доступа к Selection¶
1.2.1.1. Контекст/Параметры/Данные¶
-
GetVar
(Name: String): Variant¶ Возвращает значение атрибута (параметра).
Parameters: Name (String) – Имя параметра. Return type: Variant
See also
-
VarExists
(Variant: Variant): Boolean¶ Функция проверяет существование параметра выборки или парамлиста с заданным именем.
Parameters: Variant (Variant) – Имя параметра выборки или парамлиста Return type: Boolean
-
ClientSetVar
(Name: String; Value: Variant)¶ Метод работает аналогично
SetVar
, устанавливает значение атрибута (параметра), но без вызова сеттера.Parameters: - Name (String) – Имя атрибута(параметра).
- Value (Variant) – Значение атрибута(параметра).
-
AddVar
(Name: String; Value: Variant; Type: TFieldType)¶ Добавляет параметр в выборку. Если параметр с таким именем уже существут, то изменяются тип данных и значение существующего параметра.
Parameters: - Name (String) – Имя создаваемого параметра
- Value (Variant) – Значение параметра.
- Type (TFieldType) – Тип данных параметра
-
SetVarDesc
(Name, Value: Variant)¶ Устанавливает описание параметра (то, что отображается в заголовках грида и т.п.). В Value можно передать заголовок бенда, к которому будет привязан атрибут (через символ |)
Parameters: - Name (Variant) – Имя параметра.
- Value (Variant) – Cтрока описания.
-
GetSelfVar
(VarName: String): Variant¶ Возвращает значение параметра выборки. В отличае от
GetVar
не смотрит на выборку мастера, если не находит параметр VarName в текущей выборке. С помощью данной функции можно получить значения:- атрибута выборки
- свойства фрейма
- параметры добавленные с помощью
AddVar
- параметры добовленные при вызове
CreateFormEx
илиDoLookUpEx
.
Parameters: VarName (String) – Имя переменной. Return type: Variant
-
GetVarDesc
(Name: String): String¶ Получает описание параметра (то, что отображается в заголовках списка и т.п.)
Parameters: Name (String) – Имя параметра. Return type: String
-
SelfVarExists
(VarName: Boolean): Variant¶ Проверяет существование параметра выборки. В отличии от
VarExists
, не смотрит на выборку мастера, если не находит параметр VarName в текущей выборке. С помощью данной функции можно проверить существование: - атрибута выборки - свойства фрейма - параметры добавленные с помощьюAddVar
- параметры добовленные при вызовеCreateFormEx
илиDoLookUpEx
.Parameters: VarName (Boolean) – Имя переменной. Return type: Variant
-
SetVar
(ParamName: String; ParamValue: Variant)¶ Устанавливает значение атрибута (параметра).
Parameters: - ParamName (String) – Имя параметра.
- ParamValue (Variant) – Строка описания.
1.2.1.2. Макросы¶
-
GetMacro
(MacroName: String): String¶ Метод возвращает значение макроса с именем MacroName.
Parameters: MacroName (String) – Имя макроса Return type: String
-
IsMacroExists
(MacroName: String): Boolean¶ Проверяет существование макроса c именем MacroName.
Parameters: MacroName (String) – Имя макроса. Return type: Boolean <pascal> if IsMacroExists('NewMacro') then SetMacro('NewMacro', 'Select 2 from dual') else AddMacro('NewMacro', 'Select 2 from dual'); ShowMessage(GetMacro('NewMacro')); Selection.Active := False; Selection.Active := True; </pascal>
-
SetMacro
(MacroName, MacroValue: String): Variant¶ Устанавливает макрос с именем MacroName и значение MacroValue. Если при установке значения макроса выборка была открыта (
Selection.Active = True
), то произойдёт её закрытие. Поэтому после устанвки макроса необходимо открыть выборку самостоятельно.Parameters: - MacroName (String) – Имя макроса
- MacroValue (String) – Значение макроса
Return type: Variant
-
AddMacro
(MacroName, MacroValue: String)¶ Создаёт в выборке макрос с именем MacroName и значением MacroValue. Если макрос с именем MacroName существует, макросу будет установлено значение MacroValue.
Parameters: - MacroName (String) – Имя макроса.
- MacroValue (String) – Значение макроса.
1.2.1.3. Датасет¶
-
Commit
()¶ Шорткат метода
TbtkScriptSelectionObject.Commit()
.
-
Append
(F: Variant)¶ Функция открывает файл на добавление записей в файл.
Parameters: F (Variant) – Файловая переменная.
-
Change
()¶ Вызов метода указывает форме, что данные на форме менялись, даже если транзакция не была начата
-
Rollback
()¶ Функция вызывает откат текущей активной транзакции.
-
BlobOpen
(FieldName, Extension, Wait, Save: Variant): Boolean¶ Запускает приложение, ассоциированное с расширением Extension, передает ему данные из поля выборки FieldName и, если
Wait = true
, то ожидает завершения запущенного приложения, после чего сохраняет или нет (в зависимости от параметра Save) обратно в БД. Возвращает True если изменения в файле были сохранены в поле.Parameters: - FieldName (Variant) – Имя поля.
- Extension (Variant) – Расширение файла (с точкой впереди).
- Wait (Variant) – Ожидать ли завершения запущенного приложения.
- Save (Variant) –
Имеет смысл только если параметр
Wait = true
. Сохранять ли файл в БД если он был изменен:- stTrue
- сохранить
- stFalse
- не сохранять
Return type: Boolean
-
GetFocusedFieldName
(): String¶ Возвращает имя атрибута (параметра), на редакторе которого находится фокус. Для списка (дерева) – это будет активный столбец; для карточки (панели фильтров) – это атрибут (параметр), редактируемый активным контролом. Если что-то не так, вернёт пустую строку.
Метод является алиасом для
TbtkScriptSelectionObject.GetFocusedFieldName
Return type: String
-
BlobOpenEx
(FieldName, FileName: String; Selection: TbtkScriptSelectionObject; Operation: String; Mode: TbtkWatcherMode): Boolean¶ Добавлена возможность открывать на редактирование файлы хранящиеся в blob полях в немодальном режиме. В немодальном режиме файл можно открыть использую метод
BlobOpenEx
. После завершения приложения будет вызвана операция выборки. Операция выборки вызовется только в случае если файл было измен. Возвращает True если изменения в файле были сохранены в поле.Parameters: - FieldName (String) – Имя поля типа blob с файлом.
- FileName (String) –
Имя файла. Можно передать:
- Полный путь к файлу (C:\Temp\picture.jpg);
- Имя файла (picture.jpg), тогда приложение попытается создать файл с таким именем во временном каталог пользователя;
- Расширение файла (.jpg) - приложение попытается создать файл с уникальным именем и указанным расширением во временном каталоге пользователя. В случае, если такой файл уже существует, то будет возбуждено исключение.
- Selection (TbtkScriptSelectionObject) – Выборка в которой будет вызвана операция на событие завершение редактирования файла.
- Operation (String) – Имя операции которая будет вызвана при завершении редактирования файла.
- Mode (TbtkWatcherMode) –
Режим открытия файла:
- wmProcess - Определение того, что файл редактируется, производится на основе существования процесса приложения открывшего его. Как только процесс завершается, делается вывод, что редактрование завершено. Данный режим обладает недостатком. Если приложение(например MS Word) для открытия нескольких файлов использует один и тот же процесс, то процесс завершится после закрытия всех открытых файлов, чего следует избегать, и, по возможности, использовать следующий режим;
- wmFile - Определение того, что файл редактируется, производится на основе того, что многие прилоежния занимают файл при открытии, недопуская его открытия на редактирование другим приложением. Но данный способ применим не ко всем приложениям (Например, приложение “Блокноте” не запрещает редатировать файл при открытии другим приложения).
- wmAuto - авто-определения режима. В случае, если при вызове уже не запущен процесс приложения которым следует открыть файл, то будет выбран режим wmProcess, иначе режим wmFile
Return type: Boolean
<PASCAL> path := InputBox ('Введите путь файлу', 'Файл:', ''); selection.blobopenex('blobFile',path ,selection,'SendEmail',wmFile); </PASCAL>
1.2.1.4. Forms¶
-
CreateForm
(FormName, EntityName: String; FormType: TFormCreationFlags): TModalResult¶ Метод создает и показывает форму. Если форма модальная, то функция ожидает её закрытия.
Parameters: - FormName (String) – Имя формы.
- EntityName (String) – Имя выборки которая будет показана на форме.
- FormType (TFormCreationFlags) – Параметр определяет как будет показана форма (модально или как MDI-child).
Return type: Returns: - mrOk или mrCancel
если форма модальная (
FormType = fcfModal
)- mrNone
если форма MDI-ная (
FormType = fcfMDI
)
<Pascal> CreateForm('', 'SEL_RPT_Report.List', fcfMDI); </Pascal>
-
CreateFormEx
(FormName, EntityName: String; FormType: TFormCreationFlags; PropNames, PropValues: Array): TModalResult¶ Метод создает и показывает форму. Если форма модальная, то функция ожидает её закрытия. Отличается от CreateForm возможностью передавать дополнительные параметры.
При открытии Built-in формы производит поиск существующей и её активацию (поиск делается по имени выборки, отображению, списку параметров выборки, переданных через CreateFormEx). После активации уже существовавшей формы вызывается операция OnFormActivatedAfterFindWindow. Для того, чтобы всегда открывать форму в новом окне, не проверяя, есть ли уже такая же открытая форма, в списке передаваемых параметров необходимо указать параметр CreatingMode со значением “CreateNewForm”.
Также имеется возможность передавать в выборку макросы в качестве параметров. Макрос передается в списке параметров. Имя макроса должно начинаться с символа ‘&’.
Parameters: - FormName (String) – Имя формы.
- EntityName (String) – Имя выборки которая будет показана на форме.
- FormType (TFormCreationFlags) – Параметр определяет как будет показана форма (модально или как MDI-child).
- PropNames (Array) – Массив имен параметров.
- PropValues (Array) – Массив значений параметров [APropNames].
Return type: Returns: - mrOk или mrCancel
если форма модальная (
FormType = fcfModal
)- mrNone
если форма MDI-ная (
FormType = fcfMDI
)
<Pascal> CreateFormEx('', 'SEL_RPT_Report.List', fcfMDI, ['Representation', 'TabVisible','ExParam1'], ['RoList', 0, 'Значение']); </Pascal> <Pascal> CreateFormEx('', 'SEL_RPT_Report.List', fcfMDI, ['Representation', '¯os','ExParam1'], ['RoList', 'cSum < 100', 'Значение']); </Pascal>
-
DoLookup
(LookupControlClass, EntityName: String; LocateFieldNames, LocateFieldValues, ResultFieldNames: Array; MultiSelect: Boolean): TbtkLookupData¶ Отображает выборку в режиме выбора (в lookup-форме), возвращает результат в виде набора записей
TbtkLookupData
.Parameters: - LookupControlClass (String) – Имя класса формы.
- EntityName (String) – Системное имя выборки (если пусто, то определяется вызываемой формой).
- LocateFieldNames (Array) – Массив имен атрибутов выборки по которым ищется запись для начального позиционирования.
- LocateFieldValues (Array) – Вариантный массив значений для LocateFieldNames.
- ResultFieldNames (Array) – Массив имен атрибутов выборки, значения которых будут возвращены как
результат. В случае, если необходимо вернуть значение атрибута из
детальной выборки, в качестве массивов имен атрибутов передаются имена
состоящие из:
[имя выборки].[имя поля]
. - MultiSelect (Boolean) – Возможен ли выбор нескольких записей из выборки.
Return type: <Pascal> R := DoLookup('TbtkLookupGridForm', 'maintree', ['id'], [2629000], ['id', 'sParentClass'], true); if R.LookupResult=lrOk then MessageDlg(VarToStr(R.Data(0,1)) + '->' + R.Data(1,1), mtWarning, 'mbYes', 0); </Pascal>
-
DoLookupEx
(LookupControlClass, EntityName: String; LocateFieldNames, LocateFieldValues, ResultFieldNames: Array; MultiSelect: Boolean; PropNames, PropValues: Array): TbtkLookupData¶ Отображает выборку в режиме выбора (в lookup-форме), возвращает результат в виде набора записей
TbtkLookupData
.Отличается от
DoLookUp
возможностью дополнительного указания свойств для открываемой формы.Parameters: - LookupControlClass (String) – Имя класса формы.
- EntityName (String) – Системное имя выборки (если пусто, то определяется вызываемой формой).
- LocateFieldNames (Array) – Массив имен атрибутов выборки по которым ищется запись для начального позиционирования.
- LocateFieldValues (Array) – Вариантный массив значений для LocateFieldNames.
- ResultFieldNames (Array) – Массив имен атрибутов выборки, значения которых будут возвращены как
результат. В случае, если необходимо вернуть значение атрибута из
детальной выборки, в качестве массивов имен атрибутов передаются имена
состоящие из:
[имя выборки].[имя поля]
. - MultiSelect (Boolean) – Возможен ли выбор нескольких записей из выборки.
- PropNames (Array) – Массив имен свойств.
- PropValues (Array) – Массив значений свойств.
Return type: <SQL> <Set> begin AnyAPI.SetIdContract(:id, :IDContract); AnyAPI.SetIdContract(:id, :IDObligation); end; </Set> </SQL> <Pascal> S := DoLookupEx('', 'SELRO_CNT_ContractChoose', ['SELRO_CNT_ContractChoose.id', 'SELROCL_CNT_ObligationChoose.id'], [GetVar('IDContract'), GetVar('IDObligation')], ['SELRO_CNT_ContractChoose.id', 'SELROCL_CNT_ObligationChoose.id'], false, ['Caption'], [GetFmtCaption('CONTRACTOBLFORCHOOSE', [GetVar('super$IDSettlerOut_HL'), GetVar('super$IDSettlerIn_HL')])]); if S.LookupResult = lrOk then begin ShowMessage(s.SelectData('SELRO_CNT_ContractChoose').RecCount); ShowMessage(s.SelectData('SELROCL_CNT_ObligationChoose').RecCount); SetVar('IDContract', S.SelectData('SELRO_CNT_ContractChoose').Data[0,1]); SetVar('IDObligation', S.SelectData('SELROCL_CNT_ObligationChoose').Data[0,1]); ExecSql('set'); end; </Pascal>
Для доступа вернувшимся значениям была использована структура:
SelectData([имя выборки]).Data [AttrNo,RecNo]
. Её использование необходимо при явном указании имени поля ([имя выборки].[имя поля]
), если поле указано неявно ([имя поля]
), то вернувшиеся данные будут доступны непосредственно в свойстве Data
-
CreatePanelEx
(FrameName, EntityName: String; ParamNames, ParamValues: Array)¶ Метод показывает фрейм в виде панели на текущей форме. Передает фрейму параметры. Существуют следующие параметры, позволяюще настроить создаваемый фрейм:
- PanelAlign
Задает расположение панели. Допустимые значения:
- alLeft
- alTop
- alBottom
- alRight
Если не указывать - будет alLeft.
- PanelSize
- Размер создаваемой панели. Высота, если
align = alTop
илиalign = alBottom
, и ширина в других случаях. По умолчанию = 1/3 от ширины/высоты экрана.
Parameters: - FrameName (String) – Имя фрейма.
- EntityName (String) – Имя выборки, которой инициализируется внутренний Selection формы.
- ParamNames (Array) – Массив имен параметров.
- ParamValues (Array) – Массив значений параметров.
<pascal> CreatePanelEx('TBTKLOOKUPGRIDTABFRAME', 'SEL_ObjectClassUnion', [null], [null]); CreatePanelEx('TBTKLOOKUPGRIDTABFRAME', 'SEL_ObjectClassUnion', ['PanelAlign', 'PanelSize'], [alTop, 450]); </pascal>
1.2.1.4.1. TModalResult¶
-
class
TModalResult
¶ Перечисление
Результат, возвращаемый модальным окном при закрытии.
-
mrYesToAll
¶ Окно закрыто кнопкой YES TO ALL.
-
mrNoToAll
¶ Окно закрыто кнопкой NO TO ALL.
-
mrAll
¶ Окно закрыто кнопкой ALL
-
mrRetry
¶ Окно закрыто кнопкой RETRY.
-
mrNo
¶ Окно закрыто кнопкой NO.
-
mrYes
¶ Окно закрыто кнопкой YES
-
mrAbort
¶ Окно закрыто кнопкой ABORT.
-
mrCancel
¶ Окно закрыто кнопкой CANCEL.
-
mrOk
¶ Окно закрыто кнопкой OK.
-
mrNone
¶ Значение по-умолчанию. Задается при создании модалного окна.
-
mrIgnore
¶ Окно закрыто кнопкой IGNORE
-
1.2.1.4.2. TLookUpResult¶
1.2.1.5. Фреймы¶
-
Scheduler
(): TbtkScheduler¶ Возвращает объект-планировщик Scheduler.
Return type: TbtkScheduler
-
Gantt
(): TbtkGantt¶ Метод возвращает ссылку на объект “График Гантта”, расположенный на фрейме. Если на фрейме компонента “График Гантта” не существует, метод вернёт null.
Return type: TbtkGantt
-
Diagram
(): TbtkAdvDiagram¶ Возвращает объект для работы с Adv диаграммой, если он присутствует на фрейме. В противном случае вернёт null.
Return type: TbtkAdvDiagram
-
Chart
(): TCustomChart¶ Метод возвращает активный объект - график, типа
TCustomChart
.Return type: TCustomChart
-
Olap
(): TbtkScriptOLAPObject¶ Доступ к OLAP интерфейсу фрейма текущей выборки.
Return type: TbtkScriptOLAPObject
1.2.1.6. SQL¶
-
ExecSQL
(BlockName: String)¶ Метод выполняет PL/SQL-блок BlockName, объявленный в текущей операции.
Parameters: BlockName (String) – Имя PL/SQL блока. <SQL> <GetCost> [Out cost] begin select price into :cost from table where code = :id; end; </GetCost> </SQL> <Pascal> ExecSQL('GetCost'); value := GetVar('Cost'); ShowMessage(IntToStr(Value * 10)); </Pascal>
-
ExecSQLEx
(BlockName: String; ParamNames, ParamTypes, ParamValues: Variant): Variant¶ Метод выполняет PL/SQL-блок BlockName, объявленный в текущей операции, с возможностью передавать в SQL-блок дополнительные, не участвующие в контексте выборки параметры, а также возвращать их. Имена входящих параметров задаются в ParamNames через точку с запятой. В тексте SQL-запроса можно использовать не только передаваемые в ParamNames параметры, но и использовать параметры, имеющиеся в выборке. В случае совпадения имен параметров, будет использоваться параметр, переданный в вызове
ExecSQLEx
. Возвращает массив значений параметров, указанных в ParamNames, в том порядке, в котором они перечислены в ParamNames. Если возвращаемый параметр участвует в секции [OUT] sql-запроса, то будет возвращено его новое значение. Если не участвует, то будет возвращено то значение, которое передавалось в ParamValues. Если входящих параметров нет, то можно передаватьParamNames = ''
иParamValues = []
. Количество параметров должно совпадать с количеством типов и с количеством значений. Все параметры являются входящими и могут являться возвращаемыми.Parameters: - BlockName (String) – Имя PL\SQL sql-блока.
- ParamNames (Variant) – Имена входящих параметров, разделенные точкой с запятой.
- ParamTypes (Variant) –
Массив типов параметров в формате:
[тип1, тип2, …]
Доступные константы типов параметров: - ParamValues (Variant) – Массив значений параметров в формате:
[значение1, значение2]
.
Return type: Variant
<SQL> <Save> [out sNotionReg] begin :sNotionReg := BTK_Loader.OutNotionToScriptText(:idNotion); end; </Save> </SQL> <Pascal> begin sRes := ExecSQLEx('save', 'idNotion; sNotionReg ', [ftInteger, ftString], [GetVar('id'), '']); // возвращаемое значение sNotionReg находится в sRes[1]. // В sRes[0] находится передаваемый параметр idNotion. SaveToFile('', sRes[1]); end; </Pascal>
-
ExecSQLWithProgress
(BlockName, Caption, Message, EventName: String; FinalValue: Integer): Variant¶ методы позволяют выполнять SQL-блоки, которые посылают по Pipe каналу сообщения о процессе выполнения. Методы открывают модальное окно с полосой прогресса, которое слушает Pipe канал с заданным именем, и запускаю выполнение SQL-блока. Сообщения, приходящие с сервера должны содержать число в диапазоне [0 .. FinalValue]. По приходу сообщения с числом равным или больше FinalValue, диалог будет закрыт. Если
FinalValue = 0
, то диалог будет закрыт при получении первого сообщения.Parameters: - BlockName (String) – Имя SQL-блока.
- Caption (String) – Текст заголовка окна.
- Message (String) – Cообщение.
- EventName (String) – Имя Pipe-канала.
- FinalValue (Integer) – Финальное значение.
Return type: Variant
<sql> <msg> declare i integer; j integer; begin i := 1; loop dbms_pipe.pack_message(to_char(i)); j := dbms_pipe.send_message('TestEvent'); i := i + 1; dbms_lock.sleep(1); if i = 11 then exit; end if; end loop; end; </msg> </sql> <pqscal> ExecSQLWithProgress('msg', 'Заголовок', 'Сообщение', 'TestEvent', 10 ); </pascal>
-
ExecSQLExWithProgress
(BlockName, ParamNames, ParamTypes, ParamValues, Caption, Message, EventName: String; FinalValue: Integer): Variant¶ Методы позволяют выполнять SQL-блоки, которые посылают по Pipe каналу сообщения о процессе выполнения. Методы открывают модальное окно с полосой прогресса, которое слушает Pipe канал с заданным именем, и запускаю выполнение SQL-блока. Сообщения, приходящие с сервера должны содержать число в диапазоне [0 .. FinalValue]. По приходу сообщения с числом равным или больше FinalValue, диалог будет закрыт. Если
FinalValue = 0
, то диалог будет закрыт при получении первого сообщения.Parameters: - BlockName (String) – Имя SQL-блока.
- ParamNames (String) – Имена входящих параметров, разделенные точкой с запятой.
- ParamTypes (String) – Массив типов параметров в формате:
[тип1, тип2, …]
Доступные константы типов параметров: - ftString - ftInteger - ftFloat - ftDateTime - ftOraBlob - ftOraClob - ParamValues (String) – Массив значений параметров в формате:
[значение1, значение2]
Количество параметров должно совпадать с количеством типов и с количеством значений. Все параметры являются входными и могут являться выходными. - Caption (String) – Текст заголовка окна.
- Message (String) – Сообщение.
- EventName (String) – Имя Pipe-канала.
- FinalValue (Integer) – Финальное значение.
Return type: Variant
<sql> <msg> [OUT idpValue] declare i integer; j integer; begin i := 1; :idpValue := 'Возвращаемое значение'; loop dbms_pipe.pack_message(to_char(i)); j := dbms_pipe.send_message('TestEvent'); i := i + 1; dbms_lock.sleep(1); if i = 11 then exit; end if; end loop; end; </msg> </sql> <pascal> R := ExecSQLExWithProgress('msg', 'idpValue', [ftString], ['Входящее значение'], 'Заголовок', 'Сообщение', 'TestEvent', 10 ); ShowMessage(R[0]); </pascal>