Jump to content

Alessandro Pancotte

Members
  • Posts

    6
  • Joined

  • Last visited

Alessandro Pancotte's Achievements

Newbie

Newbie (1/4)

0

Reputation

  1. Sorry! I would like o send the component attachement. But i didn't understand how to do this in this forum... Tks
  2. 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.
  3. }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.
  4. 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.
  5. Yes, I'm using the version trial FMSoft_uniGUI_Complete_Professional_1.90.0.1520_Trial Tks
  6. 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;
×
×
  • Create New...