Hola.
También creo que un filtrado desde el TDataSet o mediante una consulta SQL sería lo mas adecuado.
Pero contestando al título de tu consulta, podes usar el evento
OnKeyDown del DBGrid y la función API
SendInput para desplegar el
PickList, vg:
Código PHP:
const KEYEVENTF_KEYDOWN = 0;
void sendKey(const WORD &key, const DWORD &flag)
{
INPUT ip;
ZeroMemory(&ip, sizeof(INPUT));
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0;
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
ip.ki.dwFlags = flag;
ip.ki.wVk = key;
SendInput(1, &ip, sizeof(INPUT));
}
void __fastcall TForm1::DBGrid1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key == VK_F5) { // ( F5 por ejemplo)
sendKey(VK_F2, KEYEVENTF_KEYDOWN);
sendKey(VK_F2, KEYEVENTF_KEYUP);
sendKey(VK_MENU, KEYEVENTF_KEYDOWN);
sendKey(VK_DOWN, KEYEVENTF_KEYDOWN);
sendKey(VK_DOWN, KEYEVENTF_KEYUP);
sendKey(VK_MENU, KEYEVENTF_KEYUP);
}
}
Una vez desplegada la lista se comporta de forma similar a un ComboBox al presionar letras.
Saludos