Lazarus

Other Languages => Portuguese => Topic started by: andrewsoares on December 01, 2021, 07:33:37 pm

Title: Onvalidate com TField
Post by: andrewsoares on December 01, 2021, 07:33:37 pm
Olá, estou começando a ultilizar o lazarus e estou com problema em um código que funciona no delphi. No evento "onshow" do formulario eu chamo uma procedure para funcionar no onvalidate de um determinado campo, porém no lazarus eu sou obrigado a informar um parâmetro que não deveria ser necessário. Segue abaixo o código:

Code: Pascal  [Select][+][-]
  1. procedure TfrmCadVenda.FormShow(Sender: TObject);
  2. begin
  3.   with dmCadVenda do
  4.   Begin
  5.     query.FieldByName('CAMPO').OnValidate := Validate_Item;
  6.   End;
  7. end;

----------------------------------------------------------------------------

Code: Pascal  [Select][+][-]
  1. procedure TdmCadSolicMaterial.Validate_Item(Sender: Integer);
  2. begin
  3.   query.Close();
  4.   query.SQL.Text := 'select DESCRICAO_ITEM' + #13 +
  5.   ' where ITEM.CODIGO_ITEM = ' + IntToStr(Sender);
  6.   try
  7.     qryValidaItem.Open();
  8.   Except
  9.     On E:Exception do
  10.     ShowMessage('Erro Item: ' + E.Message);
  11.   end;
  12.   if qryValidaItem.IsEmpty then
  13.   begin
  14.     MessageDlg('Campo código do item precisa ser preenchido!', mtError, [mbOK],0);
  15.     Abort;
  16.   end
  17.   else
  18.   Begin
  19.     qrySolicItem.FieldByName('DESCITEM_SOL_EST_ITEM').AsString :=
  20.         qryValidaItem.FieldByName('DESCRICAO_ITEM').AsString;
  21.   End;

         
Title: Re: Onvalidate com TField
Post by: Handoko on December 22, 2021, 05:14:31 am
Try:

Code: Pascal  [Select][+][-]
  1.     query.FieldByName('CAMPO').OnValidate := @Validate_Item;

Read more (see point #2):
https://www.freepascal.org/docs-html/prog/progse76.html#x290-306000D.5 (https://www.freepascal.org/docs-html/prog/progse76.html#x290-306000D.5)

And (point #1):
https://www.freepascal.org/docs-html/prog/progse72.html#x286-302000D.1
TinyPortal © 2005-2018