Jump to content

Component uniedit e ufrmsearch


Alessandro Pancotte

Recommended Posts

Hello!
I'm testing the unigui in a new application.
I development a component of search. This component consist in a edit that trigger a form with a search edit and grid.
I converted him, but i can't make the search form open in the form UniLoginForm.
 

this runs inside the edit component and calls the form.
and I call this edit within the login

                           FBusca:=TFrmUniBusca.Create(UniApplication);
                           if FORDER<>'' then
                              begin
                                 FBusca.GridPesquisa.Columns[0].FieldName:=FORDER;
                                 FBusca.Campo3:=FORDER;
                                 FBusca.FTIPOPCONTA:=FTIPOPCONTA;
                              end
                           else
                              FBusca.GridPesquisa.Columns[0].FieldName:=Campo1;
                           FBusca.GridPesquisa.Columns[0].Title.Caption:=CampoMascara1;
                           FBusca.GridPesquisa.Columns[1].FieldName:=Campo2;
                           FBusca.GridPesquisa.Columns[1].Title.Caption:=CampoMascara2;
                           FBusca.QRY.Database:=FBANCO;
                           FBusca.QRY.Transaction:=FTRANS;
                           FBusca.TABELA:=FTABELA;
                           FBusca.Campo1:=Campo1;
                           FBusca.Campo2:=Campo2;
                           if FFILTRO<>'' then
                              FBusca.FFILTRO:=FFILTRO;
                           if FDIGITADO='' then
                              begin
                                 FBusca.EdnPesquisa.Text:=' ';
                                 FBusca.EdnPesquisa.Text:='';
                              end
                           else
                              FBusca.EdnPesquisa.Text:=FDIGITADO;
                           FBusca.TECLA:=FTECLACADASTRO;
                           FBusca.FFORMCADASTRO:=FFORMCADASTRO;
                           FBusca.ShowModal;
 

Link to comment
Share on other sites

6 hours ago, Alessandro Pancotte said:

Hello!
I'm testing the unigui in a new application.
I development a component of search. This component consist in a edit that trigger a form with a search edit and grid.
I converted him, but i can't make the search form open in the form UniLoginForm.
 

this runs inside the edit component and calls the form.
and I call this edit within the login

                           FBusca:=TFrmUniBusca.Create(UniApplication);
                           if FORDER<>'' then
                              begin
                                 FBusca.GridPesquisa.Columns[0].FieldName:=FORDER;
                                 FBusca.Campo3:=FORDER;
                                 FBusca.FTIPOPCONTA:=FTIPOPCONTA;
                              end
                           else
                              FBusca.GridPesquisa.Columns[0].FieldName:=Campo1;
                           FBusca.GridPesquisa.Columns[0].Title.Caption:=CampoMascara1;
                           FBusca.GridPesquisa.Columns[1].FieldName:=Campo2;
                           FBusca.GridPesquisa.Columns[1].Title.Caption:=CampoMascara2;
                           FBusca.QRY.Database:=FBANCO;
                           FBusca.QRY.Transaction:=FTRANS;
                           FBusca.TABELA:=FTABELA;
                           FBusca.Campo1:=Campo1;
                           FBusca.Campo2:=Campo2;
                           if FFILTRO<>'' then
                              FBusca.FFILTRO:=FFILTRO;
                           if FDIGITADO='' then
                              begin
                                 FBusca.EdnPesquisa.Text:=' ';
                                 FBusca.EdnPesquisa.Text:='';
                              end
                           else
                              FBusca.EdnPesquisa.Text:=FDIGITADO;
                           FBusca.TECLA:=FTECLACADASTRO;
                           FBusca.FFORMCADASTRO:=FFORMCADASTRO;
                           FBusca.ShowModal;
 

Hi,

Can you please specify which edition and build of UniGUI are you using?

Link to comment
Share on other sites

Hi,

I made an inherited modified tedit component and made a tedit.
In this tedid I added some properties: table name, fields to search and result
The user types some information in the edit and after pressing enter triggers an "perform search" event for this modified edit.
This event searches the parameterized table, and if more than 1 record appears, open a form with a grid for the user to select the record he needs.
The edit component is working, but I was unable to open the form with the grid.

I can post the component in attachement.

Link to comment
Share on other sites

}unit UniLogEdit;

interface

uses
  SysUtils, Classes, Controls, StdCtrls,ibx.IBCustomDataSet, ibx.IBQuery, ibx.IBDatabase,
  DBGrids,Windows,uniEdit, uniGUIDialogs, uniGUIForm, DB, Forms, uniGUIApplication;


type
  TUniLogEdit = class(TUniEdit)
  private
    FTABELA: STRING;
    FRESULTADO: STRING;
    FRESULTADOCODIGO:STRING;
    FBANCO: TIBDatabase;
    FDIGITADO: STRING;
    FLIGAR: STRING;
    FREGISTROS: INTEGER;
    FTRANS: TIBTransaction;
    FACHOU:BOOLEAN;
    FCAMPOGRAVAR: TField;
    FLIGARMASCARA: STRING;
    FUSAMASCARA: String;
    FTECLACADASTRO: Word;
    FFORMCADASTRO: String;
    FCAMPORESULTADO: String;
    FABRETELABUSCA: String;
    FORDER: STRING;
    FPLANOCONTA: Boolean;
    FTIPOPCONTA: String;
    FFILTRO: String;
    FAntesFecharTelaPesquisa: TNotifyEvent;
    FAposExecutarBusca: TNotifyEvent;
    FLigaComponente: String;
    FCAMPOPESQUISA: STRING;
    FTIPOCAMPO: STRING; // 'CHAR' - CARACTER | <> 'CHAR' - INTEGER
    procedure SetaUsoMascara(const Value: boolean);
    procedure SetaAbrePesquisa(const Value: boolean);
    procedure SetAntesFecharTelaPesquisa(const Value: TNotifyEvent);
    procedure SetAposExecutarBusca(const Value: TNotifyEvent);

    { Private declarations }
  protected
    { Protected declarations }
    procedure KeyPress(var Key: Char); override;
    procedure KeyDown(var Key: Word;Shift: TShiftState);override;
  //constructor Create(AOrner :TComponent);override;
  public
    Qry:TIBQuery;
    ResultadoLista:TStringList;


    procedure ExecutarBusca; { Public declarations }

  published
    { Published declarations }
    property A_LigarComponente     : String      read FLigaComponente write FLigaComponente;
    property A_BANCODADOS          : TIBDatabase read FBANCO       write FBANCO;
    property A_TRANSACAO           : TIBTransaction read FTRANS    write FTRANS;
    property A_TABELA              : STRING  read FTABELA          write FTABELA;
    property A_TABELA_ORDER        : STRING  read FORDER           write FORDER;
    property A_LIGAR               : STRING  read FLIGAR           write FLIGAR;
    property A_LIGARMASCARA        : STRING  read FLIGARMASCARA    write FLIGARMASCARA;
    property A_DIGITADO            : STRING  read FDIGITADO        write FDIGITADO;
    property A_CAMPOGRAVAR         : TField  read FCAMPOGRAVAR     write FCAMPOGRAVAR;
    property A_CAMPO_PESQUISA      : STRING  read FCAMPOPESQUISA   write FCAMPOPESQUISA;
    //property A_USA_MASCARA         : boolean read FUSAMASCARA      write FUSAMASCARA DEFAULT True ;
    property A_USA_MASCARA         : String  read FUSAMASCARA      write FUSAMASCARA  ;
    property A_ABRIR_TELA          : String  read FABRETELABUSCA   write FABRETELABUSCA;
    //property A_ABRIR_TELA          : boolean read FABRETELABUSCA   write FABRETELABUSCA DEFAULT True ;
    property A_TECLA_CADASTRO      : Word    read FTECLACADASTRO   write FTECLACADASTRO ;
    property A_FORMCADASTRO        : String  read FFORMCADASTRO    write FFORMCADASTRO ;
    property A_PLANOCONTA_TIPO     : String  read FTIPOPCONTA      write FTIPOPCONTA;
    property A_FILTRO              : String  read FFILTRO          write FFILTRO;
    property REGISTROS             : INTEGER read FREGISTROS       write FREGISTROS;
    property RESULTADOCODIGO       : STRING  read FRESULTADOCODIGO write FRESULTADOCODIGO;
    property A_TIPOCAMPO           : STRING  read FTIPOCAMPO       write FTIPOCAMPO;
    property OnAntesFecharTelaPesquisa: TNotifyEvent read FAntesFecharTelaPesquisa write SetAntesFecharTelaPesquisa;
    property OnAposExecutarBusca: TNotifyEvent read FAposExecutarBusca write SetAposExecutarBusca;
  end;
Function ZeraEsquerda( Texto : String ; Tamanho: Integer ): String;
Function IncluirLista( Cod : String ): String;
Function RetiraZeroEsquerda(Str:String):String;
procedure Register;

implementation

uses
  UFrmUniBusca, UniLogQuery;

Var
   Ds:TDataSource;
   Resultado:TStringList;


procedure Register;
begin
  RegisterComponents('LogSistemas', [TUniLogEdit]);
end;

{ TUniLogEdit }
Function IncluirLista( Cod : String ): String;
begin
   Resultado.Add(Cod);
end;
Function RetiraZeroEsquerda(Str:String):String;
var
Copia,i:integer;
begin
   Result:='';
   Copia:=0;
   for i:=1 to Length(Str) do
      begin
         if Str='0' then
            Inc(Copia)
         else
            Break;
         if i=6 then
            Break;

      end;
   Result:=Copy(Str,Copia+1,Length(Str));
   if (length(str) =1) and (str = '0') then
    Result := '0';
end;
Function ZeraEsquerda( Texto : String ; Tamanho: Integer ): String;
var
   I,X : Integer;
begin
   I := Length( Texto ) + 1;
   for X := I to Tamanho do
       Texto := ' ' + Texto ;
   for I := 1 to Length( Texto ) do
       if Texto[ I ] = ' ' then Texto[ I ] := '0' else break ;
   Result := Texto;
end;

function SoNumeroS(Str:String):String;
var
i:integer;
begin
Result:='';
   for i:=0 to Length(Str) do
      begin
         if (Str in ['0'..'9']) then
            Result:=Result+Str;
      end;
   Result:=Trim(Result);
end;

procedure TUniLogEdit.ExecutarBusca;
var
S,Scod,Campo1,Campo2,CampoMascara1,CampoMascara2:String;
Like:Boolean;
I:Integer;
begin
   FACHOU:=False;
   ResultadoLista:=TStringList.Create;
   Resultado:=TStringList.Create;


   Campo1:=Copy(FLIGAR,1,pos(';',FLIGAR)-1);
   Campo2:=Copy(FLIGAR,Length(Campo1)+2,50);

   if Campo1='' then
      begin
         ShowMessage('COMPONENTE CONFIGURADO INCORRETAMENTE...'+#13+
                     'INFORME OS DOIS CAMPOS SEPARADOS POR PONTO E VIRGULA');
         Exit;
      end;
   CampoMascara1:=Copy(FLIGARMASCARA,1,pos(';',FLIGARMASCARA)-1);
   CampoMascara2:=Copy(FLIGARMASCARA,Length(CampoMascara1)+2,50);
   //DM.VG_TipoPesquisa := '' ;
   if CampoMascara1='' then
      CampoMascara1:=Campo1;
   if CampoMascara2='' then
      CampoMascara2:=Campo2;

   FDIGITADO:=Self.Text;

   S := Trim(FDIGITADO) ;
   S := Copy( S, 1, 1 ) ;
      if ( S = '0')or( S = '1')or( S = '2')or( S = '3')or( S = '4')or( S = '5')or
         ( S = '6')or( S = '7')or( S = '8')or( S = '9') then
            Like:=False
         else
            Like:=True;

   Qry:=TIBQuery.Create(nil);
   Qry.Database:=FBANCO;
   Qry.Transaction:=FTRANS;
   with Qry,SQL do
      begin
         Clear;
         if not Like then
         begin
               if FTIPOPCONTA<>'' then
               begin
                  if FTIPOCAMPO <> 'CHAR' then
                    FDIGITADO:=RetiraZeroEsquerda(SoNumeroS(FDIGITADO));

                  Add(' SELECT FIRST 100 COD,'+Campo1+','+Campo2+' FROM '+FTABELA);
                  Add(' WHERE '+FORDER+'='+QuotedStr(FDIGITADO));
               end
               else
               begin
                  if FCAMPOPESQUISA = '' then
                  BEGIN
                    if FTIPOCAMPO <> 'CHAR' then
                      FDIGITADO:=RetiraZeroEsquerda(SoNumeroS(FDIGITADO));

                    Add(' SELECT FIRST 100 COD,'+Campo1+','+Campo2+' FROM '+FTABELA);
                    Add(' WHERE ('+Campo1+'='+QuotedStr(FDIGITADO) + ' or COD = '+QuotedStr(FDIGITADO) + ')')
                  end
                  else
                  begin
                     Add(' SELECT FIRST 100 COD,'+Campo1+','+Campo2+' FROM '+FTABELA);
                     Add(' WHERE ('+Campo2+'='+QuotedStr(FDIGITADO) +')');
                  end;
                  FCAMPOPESQUISA := '' ;
               end ;
               if FTIPOPCONTA<>'' then
                  Add(' AND TIPO='+QuotedStr(FTIPOPCONTA));
               if FFILTRO<>'' then
                  Add(' AND '+FFILTRO);
         end
         else
            begin
               if FTIPOPCONTA<>'' then
                  Add(' SELECT FIRST 100 COD,'+Campo1+','+Campo2+','+FORDER+' FROM '+FTABELA)
               else
                  Add(' SELECT FIRST 100 COD, '+Campo1+','+Campo2+' FROM '+FTABELA);
               Add(' WHERE '+Campo2+' LIKE '+QuotedStr('%'+FDIGITADO+'%'));
               if FTIPOPCONTA<>'' then
                  Add(' AND TIPO='+QuotedStr(FTIPOPCONTA));
               if FFILTRO<>'' then
                  Add(' AND '+FFILTRO);
               if FORDER<>'' then
                  Add(' ORDER BY '+FORDER);
            end;
         Open;
      end;
      if Qry.IsEmpty then
         begin
            FRESULTADO:='NÃO ENCONTRADO...';
            FRESULTADOCODIGO:='0';
         end
      else
         begin
            Qry.Last;
            Qry.First;
            FREGISTROS:=Qry.RecordCount;
            Scod:=Qry.FIELDBYNAME('COD').AsString;
            if FREGISTROS=1 then
                  begin
                     if FUSAMASCARA=UpperCase('S') then
                     begin
                      if ftipocampo = 'CHAR' then
                        FRESULTADO:=trim(Qry.FIELDBYNAME(Campo1).AsString)+' - '+Qry.FIELDBYNAME(Campo2).AsString
                      else
                        FRESULTADO:=ZeraEsquerda(Trim(Qry.FIELDBYNAME(Campo1).AsString),6)+' - '+Qry.FIELDBYNAME(Campo2).AsString
                     end
                     else
                        FRESULTADO:=Qry.FIELDBYNAME(Campo2).AsString;
                     FRESULTADOCODIGO:=Trim(Qry.FIELDBYNAME('COD').AsString);
                     FACHOU:=True;

                     Qry.SQL.Clear;
                     Qry.SQL.Add('SELECT FIRST 100 '+A_TABELA+'.* FROM '+A_TABELA);
                     Qry.SQL.Add(' WHERE '+A_TABELA+'.COD='+SCod);
                     Qry.Open;

                     if Assigned(FAntesFecharTelaPesquisa) then
                        FAntesFecharTelaPesquisa(Self);
                  end
               else
                  begin
                     if FABRETELABUSCA=UpperCase('S') then
                        begin
                           FRESULTADO:='';
                           FACHOU:=False;
                           FBusca:=TFrmUniBusca.Create(UniApplication);
                           if FORDER<>'' then
                              begin
                                 FBusca.GridPesquisa.Columns[0].FieldName:=FORDER;
                                 FBusca.Campo3:=FORDER;
                                 FBusca.FTIPOPCONTA:=FTIPOPCONTA;
                              end
                           else
                              FBusca.GridPesquisa.Columns[0].FieldName:=Campo1;
                           FBusca.GridPesquisa.Columns[0].Title.Caption:=CampoMascara1;
                           FBusca.GridPesquisa.Columns[1].FieldName:=Campo2;
                           FBusca.GridPesquisa.Columns[1].Title.Caption:=CampoMascara2;
                           FBusca.QRY.Database:=FBANCO;
                           FBusca.QRY.Transaction:=FTRANS;
                           FBusca.TABELA:=FTABELA;
                           FBusca.Campo1:=Campo1;
                           FBusca.Campo2:=Campo2;
                           if FFILTRO<>'' then
                              FBusca.FFILTRO:=FFILTRO;
                           if FDIGITADO='' then
                              begin
                                 FBusca.EdnPesquisa.Text:=' ';
                                 FBusca.EdnPesquisa.Text:='';
                              end
                           else
                              FBusca.EdnPesquisa.Text:=FDIGITADO;
                           FBusca.TECLA:=FTECLACADASTRO;
                           FBusca.FFORMCADASTRO:=FFORMCADASTRO;
                           FBusca.ShowModal;

                           if not FBusca.QRY.IsEmpty then
                              begin
                                 if FUSAMASCARA=UpperCase('S') then
                                    begin
                                      if FORDER<>'' then
                                       FRESULTADO:=ZeraEsquerda(Trim(FBusca.Qry.FIELDBYNAME(FORDER).AsString),6)+' - '+FBusca.Qry.FIELDBYNAME(Campo2).AsString
                                    else
                                       FRESULTADO:=ZeraEsquerda(Trim(FBusca.Qry.FIELDBYNAME(Campo1).AsString),6)+' - '+FBusca.Qry.FIELDBYNAME(Campo2).AsString
                                    end
                                 else
                                    FRESULTADO:=FBusca.Qry.FIELDBYNAME(Campo2).AsString;
                           FRESULTADOCODIGO:=Trim(FBusca.Qry.FIELDBYNAME('COD').AsString);
                           Scod:=FBusca.Qry.FIELDBYNAME('COD').AsString;
                           FACHOU:=True;

                           Qry.SQL.Clear;
                           Qry.SQL.Add('SELECT FIRST 100 '+A_TABELA+'.* FROM '+A_TABELA);
                           Qry.SQL.Add(' WHERE '+A_TABELA+'.COD='+SCod);
                           Qry.Open;

                           while not Qry.Eof do
                              begin
                                 if Qry.FieldByName(Campo2).AsString=FBusca.Qry.FIELDBYNAME(Campo2).AsString then
                                    Break;
                                 Qry.Next;
                              end;

                           if Assigned(FAntesFecharTelaPesquisa) then
                              FAntesFecharTelaPesquisa(Self);
                        end;
                     FBusca.Free;
                        end
                     else
                        begin
                           FACHOU:=False;
                           FRESULTADO:='';
                        end;
                  end;
         end;

      if FACHOU then
         Text:=FRESULTADO
      else
         if FUSAMASCARA<>UpperCase('S') then
         begin
            Text:='';
            ShowMessage( 'NÃO ENCONTRADO, VERIFIQUE..'+#13+'INFORME O CÓDIGO OU TECLA ENTER PARA CONSULTAR..');
            //ShowMessage('REGISTRO NÃO ENCONTRADO.');
         end
      else
         Text:=FRESULTADO;
     // if not FACHOU then keybd_event(VK_TAB,0,0,0) else Self.SelectAll;
    { if not Self.ReadOnly then
         begin
            if FACHOU then
               begin
                  if Assigned(FCAMPOGRAVAR) then
                     begin
                        if (FCAMPOGRAVAR.DataSet.State in [dsedit,dsinsert]) then
                           TField(FCAMPOGRAVAR).AsInteger:=FRESULTADOCODIGO;
                      end;
               end;
         end;}
//Qry.Free;
//Qry:=nil;

     if Resultado.Count=0 then
        ResultadoLista.Add(Qry.FieldByName('COD').AsString)
     else
        begin
           for I := 0 to Resultado.Count - 1 do
              ResultadoLista.Add(Resultado);
        end;

     if Assigned(FAposExecutarBusca) then
        FAposExecutarBusca(Self);

//  freeandnil(ResultadoLista);
  freeandnil(Resultado);

end;

Function CriarForm(Form:TUniForm;Classe:TUniFormClass):Boolean;
begin
    Application.CreateForm(Classe,Form);
    Form.ShowModal;
    freeandnil(Form);
end;

procedure TUniLogEdit.KeyDown(var Key: Word; Shift: TShiftState);
var
  fc : TUniFormClass;
  f : TUniForm;
begin
inherited KeyDown(Key,Shift);
   if key=FTECLACADASTRO then
      begin
         fc := TUniFormClass(FindClass('T'+FFORMCADASTRO));
         f := fc.Create(Application);
         f.ShowModal;
         f.Free;
         f:=nil;
      end;

end;

procedure TUniLogEdit.KeyPress(var Key: Char);
begin
  inherited KeyPress(Key);
  if (Key = #13) or (key=#40)then
      begin
         if FLigaComponente='' then
            ExecutarBusca;

         if not FACHOU then
            begin
               Self.SetFocus;
               Self.SelectAll;
            end;
            if not FACHOU then
               Self.SelectAll;
      end;
end;

procedure TUniLogEdit.SetaAbrePesquisa(const Value: boolean);
begin
end;

procedure TUniLogEdit.SetAntesFecharTelaPesquisa(const Value: TNotifyEvent);
begin
  FAntesFecharTelaPesquisa := Value;
end;

procedure TUniLogEdit.SetAposExecutarBusca(const Value: TNotifyEvent);
begin
  FAposExecutarBusca := Value;
end;


procedure TUniLogEdit.SetaUsoMascara(const Value: boolean);
begin
end;

end.
 

Link to comment
Share on other sites


unit UFrmUniBusca;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls,
  ibx.IBCustomDataSet, ibx.IBQuery, ComCtrls, ActnList, Data.DB, uniEdit,
  uniButton, uniBitBtn, uniStatusBar, uniGUIClasses, uniBasicGrid, uniDBGrid,
  uniPanel, uniGUIBaseClasses, uniLabel, uniGUITypes, uniGUIForm;

type
  TFrmUniBusca = class(TUniForm)
    Label1: TUniLabel;
    Panel1: TUniPanel;
    BtnPesquisar: TUniBitBtn;
    Ds: TDataSource;
    QRY: TIBQuery;
    EdnPesquisa: TUniEdit;
    StatusBar1: TUniStatusBar;
    GridPesquisa: TUniDBGrid;

    procedure BtnPesquisarClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure EdnPesquisaEnter(Sender: TObject);
    procedure EDNPESQUISAKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure GridPesquisaDblClick(Sender: TObject);
    procedure GridPesquisaDrawColumnCell(Sender: TObject; ACol, ARow: Integer;
      Column: TUniDBGridColumn; Attribs: TUniCellAttribs);
  private
    procedure pesquisa;
    { Private declarations }
  public
    { Public declarations }
    FFORMCADASTRO,TABELA,Campo1,Campo2,Campo3,FTIPOPCONTA,FFILTRO,SQL:String;
    TECLA:Integer;
  end;

var
  FBusca: TFrmUniBusca;
  Esc: Boolean;

implementation

uses UniLogEdit;

{$R *.dfm}

procedure TFrmUniBusca.EDNPESQUISAKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  fc : TUniFormClass;
  f : TUniForm;
  Str:String;
begin

  if fformcadastro <> '' then
  begin
    if key=116 then
      begin
         Str:=EdnPesquisa.Text;
         fc := TUniFormClass(FindClass('T'+FFORMCADASTRO));
         f := fc.Create(Application);
         f.ShowModal;
         f.Free;
         f:=nil;
         EdnPesquisa.Text:='';
         EdnPesquisa.Text:=Str;
         if not QRY.IsEmpty then
            begin
               QRY.Last;
               QRY.First;
               if QRY.RecordCount=1 then
                   Close;
            end;

    end;
  end;

   if QRY.IsEmpty then
      Exit;

   if key=40 then
      QRY.Next;
   if key=38 then
      QRY.Prior;
end;

procedure TFrmUniBusca.GridPesquisaDblClick(Sender: TObject);
begin
  close;
end;

procedure TFrmUniBusca.GridPesquisaDrawColumnCell(Sender: TObject; ACol,
  ARow: Integer; Column: TUniDBGridColumn; Attribs: TUniCellAttribs);
begin

 if Odd((Sender as TUniDBGrid).DataSource.DataSet.RecNo) then
  Attribs.Color:= clWhite
 else
  Attribs.Color:= $00FFEEDD;

end;

procedure TFrmUniBusca.EdnPesquisaEnter(Sender: TObject);
begin
  pesquisa;
end;

procedure TFrmUniBusca.FormClose(Sender: TObject; var Action: TCloseAction);
var
  I : integer;
  Codigo:String;
begin
//   SQL:='SELECT '+TABELA+'.COD FROM '+TABELA+' WHERE COD='+GridPesquisa.Columns[0].Field.Text;
   if Esc Then
     begin
       QRY.Close;
       Exit
     end;

         Codigo:=QRY.FieldByName('COD').Text;
         qry.DisableControls;
         qry.First;
         while not (qry.EOF) do
            begin

              for I := 0 to GridPesquisa.SelectedRows.Count - 1 do
              begin
                  UniLogEdit.IncluirLista(QRY.FieldByName('COD').Text);
              end;

              qry.next
            end;
         qry.EnableControls;
         QRY.Locate('COD',Codigo,[loCaseInsensitive]);

end;

procedure TFrmUniBusca.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (key = vk_f1) then
    begin
      pesquisa;
    end;
end;

procedure TFrmUniBusca.FormKeyPress(Sender: TObject; var Key: Char);
begin
  Esc := False;
  if (Key=#13) then
     begin
      close;
     end;
  if (Key=#27) then
    begin
      Esc := TRUE;
      Close;
    end;
end;

procedure TFrmUniBusca.FormShow(Sender: TObject);
begin
  if not qry.IsEmpty then
  begin
   QRY.Last;
   QRY.First;
   if QRY.RecordCount=1 then
      Close;
  end;

end;

procedure TFrmUniBusca.pesquisa;
begin
        with QRY,SQL do
            begin
               Clear;
               if Campo3<>'' then
                  begin
                     Add('SELECT FIRST 50 COD, '+Campo1+','+Campo2+','+Campo3+' FROM '+TABELA);
                     Add(' WHERE '+Campo2+' LIKE '+QuotedStr('%'+EDNPESQUISA.Text+'%'));
                     Add( 'AND DIGITOVERIF <> '+QuotedStr('') );
                     //Add(' AND TIPO='+QuotedStr(FTIPOPCONTA));
                     Add(' ORDER BY '+Campo2);
                  end
               else
                  begin
                     Add('SELECT FIRST 50 COD,'+Campo1+','+Campo2+' FROM '+TABELA);
                     Add('WHERE ('+Campo1+'||''-''||'+Campo2+') LIKE '+QuotedStr('%'+EDNPESQUISA.Text+'%'));

                     if FFILTRO<>'' then
                        Add(' AND '+FFILTRO);
                     Add(' ORDER BY '+Campo2);
                  end;
               Open;
            end;
  EdnPesquisa.selectall;
end;

procedure TFrmUniBusca.BtnPesquisarClick(Sender: TObject);
begin
 pesquisa;
end;

end.
 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...