Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

É possível pelo VsScripter incluir um novo formulário para ser chamado a fim de atender uma necessidade específica do evento que está sendo implementado. Isso pode ser usado, por exemplo, se o usuário pediu para salvar uma informação e conforme alguma regra específica da empresa um determinado campo precisa ser informado e não está.

Pode-se nesse caso criar um formulário com esse(s) campo(s), carregar informações iniciais e criar validações para que só feche o formulário seguindo as regras definidas, seja com um resultado de confirmação das informações ou cancelamento.

Como exemplo, supomos abaixo a personalização de um evento “Antes de salvar” que tenha como regra que um campo chamado “AUTORIZACAO” já existente tenha como informação válida sempre 7 caracteres. Após abrir a tela do editor do script acesse o menu “File” - “New Form”.

Será apresentado um novo formulário conforme a imagem abaixo.

Ao lado esquerdo da imagem acima é possível identificar as propriedades do formulário, o importante para podermos chamar o formulário na sequencia é definir a propriedade “Name” com um nome a ser chamado na sequência. Para esse exemplo será definido o nome como “FormValidacao”.

Após definir a propriedade “Name” a sugestão é que seja salvo esse novo formulário, para isso basta clicar em “Salvar” no editor VsScripter. O “Nome do arquivo” definido ao salvar também é importante, pois precisará ser adicionado como uses na unit que esse formulário será chamado. Para esse exemplo o nome desse formulário será definido como “uFormValidacao”.

Após salvo, o formulário pode receber as adequações que forem necessárias, seja mudando suas propriedades, como “Caption”, “Position” e “BorderIcons” entre outras. Também é possível arrastar componentes do lado direito da tela sobre o formulário e personalizá-lo da forma necessária.

Para esse exemplo a tela ficou conforme figura abaixo:

A fim de auxiliar nos códigos abaixo vale ressaltar o nome de alguns componentes definidos na tela da imagem acima:

  • edAutorizacao: Componente do tipo TEdit no qual se espera a informação do valor correto para a autorização;

  • bConfirmar: Componente do tipo TButton com o captionConfirmar” e com personalização no evento “OnClick”, que ao clicado vai validar se a regra definida ao componente foi obedecida e caso sim retornado a unit principal o retorno “mrOK”;

  • bCancelar: Componente do tipo TButton com o captionCancelar” e com personalização no evento “OnClick”, que ao ser clicado vai cancelar a operação e retornar a unit principal do script o retorno “mrCancel”.

Com base nas explicações acima o código inteiro da do formulário é o abaixo:

{$FORM TFormValidacao, uFormValidacao.sfm}

uses
  Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

procedure bCancelarClick(Sender: TObject);
begin
  ModalResult := mrCancel; 

end;

procedure bConfirmarClick(Sender: TObject);
begin
  if (Length(Trim(edAutorizacao.Text)) = 7) then 
    ModalResult := mrOk                        
  else
    ShowMessage('Informe uma autorização com 7 dígitos'); 
end;

begin
end;  

Para concluir de forma completa esse exemplo, resta apresentar o conteúdo da unit “uPrinc”. Na “uPrinc” foi necessário adicionar no uses o “uFormValidacao” e declarar uma variável do tipo “TFormValidacao”.

Na sequência , a título de melhorar o exemplo foi resgatado o valor informado ao campo “AUTORIZACAO” através da função “ValorNaTela” e comparado se o valor informado já não cumpre o que se espera como regra personalizada (valor possuir 7 caracteres). Caso não atenda a regra personalizada o objeto do tipo TFormValidacao é criado, o valor atual informado é atribuído ao valor atual do componente, e a tela é apresentada a partir do método ShowModal. Conforme o resultado do ShowModal o novo valor é atribuído em tela ou uma mensagem de erro é adicionada a tela do cadastro não permitindo salvar a informação sem que seja resolvida a situação.

Segue o código completo do da unit “uPrinc” utilizada nesse exemplo:

uses
  uFormValidacao;

var                       
  form : TFormValidacao;
  cAutorizacao : String;
begin            
  cAutorizacao := Trim(FFormPadraoRHCAGEDRESP.ValorNaTela('AUTORIZACAO')) 
  if (Length(cAutorizacao) < 7) then
    begin                                
    form := TFormValidacao.Create(nil);
    try                  
      form.edAutorizacao.Text := cAutorizacao;
      if (form.Showmodal = mrok) then
        FFormPadraoRHCAGEDRESP.ValorParaTela('AUTORIZACAO', form.edAutorizacao.Text)
      else                    
        FFormPadraoRHCAGEDRESP.AddErro(FFormPadraoRHCAGEDRESP.EditorDaColuna('EB_','AUTORIZACAO'),
                      'Autorização deve ter 7 dígitos');
    finally
      form.free;
    end;
  end;                       
end;        

  • No labels