Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-10-2014
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 16
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
OpenDialog - Seleccionar filtro luego de llamar a Execute()

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
    // Load es un TOpenDialog
    with Load do
    begin
        if (FileName + PathDelim = Path_a_\Facturas) then
            NewIndex:= Integer(fiFC);
        // obtengo el Handle del ComboBox
        FilterComboBoxHandle:= FindWindowEx(FindWindow(NIL, PWChar(Load.Title)), 0, 'ComboBox', NIL);
        // subo hasta el primer filtro... si no le mando primero "abajo" no funciona
        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));

        // y ahora bajo hasta el deseado
        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

Última edición por AgustinOrtu fecha: 12-10-2014 a las 09:01:29. Razón: agrego un comentario al codigo
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como seleccionar campos de una tabla sin saber cuantos van a seleccionar david duarte SQL 7 05-04-2010 22:15:43
Execute statement Ana Tudela Firebird e Interbase 7 12-12-2006 13:27:13
Execute Immediate jjarias Firebird e Interbase 3 27-04-2006 16:14:07
for execute statement conquer Firebird e Interbase 0 16-02-2005 23:23:49
Execute procedure VRO Firebird e Interbase 4 26-01-2005 18:55:57


La franja horaria es GMT +2. Ahora son las 02:09:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi