Alessandro Pancotte
-
Posts
6 -
Joined
-
Last visited
Content Type
Profiles
Forums
Events
Posts posted by Alessandro Pancotte
-
-
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;
beginif 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);
beginif 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
beginfor 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.
-
}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.
-
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. -
Yes,
I'm using the version trial
FMSoft_uniGUI_Complete_Professional_1.90.0.1520_TrialTks
-
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 loginFBusca:=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;
Component uniedit e ufrmsearch
in General
Posted
Sorry!
I would like o send the component attachement.
But i didn't understand how to do this in this forum...
Tks