Hola. Este es el codigo de mi combo buscar donde elijo el criterio de filtro.
he colocando en negrilla los llamados a las funciones principales, hasta llegar
a la función que limpia la stringgrid.
Código Delphi
[-]procedure TFrmPrincipal.cmbBuscarChange(Sender: TObject);
begin
edtBuscar.Text:='';
FiltrarUsuarios;
end;
Código Delphi
[-]procedure TFrmPrincipal.FiltrarUsuarios();
var
LstUsuarios:TStringList;
PDepartamento, PCiudad, PSexo, PTipoDoc,POpcupacion: String;
begin
PDepartamento:='';
PCiudad:='';
PSexo:='';
PTipoDoc:='';
POpcupacion:='';
if cmbCiudades.ItemIndex<>-1 then PCiudad := inttostr(TCiudad(cmbCiudades.Items.Objects[cmbCiudades.ItemIndex]).CiudadId);
if cmbDepartamentos.ItemIndex<>-1 then PDepartamento := inttostr(TDepartamento(cmbDepartamentos.Items.Objects[cmbDepartamentos.ItemIndex]).DepartamentoId);
if cmbTipodeDocumento.ItemIndex<>-1 then PTipoDoc := TTipoidentificacion(cmbTipodeDocumento.Items.Objects[cmbTipodeDocumento.ItemIndex]).TipoIdentificacionId;
if cmbSexo.ItemIndex<>-1 then PSexo := TSexo(cmbSexo.Items.Objects[cmbSexo.ItemIndex]).SexoId;
if cmbOcupaciones.ItemIndex<>-1 then POpcupacion := TOcupacion(cmbOcupaciones.Items.Objects[cmbOcupaciones.ItemIndex]).OcupacionId;
if(PCiudad<>'')or(PDepartamento<>'')or(PTipoDoc<>'')or(PSexo<>'')or(POpcupacion<>'') then
LstUsuarios := gloLisUsuario.Filtrar(PDepartamento, PCiudad, PSexo, PTipoDoc,POpcupacion)
else
LstUsuarios := gloLisUsuario.RetornaListaUsuarios;
PresentaUsuarios(GrdUsuarios, LstUsuarios,uppercase(edtBuscar.Text), cmbBuscar.ItemIndex);
end;
Código Delphi
[-]procedure PresentaUsuarios(var PGrdGrilla___ : TStringGrid; Usuarios:TStringList;strCadena1:string;Por:Integer);
var
strCadena2: string;
Usuario: TUsuario;
Vr,Cont:Integer;
begin
ConfigurarGrillaUsuarios(PGrdGrilla___);
strCadena2:='';
Cont:= 0;
Vr:=0;
while cont < Usuarios.Count do
begin
Usuario := TUsuario(Usuarios.Objects[Cont]);
case por of
1:strCadena2:=Uppercase(Usuario.strNombre);
2:strCadena2:=Uppercase(Usuario.PrimerNombre+' '+Usuario.SegundoNombre+' '+Usuario.PrimerApellido+' '+Usuario.SegundoApellido);
else
strCadena2:='';
end;
if((Pos(strCadena1,strCadena2)<>0)and(trim(StrCadena1)<>''))or(strCadena2='') then
begin
AddUsuario(PGrdGrilla___,Vr,Usuario);
Inc(Vr);
PGrdGrilla___.RowCount := Vr+1;
end;
Cont := Cont+1;
end;
end;
Código Delphi
[-]procedure ConfigurarGrillaUsuarios(var PGrdGrilla___ : TStringGrid);
begin
LimpiarGrilla(PGrdGrilla___);
PGrdGrilla___.ColWidths[0] := 50; PGrdGrilla___.Cells[0, 0] := 'Id.';
PGrdGrilla___.ColWidths[1] := 50; PGrdGrilla___.Cells[1, 0] := 'Tipo ID'; PGrdGrilla___.ColWidths[2] := 115; PGrdGrilla___.Cells[2, 0] := 'Número ID'; PGrdGrilla___.ColWidths[3] := 170; PGrdGrilla___.Cells[3, 0] := 'Apellidos'; PGrdGrilla___.ColWidths[4] := 170; PGrdGrilla___.Cells[4, 0] := 'Nombres'; PGrdGrilla___.ColWidths[5] := 170; PGrdGrilla___.Cells[5, 0] := 'Teléfono(s)'; PGrdGrilla___.ColWidths[6] := 220; PGrdGrilla___.Cells[6, 0] := 'E-Mail'; PGrdGrilla___.ColWidths[7] := 50; PGrdGrilla___.Cells[7, 0] := 'Sexo'; PGrdGrilla___.ColCount := 10;
PGrdGrilla___.RowCount := 2;
end;
Código Delphi
[-]procedure LimpiarGrilla(var PGrdGrilla___ : TStringGrid);
var i, j : Integer;
begin
with PGrdGrilla___ do
for i:=0 to PGrdGrilla___.RowCount - 1 do
for j:=0 to PGrdGrilla___.ColCount - 1 do
PGrdGrilla___.Cells[j, i] := '';
PGrdGrilla___.FixedCols := 0;
end;