Que tal compañeros del club, resulta que tengo un OpenDialog el cual me gustaria que, al entrar a determinadas carpetas, a traves del evento OnFolderChange, cambiar el filtro seleccionado, seria como accerder a la propiedad ItemIndex del ComboBox del OpenDialog, ¿me explico?
Supongamos que entro a la carpeta ...\Facturas, entonces me interesa que automaticamente el filtro seleccionado sea el *.fc, si entro a ...\NotasDebito, sea *.nd y asi
Modificar la propiedad FilterIndex del OpenDialog no parece fucionar
Lo que yo he hecho y funciona, pero es una chanchada es algo como esto:
Código Delphi
[-]type
FILTERS_INDEX = (fiXLS, fiFC, fiRM, fiNC, fiND);
procedure TFFacturaVenta.LoadFolderChange(Sender: TObject);
var FilterComboBoxHandle: HWND; i, NewIndex: integer;
begin
with Load do
begin
if (FileName + PathDelim = Path_a_\Facturas) then
NewIndex:= Integer(fiFC);
FilterComboBoxHandle:= FindWindowEx(FindWindow(NIL, PWChar(Load.Title)), 0, 'ComboBox', NIL);
SendMessage(FilterComboBoxHandle, WM_KEYDOWN, VK_DOWN, SizeOf(VK_DOWN));
SendMessage(FilterComboBoxHandle, WM_KEYUP, VK_DOWN, SizeOf(VK_DOWN));
for i:= 0 to CantidadFiltros do
begin
SendMessage(FilterComboBoxHandle, WM_KEYDOWN, VK_UP, SizeOf(VK_UP));
SendMessage(FilterComboBoxHandle, WM_KEYUP, VK_UP, SizeOf(VK_UP));
end;
SendMessage(FilterComboBoxHandle, WM_KEYDOWN, VK_RETURN, SizeOf(VK_RETURN));
SendMessage(FilterComboBoxHandle, WM_KEYUP, VK_RETURN, SizeOf(VK_RETURN));
for i:= 0 to NewIndex do
begin
SendMessage(FilterComboBoxHandle, WM_KEYDOWN, VK_DOWN, 1);
SendMessage(FilterComboBoxHandle, WM_KEYUP, VK_DOWN, 1);
end;
SendMessage(FilterComboBoxHandle, WM_KEYDOWN, VK_RETURN, 1);
SendMessage(FilterComboBoxHandle, WM_KEYUP, VK_RETURN, 1);
end;
end;
Basicamente lo que hago es simular que pulso la teclas ARRIBA/ABAJO para moverme al filtro que necesito, la verdad no se me ocurre mas que podria hacer
Un saludo y gracias