Ver Mensaje Individual
  #2  
Antiguo 25-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.111
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El caso es que no voy sino a confundir, pero, allá va. "TFileListBox" no cuenta con una propiedad "Sorted", es cierto, pero "TFileListBox" hereda de "TCustomListBox", y, este sí cuenta con una propiedad "Sorted". No solo eso, sino que, en el constructor de "TFileListBox" se da a dicha propiedad el valor "True". ¿Entonces, qué puede hacerse?

Probablemente de varias formas pueda conseguirse lo que se trata de conseguir, sin embargo, parece funcionar con el "truco" de las Clases interpuestas, que explica Ian Marteens y alguna vez refirió aquí mismo roman.

Una forma de implementar lo dicho. En el formulario en donde utilizas el "TFileListBox", antes de su declaración, es decir, antes de la declaración del tipo del formulario, incluye el siguiente código:

Código Delphi [-]
  type
    TFileListBox = class(FileCtrl.TFileListBox)
    public
      constructor Create(AOwner: TComponent); override;
    end;
Dicho constructor (es lo que nos interesa, puesto que es en el constructor de "TFileListBox" donde se da "por defecto" el valor "True" a la propiedad "Sorted", como se ha dicho, heredada de "TCustomListBox") se implementa como sigue:

Código Delphi [-]
  constructor TFileListBox.Create(AOwner: TComponent);
  begin
    inherited Create(AOwner);
    Sorted := false;
  end;
Y eso es todo: tu "FileListBox" ya no mostrará ordenados alfabéticamente los elementos que contenga. En el ejemplo que se adjunta lo verás claramente.

Sin embargo, creo que lo propuesto no sirve del todo, puesto que no se ordenaran los elementos del "TFileListBox" que tú añadas, pero sí parecen ordenarse los elementos que el propio componente añade, es decir, los archivos que encuentra en un determinado directorio.

No sabré ir más allá por el momento, puesto que creo que esto último tiene que ver con cómo se añaden elementos al componente en cuestión: se recorre un directorio en busca de sus archivos (véase el método privado "ReadFileNames" de "TFileListBox") y estos se encuentran ya de forma ordenada, y de forma ordenada se añaden al componente...

Algo como lo siguiente se permite, quiere decirse que compila sin problemas, sino es que no parece tener efecto alguno:

Código Delphi [-]
  TStringList(TCustomListBox(FileListBox).Items).Sorted := false;
Tal vez podríamos ceñirnos a lo que verdaderamente te preocupa:

Cita:
Empezado por Jorghino reyes
(todo ello es por que no quiero la ruta completa de los archivos en la lista)
Si te refieres a no ver la ruta completa de los archivos en el "FileListBox" no me cuadra el asunto: no parece mostrarse la ruta de los mismos y sí solamente el nombre de los archivos.

Si te refieres a obtener el nombre de los archivos, sin la ruta, por ejemplo el archivo seleccionado en el "FileListBox" (aunque creo que no la obtendrías, por lo dicho más arriba) tal vez podrías utilizar la función "ExtractFileName".

A ver si alguien puede aclarar un poco más el asunto y a ti puede servirte de algo el rollo que acabo de soltar.
Archivos Adjuntos
Tipo de Archivo: zip ejemplo.zip (1,9 KB, 48 visitas)
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 25-08-2005 a las 03:33:04. Razón: (añadir un enlace)
Responder Con Cita