Ver Mensaje Individual
  #4  
Antiguo 02-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jplj.

A ver si te sirve de este modo...
Código Delphi [-]
...
implementation
 
// En el ejemplo filtra documentos abiertos con: Block de notas, Adobe Reader y Libre Office. 
// (Agrega o cambia por los que desees)
function EnumWndProc(Handle: HWND; CB: TComboBox): BOOL; stdcall;
var
  Name: array[0..128] of Char;
  s: string;
begin
  Result := True;
  SendMessage(Handle, WM_GETTEXT, Sizeof(Name), integer(@Name));
  SetString(s ,PChar(@Name[0]), Length(Name));
  s:= UpperCase(s);
  if (AnsiPos('.TXT', s) > 0) or (AnsiPos('.PDF', s) > 0) or (AnsiPos('.ODS', s) > 0) then
    CB.Items.AddObject(Name, TObject(Handle));
end;

// Actualizar lista al entrar al combo
procedure TForm1.ComboBox1Enter(Sender: TObject);
begin
  ComboBox1.clear;
  EnumWindows(@EnumWndProc, LPARAM(ComboBox1));
  ComboBox1.ItemIndex:= 0;
end;

// Traer al frente la ventana seleccionada
procedure TForm1.ComboBox1Change(Sender: TObject);
var
  Wnd: HWND;
begin
  with TComboBox(Sender) do
  begin
    Wnd:= FindWindow(nil, PChar(Items[ItemIndex]));
    if Wnd <> 0 then
    begin
      ShowWindow(Wnd, SW_SHOWNORMAL);
      BringWindowToTop(Wnd);
    end;
  end;
end;
...
Del mismo modo podría implementarse mediante un TListBox que se hiciera visible ante el click de un botón y se ocultara luego de la selección.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 02-04-2014 a las 01:24:01. Razón: agregar comentario
Responder Con Cita