Lo que debes hacer es unificar la parte que filtra/ordena en un procedimiento aparte y luego llamarlo desde los diferentes lugares cuyo cambio deba lanzar ese filtro/orden.
Esto te permitirá separar la interfase con el usuario de la lógica de negocio.
Si en el futuro modificas el filtro/orden o agregas un nuevo filtro, solo debes modificarlo en un solo lugar (procedure Filtrar) y llamarlo desde el nuevo OnChange del componente.
Código Delphi
[-]
procedure TFrmModArt.Filtrar;
begin
TsPageControl1.ActivePage:=BUSCADOR;
if sRadioButton1.checked then
begin
ABSQProductos.Close;
ABSQProductos.SQL.Text := 'SELECT * FROM tbarticulos WHERE Codigo='+quotedStr(sMaskEdit1.text);
sStatusBar2.Panels[0].Text := 'BUSQUEDA POR CÓDIGO';
ABSQProductos.Open;
sStatusBar2.Panels[2].Text := 'CANTIDAD DE PRODUCTOS: '+ IntTostr(ABSQProductos.RecordCount);
end
else
begin
ABSQProductos.Close;
ABSQProductos.SQL.Text := 'SELECT * FROM tbarticulos=';
sStatusBar2.Panels[0].Text := 'TODOS LOS PRODUCTOS';
ABSQProductos.Open;
sStatusBar2.Panels[2].Text := 'CANTIDAD DE PRODUCTOS: '+ IntTostr(ABSQProductos.RecordCount);
end;
end;
procedure TFrmModArt.BuscarCodigoExecute(Sender: TObject);
begin
Filtrar;
end;
procedure TFrmModArt.sMaskEdit1Change(Sender: TObject);
begin
Filtrar;
end
Otra cosa:
¿Estás programando con acentos?
Código Delphi
[-]procedure TFrmModArt.BuscarCódigoExecute(Sender: TObject);