TArScriptFrame é a classe de interação entre Argow e scripts.

O Argow tambem disponbibiliza:

TArScriptFrame

A cada execução de script é instanciada uma classe TArScriptFrame que pode ser acessada pela variável sf.

TArScriptFrame= class
public
  property ActiveCell: TArCell read // Célula ativa ou nil
  property inDebug: boolean read // Verdadeiro quando em modo depuração
  property inDesign: boolean read // Verdadeiro quando em modo design
  property Context: TArActionContext read // Contexto do script
  property KeyAction: TArActionKey read // Tecla de ativação
  property MenuID: string read // Identificador do menu, dicAppMenu.itemID
  property UserConfigFile: string read // Nome do arquivo de configuração do usuário
  property UserConfigSave: boolean read // Se pode ou não salvar configurações do usuário
  property ModuleName: string read // Nome do módulo
  property SolutionName: string read // Nome da solução
  property ServerNow: TDateTime read // Data e hora do servidor (antiga now)
  property ExceptionCode: integer read // Código do último erro, se houver
  property ExceptionMsg: string read // Mensagem do último erro, se houver
  property User: TArUserInterface read // Informação do usuário
  property License: TArLicenseInterface read // Informação do usuário
  property gVars: TArScriptGlobalVars read/write // Variáveis globais
  property Window: TArWindow read // Acesso à janela ativa
  property Report: TArReport read // Manipulação de relatório
  property eMail: TArSendEMail read // Gerenciamento de e-mail
  property Shell: TArShellInterface read // Acesso ao Windows
  property ar: TArArgowInterface read // Acesso à janela principla de Argow
  property db: TArDataBaseInterface read // Acesso ao banco de dados
  property AbortRequested: boolean read/write // Quando atribuído true o processo é cancelado
      (compatibilidade, não usar, recomendado: retornar false da função)

end

TArUserInterface

Esta classe da acesso aos dados do usuário logado.

TArUserInterface= class
public
  property name: string read // Nome do usuário, araUser.User_Name
  property fullName: string read // Nome completo do usuário, araUser.User_Real_Name
  property eMail: string read // e-mail do usuário, araUser.User_Email
  property ip: string read // Lista de IP ativos no computador araUserInfo.User_ID
      (atualizado junto com os metadados).

  property id: integer read // Identificação do usuário, araUser.User_ID
  property profile: string read // Perfil ao qual o usuário pertence, araProfile.Prof_Name
  property profileID: integer read // Identificação do perfil, araUser.Prof_ID
  property isAdmin: boolean read // Verdadeiro quando o usuário é Admin, ver dicConfig variável ADMIN_USER
  property isPower: boolean read // Verdadeiro quando o usuário é Power, araUserInfo.User_is_Power
  property sessionId: string read // string de um GUID que identifica a sessão em execução.
  property auditMode: boolean read // Verdadeiro quando o usuário esta sendo Auditado araUser.Audit_Mode
end

TArLicenseInterface

Esta classe da acesso aos dados da Licença ativa.

TArLicenseInterface= class
public
  property licenseTo: string read // Nome do cliente
  property module: string read // Nome do Módulo da licença
  property edition: TArEdition read // edição:
    ( areExpress, areBusiness, areAcademic, areProfessional, areEnterprise )
  property upToVersion: integer read // Versão do Argow permitida pela licença
  property validUntil: TDateTime read // Data de validade
  property hasInterProc: boolean read // Se a licença permite interProc
  property clientName: string read // Nome do cliente, quando OEM (areEnterprise)
  property clientId: string read // ID do cliente, quando OEM (areEnterprise)
end

TArDataBaseInterface

Esta classe da acesso ao banco de dados.

TArDataBaseInterface= class
public
  property ActiveDataSet: TArScriptDataSet read // Data set ativo ou nil
  property UserDataSet: TArScriptDataSet read // Data set para o usuário manipular
  property Server: string read // Valor de 'Data Source'
  property Catalog: string read // Valor de 'Initial Catalog'
  property Provider: TArDataBaseProvider read // Provedor de dados
    // TArDataBaseProvider= (ardbpUnknown, ardbpMSSql, ardbpOracle, ardbpInterbase, ardbpODBC)
  property ConnectionString: wideString read // Disponível quando CONNECTION_STR_ON_SCRIPT for T
  function newDataSet(): TArScriptDataSet; // Retorna dataset. Não destruir (free)
     // Controle de Transação de Dados no Banco
  function BeginTran: boolean; // Retorna T, quando o Banco oferece transação e uma é iniciada
  function inTran: boolean;
  function commitTran;
  function RollBackTran;
end

TArScriptDataSet

Esta classe da acesso aos dados tabulares.

TArScriptDataSet= class
public
  function open( const cCommand: string; const bLocal: boolean ): boolean;
     // abre o 'conjunto de dados' resultado do comando cCommand e
    // traz o resultado ao computador local se bLocal for verdadeiro

  function openTable( const cTableName: string; const iMaxRecords: integer; const cWhere: string ): boolean;
     // abre a tabela com o determinado número de registros (0=todos)
    // usando o filtro cWhere

  function bof: boolean; // Verdadeiro quando o primeiro registro é atingido
  function eof: boolean; // Verdadeiro quando o último registro é atingido
  procedure refresh( const bCurrent: boolean); // Atualiza a tabela ou o registro corrente
  procedure first; // Ativa a primeiraseguinte linha
  procedure last; // Ativa a linha última
  procedure next; // Ativa a seguinte linha
  procedure prior; // Ativa a linha anterior
  procedure close; // Fecha o conjunto de dados
  procedure edit; // Habilita a edição da linha ativa
  procedure append; // Adiciona um registro vazio
  procedure post; // Envia as alterações ao banco
  procedure cancel; // Descarta as alterações
  procedure recordCount: integer read // -1 ou número de registros
  procedure keyValue: variant read/write // Valor da chave primária da linha corrente
  property isEditing: boolean read // Verdadeiro quando está editando
  property isInserting: boolean read // Verdadeiro quando está inserindo
  property isAppending: boolean read // Verdadeiro quando está inserindo
  property tableName: string read // Nome da tabela aberta
  property dataSet: TDataSet read // Acesso ao dataset do Delphi
  property active: boolean read // Verdadeiro quando ativo
  property master: TArScriptDataSet read // dataset mestre, quando este dataset for detalhe
  property details[ const cName: string ]: TArScriptDataSet read // datasets detalhes
  property context: TArActionContext read // Contexto do dataset
  property row[ const cColumnName: string ]: TArField read/write // Acesso a linha ativa
  property oldValues[ const cColumnName: string ]: Variant read // Acesso aos valores anteriores a edição
  property values[ const cColumnName: string ]: Variant read/write default
    // Acesso aos valores durante edição e inserção
  property changed[ const cColumnName: string ]: Boolean read // Verdadeiro quando a valor da coluna mudou
  property refreshRequested: TArDataSetRefreshType read/write
    // Tipo de refresh a ser efetuado ao terminar o processo
   // Restrição/Acesso Leve
  property allowEdit: boolean read/write // Permissão de edição
  property allowInsert: boolean read/write // Permissão de inserção
  property allowDelete: boolean read/write // Permissão de remoção
  property allowPrint: boolean read/write // Permissão de impressão
end

TArField

Esta classe extende a classe padrão TField.

TArField= class( TField )
public
  property allowEdit: boolean read/write // Permissão de escrita na coluna
  property allowInsert: boolean read/write // Permissão de escrita na coluna em nova lin
  property hidden: boolean read/write // Oculta a coluna
  property isBlob: boolean read // Publica TField.isBlob que é uma class function
end

TArCell

Esta classe da acesso ás propriedades visuais da célula ativa (tem valor somente no evento onPaint)

TArCell= class
public
  property fieldName: string read // Nome da campo (coluna) ativa
  property backColor: TColor read/write // Cor de fundo
  property fontColor: TColor read/write // Cor da fonte
  property alignment: TAlignment read/write // Alinhamento (taLeftJustify, taCenter, taRightJustify)
  property text: string read/write // Texto a mostrar
  property values[ const cName: string ]: Variant read // Valores das colunas da linha ativa
  property value: variant read // Valor da célula
  property section: TArDisplaySection read // Seção da célula ativa
  property rowIndex: integer read // Indice da linha ativa (quando em planilha e LoadAllRecords)
  property selected: boolean read // Verdadeiro quando selecionada
  property focused: boolean read // Verdadeiro quando com foco
  property forGrid: boolean read // Verdadeiro quando as propriedades foram para a planilha
end

TArScriptGlobalVars

Esta classe da acesso ás variáveis globais.

TArScriptGlobalVars= class
public
  function getFromUser( const cCaption, cGroup, cReource: string ): boolean;
      // Abre uma janela (com ícone cResource) para o usuário informar os dados
  procedure saveLocal; // Salva os valores das variáveis no arquivo do usuário
  procedure saveGlobal; // Salva os valores das variáveis no arquivo do global
  property values[ const cGroup, cVarName: string ]: variant read/write default // acessa os valores
  property v[ const cFullName: string ]: variant read/write // "grupo.nome"
end

TArWindow

Esta classe da acesso à janela ativa.

TArWindow= class
public
  function postMessage( msg, wparam, lparam: Longint ): boolean; // Envia uma mensagem
  property closeRequested: boolean read/write // Solicita que a janela seja fechada
  property cardActive: boolean read // Verdadeiro quando a ficha está ativa (em uma janela PAD)
  property gridActive: boolean read // Verdadeiro quando a planilha está ativa (em uma janela PAD)
  property selectedKeys: TStringList read // Chaves primárias (PK) das linhas selecionadas
    // na planilha ativa da janela PAD. Dispoível se
    // dicTable.LoadAllRecords = 'T'. Se não sf.window.selectedKeys.count = 0.

end

TArReport

Esta classe da acesso ao relatório.

TArReport= class
public
  function open( cDeviceName: string;
         // impressora: printer, tela: screen, edição: design ou arquivo: pdf
     cReportName: string; // Nome do relatório
     iFolder: integer; // ID da pasta ou -1
     cFileName: string; // Nome do arquivo resultado
     cScriptName: string; // Script a executar onOpen
   ): boolean
  property values[ const cFieldName: string; const index: integer ]: variant read/write default
     // Valores dos filtros
  property filter[ const cFieldName: string ]: boolean read/write // Verdadeiro, filtra se não mostra todos
  property showFilterDialog: boolean read/write // Verdadeiro, mostra a janela de filtros
  property showPrinterDialog: boolean read/write // Verdadeiro, mostra a janela da impressora
  property fileName: string read/write // Nome do arquivo
end

TArSendEMail

Esta classe da acesso API MAPI do Windows para enviar e-mail.

TArSendEMail= class
public
  function send( const cToEmail, cToName, cSubject, cBody, cFileName: string ): boolean
  procedure addFile( const cFileName: string );
  procedure addTo( const cEmail, cName: string; const bCopy, bBlind: boolean );
  procedure clear;
  property result: integer read // Código de resultado da função send (Ver windows.MapiSendMail)
  property fileCount: integer read // Quantidade de arquivos anexados
  property fromName: string read/write // Quem envia, default sf.UserName
  property fromEMail: string read/write // Email de quem envia, default sf.UserEmail
  property receiptRequested: boolean read/write // Solicita confirmação de leitura
  property openDialog: boolean read/write // Verdadeiro, abre a janela de e-mail
end

TArShellInterface

Esta classe da acesso ao Windows.

TArShellInterface= class
public
  function deleteFile( const cFileName: string; const bToRecycle: boolean ): boolean;
      // windows.deleteFile ou windows.SHFileOperation
  function copyFile( const cFileName, cNewFile: string; const bFailIfExists, bWithProgress: boolean ): boolean;
      // windows.copyFileEx ou windows.SHFileOperation
  function moveFile( const cFileName, cNewName: string; const bFailIfExists, bWithProgress: boolean ): boolean;
      // windows.moveFileEx ou windows.SHFileOperation
  function renameFile( const cFileName, cNewName: string ): boolean;
      // windows.moveFile
  function crcFile( const cFileName: string ): cardinal;
      // CRC32 do arquivo (compatível com PKZIP)
  function fileExists( const cFileName: string ): boolean;
  function tempFile( const cPath, cPrefix: string; const iUnique: integer ): string;
      // windows.GetTempFileName
  function tempFolder: string;
  function errorToStr( const iError: cardinal ): string;
  function call( const cLibraryName, cFunctionName: string; var cParam: string; const unLoad: boolean ): integer;
      // Disponível com InterProc habilitado. Veja também ar.call
      // Chama a função cFunctionName da DLL. Se '' e unLoad=T, descarga o módulo.
      pParam (o texto de um TStringList, ou param separados por #13#10)
      // pode ser modificada, mas não deve aumentar o tamanho.

      // Protótipo: function( pParam: pWideChar; var iSize: integer ): integer; stdcall;
  function execute( const cOperation, cFile, cParameters, cPath: string; const bModal: boolean ): cardinal;
      // Disponível com InterProc habilitado.
      // windows.shellExecuteEx, cOperation<-'open', 'print', 'explore'
  function keyIsPressed( const iVK_KEY: integer ): boolean;
  procedure sayError( const cMessage, cTitle: string ); //| Mensagens usando a janela do windows
  procedure sayInfo( const cMessage, cTitle: string ); // | Use \n
  procedure sayWarn( const cMessage, cTitle: string ); // | para iniciar una linha
  function sayQuestion( const cMessage, cTitle: string ): boolean;
  function say( const cMessage, cTitle: string; const iFlags: Longint ): integer;
  function newGUID: string; // retorna um novo GUID como string
  function millisecOfToday: cardinal; // retorna quantidade de milisegunds transcurridos no dia
  function idleMillisec: cardinal; // retorna quantidade de milisegunds transcurridos no dia
  property clipboard: string read/write; // acesso ao clipboard como string
  property lastError: cardinal read
  property lastExitCode: cardinal read // ExitCode, quando execute for modal
  property userName: string read // nome do usuário logado no Windows
  property pcName: string read // nome do computador
  property isRemoteSession: boolean read // Verdadeiro quando em uma sessão remota
  property decimalSeparator: string read // caractere separador decimal
  property dateSeparator: string read // caractere separador de data
  procedure beep;
end

TArArgowInterface

Esta classe da acesso a janela principla de Argow.

TArArgowInterface= class
public
  property status: string read/write // Texto da barra de status
  property version: string read // Versão do Argow, Maior.Menor, nas ferramentas: Maior.?
  property hasInterProc: boolean read // Verdadeiro quando a licença habilitar InterProc
  property exeFolder: string read // pasta do executável
  property tip: string read/write // Texto a ser mostrado no rodapê (quando registrado) (ver tambem TODAYS_TIP)
  property progress: word read/write // Posição da barra de progresso
  property maxProgress: word read/write // Máximo da barra de progresso (padrão 100)
  procedure stepProgress; // Incrementa em um a barra de progresso
  procedure doEvents; // Desabilita a janela e processa as mensagens, reativar com sf.ar.status=''
  procedure sendToMonitor(const cProcess, cContext, cValue: string); // Envia os dados ao Monitor
  procedure refreshTables( const cTablesName: string ); // Atualiza a lista (separada por ,) de tabelas abertas
  function sendMessage( msg, wparam, lparam: Longint ): boolean; // Envia a mensagem a janela principal
  function doMenu( const cItem: string ): boolean; // Ativa o item de menu
  function getMenuEnabled( const cItem: string ): boolean; // Retorna o estado do item de menu
  procedure setMenuEnabled( const cItem: string; const bEnabled: boolean ): boolean; // Atualiza
      // o estado do item de menu
      // cItem puede ser a PK do menu (dicAppMenu) ou o nome do menu (dicAppMenu.MENUNAME)
      // ou um dos itens de menu internos (ver araMenuAccess)
      // Ver ver dicConfig ALLOW_SCRIPT_TO_DISABLE_MENU.
  function call( const cLibraryName, cFunctionName: string; var cParam: string; const unLoad: boolean ): integer;
      // Disponível com InterProc habilitado. Veja também shell.call
      // Requer os componentes Delphi Star
      // Chama a função da DLL. pParam pode ser modificada, mas não pode aumentar o tamanho.
      // Protótipo: function( const sf: TArDllFrame; pParam: pChar; var iSize: integer ): integer; stdcall;
  function send( const cExeName, cProcName: string; const iCommand: word; const cText: string ): integer;
      // Disponível com InterProc habilitado. Veja também shell.execute
      // Requer a classe dotNet argow.interproc.dll
      // Abre o programa cExeName e estabelece um canal duplo de comunicação com o
      //   processo cProcName e envia comandos e textos definidos pelo programador.
      //   O comando = 0, descontecta. Outros (iCommand > 0) são repassados ao processo.
      // Após aberto, Argow fica a escuta para, por exemplo, executar scripts.
end

Enumerados Argow

TArActionContext

Contexto no qual o script esta sendo executado.

TArActionContext=(
  aracUnkown,
  aracMenu,
  aracMaster,
  aracDetail,
  aracLookup,
  aracTreeMaster,
  aracWhere,
  aracFilter,
  aracProcess,
  aracShowSelect,
  aracScript,
  aracAppStart,
  aracAppEnd,
  aracHtml,
  aracReport,
  aracDll,
  aracInterProc
)

TArActionKey

Tecla que disparou o evento.

TArActionKey=(
  arakNone,
  arakConstrain,
  arakFieldEvent,
  arakCalculated,
  arakExport,
  arakWizard,
  arakView,
  arakOpen,
  arakPrint,
  arakEdit,
  arakInsert,
  arakDelete,
  arakPost,
  arakOnScroll,
  arakOnFilter,
  arakOnView
)

TArDataSetRefreshType

Tipo de refresh a efetuar no dataset ativo após execução do script.

TArDataSetRefreshType=(
  arrtNone,
  arrtCurrent,
  arrtSelected,
  arrtRequery
)

TArDisplaySection

Tipo de seção que a célula pertence.

TArDisplaySection=(
  ardsCardCategory,
  ardsCardCaption,
  ardsCardValue,
  ardsGridHeader,
  ardsGridBody,
  ardsGridFooterMain,
  ardsGridFooterGroup
)