Cita:
Empezado por giulichajari
Hola de vuelta
Bueno tengo un Formulario con un DBGrid, 2 Edit correspondiente a 2 campos de la base de datos, para filtrar los datos del DBGrid. Pero necesito ayuda en lo siguiente
1-Que al borrar una letra en un Edit, se actualize la busqueda, es decir el DBGrid
2-Que al salir de un Edit se borre el otro y el dbgrid vuelva a sin estar filtrado.
3-Exportar el DBGRid filtrado para imprimir.
|
Hola.
El punto 1 ya lo tenes solucionado.
Con el 2, podrías asignar este evento a los dos Edits:
Código:
void __fastcall TForm1::EditExit(TObject *Sender)
{
Table1->Filtered = false;
}
El punto 3 es el que mas se complica por culpa del punto 2 ya que, estando en un Edit, vas a tener que llamar al form que tiene el
TQuickRep sin que se pierda el foco (y por tanto el filtro).
Una posible solución es poner la propiedad
KeyPreview del form a true y detectar una tecla, o combinación de ellas, en el evento
OnKeyDown del mismo, algo parecido a:
Código:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
KeyPreview = true;
}
...
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key == VK_F1)
Form2->ShowModal(); // (Form2 donde esta TQuickRep)
}
Por otro lado, en Form2 tendras que agregar al QuickRep un
TQRSubDetail con su propiedad
DataSet = Form1->Table1. Y tantos
TQRDBText como campos se muestren en las columnas de
Form1->DBGRid, todos con su propiedad
DataSet = Form1->Table1 y cada uno con su nombre de campo correspondiente.
Para lo cuál Form2 deberá tener acceso a Table1 ya sea que esta resida en un
TDataModule (la mejor opción) o mediante la inclusión de Form1, haciendo de este modo una referencia circular.
Saludos.
