Ver Mensaje Individual
  #7  
Antiguo 27-09-2008
Avatar de Blaster
Blaster Blaster is offline
Miembro
 
Registrado: jun 2008
Ubicación: Miami, USA
Posts: 12
Reputación: 0
Blaster Va por buen camino
Thumbs up Filtrar en tiempo de ejecución

Mira, los FileListBox se pueden filtrar inclusive mientras los usas. Por ejemplo:

Tienes un FileListBox de nombre: FileListBoxSimulacionImagenes
Tienes un Edit de nombre: edtFiltroBibliotecaInternaSimulacionImagenes

Pon esto en el evento OnChange del Edit:

Código Delphi [-]
procedure TfrmPrincipal.edtFiltroBibliotecaInternaSimulacionImagenesChange(
  Sender: TObject);
begin
  //Valido para que el primer caracter no sea un punto y para que el primer caracter no sea un espacio
  if (   (AnsiLeftStr(Trim(edtFiltroBibliotecaInternaSimulacionImagenes.Text), 1) = '.'   ) or (AnsiLeftStr(edtFiltroBibliotecaInternaSimulacionImagenes.Text, 1) = ' ')   )
    then
      begin
        //Limpio el edit
        edtFiltroBibliotecaInternaSimulacionImagenes.Clear;
      end;
          
  //Aqui modifico el filter del FileListBox
  FileListBoxSimulacionImagenes.Mask:= edtFiltroBibliotecaInternaSimulacionImagenes.Text + '*.sim';

  //Actualizo el FileListBox
  FileListBoxSimulacionImagenes.Update;
end;

Por último, para que no se tecleen caracteres no válidos en el filtro (el Edit) debes poner esto en el evento OnKeyPress del Edit:

Código Delphi [-]
procedure TfrmPrincipal.edtFiltroBibliotecaInternaSimulacionImagenesKeyPress(Sender: TObject; var Key: Char);
begin
  //Valido para que el primer caracter no sea un punto
  if (   Trim(AnsiLeftStr(edtFiltroBibliotecaInternaSimulacionImagenes.Text, 1)) = '.')
    then
      begin
        //Limpio el edit
        edtFiltroBibliotecaInternaSimulacionImagenes.Clear;
      end;

  //Valido para caracteres no validos
  if (Key in['/', '\', ':', '?', '¿', '*', '"', '<', '>'])
    then
      begin
        Abort;
      end;
end;

Al final tienes un FileListBox, en el cual se mostrarán los archivos de extensión *.sim, pero que además empiezen con lo que escribas en el Edit (así los encuentras más rápido).

Espero te sirva de algo.
Bye.
Responder Con Cita