Ya me imagino la secuencia de pasos:
Para cada campo de la tabla:
- Pulsar Shift + Clic en el componente TLabel
- Cambiar los nombre del TLabel con el nombre del campo
- Pulsar Shift + Clic en el componente TComboBox para indicar los criterios (menor que, mayor que, etc..)
- Poner los cuadros de entrada para cada campo
Para facilitar ésta tarea, decidí crear la clase TFiltroDinamico, que nos apoya generando los nombres de los campos, combo boxes, cuadros de entrada y algo muy importante, si el campo es de tipo fecha genera un TDateTimePicker.
Un ejemplo de su uso es el siguiente:
Este es un ejemplo de una aplicación que utiliza la clase TFiltroDinamico, el recuadro en rojo contiene los campos generados a partir de la información generada por la consulta, el recuadro en verde indica el valor que se asignó a cada campo.
// para crear una instancia
filtroDinamico := TFiltroDinamico.Create;
// dataset del cual toma los campos
filtroDinamico.dataSetLocal := Query1;
// scrollbox donde generan los filtros
filtroDinamico.scrlFiltro := scrlCampos;
// libera los filtros que se han creado
filtroDinamico.liberaComponentes;
// genera en el scrollbox los filtros
filtroDinamico.inicializaFiltro;
// obtiene la condición con el valor de cada campo.
filtroDinamico.obtenFiltro;
Te invito a que descargues y pruebes TFiltroDinamico. Puedes probar la aplicación de ejemplo y compartirme que te parece.