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
if ( (AnsiLeftStr(Trim(edtFiltroBibliotecaInternaSimulacionImagenes.Text), 1) = '.' ) or (AnsiLeftStr(edtFiltroBibliotecaInternaSimulacionImagenes.Text, 1) = ' ') )
then
begin
edtFiltroBibliotecaInternaSimulacionImagenes.Clear;
end;
FileListBoxSimulacionImagenes.Mask:= edtFiltroBibliotecaInternaSimulacionImagenes.Text + '*.sim';
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
if ( Trim(AnsiLeftStr(edtFiltroBibliotecaInternaSimulacionImagenes.Text, 1)) = '.')
then
begin
edtFiltroBibliotecaInternaSimulacionImagenes.Clear;
end;
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.