Curso Delphi. Lección 09A  

Enviado Por: Ariel Bustamante
Web : N.A.
Email: N.A.
Fecha: 07/03/03

Truco accedido 102 veces

 


CURSO PARA NO INICIADOS EN DELPHI


En esta lección abordaremos varios temas por separado, por eso os recomiendo crear la Carpeta Leccion9 y dentro de ella iremos creando una sub-carpeta por cada proyecto realizado. Para el caso del primer tema que trataremos, crearemos la sub-carpeta Imágenes dentro de Leccion9. Vamos al Menú/Inicio de Windows "/....../Buscar/Archivos o Carpetas" y en la ventana "Buscar archivos o carpetas con el nombre......", escribiremos *.bmp (todos los archivos con extensión .bmp). Del visor de archivos encontrados seleccionaremos cinco archivos (de poder ser, los más grandes), los copiaremos y los pegaremos en la carpeta Imágenes.

Buscar y visionar imágenes en Delphi

Abrimos Delphi, Nueva Aplicación y salvamos la Unit con el nombre de Main y el proyecto con el nombre de ImageVisor, todo esto en la Carpeta Imágenes, el nombre de la ficha quedará como Form1 y el Caption de la misma será 'Visor de imágenes'. A este simple proyecto le agregaremos un seudo "explorador de windows", para conocer el funcionamiento de tres componentes muy importantes en cualquier proyecto que deba recurrir a búsquedas de archivos navegando por directorios o carpetas.
De la pestaña Additional colocaremos un componente Bevel en la ficha para que nos divida en dos la misma. Bevel es un componente estético, (no posee evento ninguno) pero tiene una gran utilidad a la hora de ordenar adecuadamente otros componentes en el área de la ficha. La Propiedad/Shape del mismo será para este caso bsRightLine, pero prueba el resto de las mismas para conocerle a fondo. La Propiedad/Style será bsLowered, pero prueba el efecto poniéndola en bsRaised, la Propiedad/Left será -389 y el Height 715. Pon el WindowsState de la ficha en wsMiximized y ejecuta el proyecto para ver el efecto del Bevel.
Volviendo a diseño observa las propiedades del Bevel y verás que no te son desconocidas.
De la pestaña Win 3.1 depositaremos un DriveComboBox en la ficha, colocándolo en el sector izquierdo del Bevel, vuelve a ejecutar el proyecto y observa este componente desplegando la lista de discos de tu PC. Volviendo a diseño, poco más nos queda por explicar de las propiedades del DriveComboBox, puede ser la Propiedad/TextCase que nos pone las letras de las unidades en mayúsculas o minúsculas. De la misma paleta depositamos debajo de el DriveComboBox un componente DirectoryListBox, por defecto ya te aparece el directorio y todos los sub-directorios abiertos hasta la carpeta Imágenes. Debajo de este y de la misma paleta coloca un FileListBox, verás que ya nos aparece con el listado de archivos que estamos generando con este proyecto, eso es porque su Propiedad/Mask pone *.* (todos los archivos, cambia esta propiedad escribiendo en esa ventana del Inspector *.bmp (todos los archivos .bmp) y así solo visionaremos los archivos de imágernes copiados a esta carpeta al principio del proyecto. Si abres la Propiedad/FileType del FileListBox1, verás que solo está en True la opción ftNormal, pasa también a True la ftDirectory; así nos mostrará los archivos y las subcarpetas de la carpeta seleccionada en el DirectoryListBox1. Tampoco está demás ir cambiando todas las propiedades ft para conocer los resultados que nos devuelve cada opción. Alinea estos componentes y debajo de ellos coloca un Button escribiendo el código correspondiente, para cerrar la aplicación.
En el Evento/OnChange de DriveComboBox1 escribiremos:

DirectoryListBox1.Drive := DriveComboBox1.Drive;

Y en el Evento/OnChange de DirectoryListBox1 escribiremos:

FileListBox1.Directory := DirectoryListBox1.Directory;

Ahora de la Paleta/Additional colocamos en el sector derecho de la ficha un componente Image y lo ajustamos para que ocupe toda esa superficie. En el Evento/OnDblClick de FileListBox1 escribiremos:

Image1.Picture.LoadFromFile(FileListBox1.FileName);

Ejecuta el project y ya tienes el visor de imágenes cargando las mismas con solo hacer doble clic sobre el archivo deseado, también puedes buscar en el DirectoryListBox la carpeta C:\Windows donde encontrarás más archivos .bmp para visualizar. Volviendo a diseño observemos la Propiedad/Strech de Image1, esta está en False, quiere decir que mostrará las imagenes en sus correctas proporciones de ancho y alto, pero vamos a pasarla a True y en tiempo de ejecución observaremos el cambio efectuado; ahora la imagen ocupa toda la superficie de Image1. Volvemos a diseño.
En la Propiedad/Picture que está en None si clicamos ese botoncito nos abre la ventana Picture Editor para que incluyamos aquí la imagen a mostrar en el caso de que solo fuera a mostrar una imagen única siempre fija, pero esta propiedad nosotros la estamos modificando en tiempo de ejecución con el último evento escrito. El resto de las propiedades, salvo algunas pocas, ya las conocemos. Para mejorar un poco este programilla coloquemos una Label debajo del Image (si es necesario, achica un poquito la altura de Image1), le borramos el Caption y en el Evento/OnDblClick de fileListBox1 agregaremos esta línea de código:

Label1.Caption := FileListBox1.FileName;

Ya puedes ejecutarlo y ver los resultados.
Recuerda que el uso de DirectoryListBox, FileListBox y DriveComboBox, no son exclusivos para el manejo de imágenes, puedes aplicarlos a cualquier proyecto que se te ocurra realizar. Por último, puede ser que si no colocas un diskette en la unidad A y clicas esta unidad, te saldrá un mensaje de error y tendrás que resetear el proyecto, este mensaje puede eliminarse para que no le provoque problemas al usuario, de hecho creo que ese truco está en el listado de Trucomanía.
A continuación el código fuente de este proyecto:


 unit Main;

 interface

 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls, FileCtrl, ExtCtrls;

 type
   TForm1 = class(TForm)
     DriveComboBox1: TDriveComboBox;
     FileListBox1: TFileListBox;
     Bevel1: TBevel;
     DirectoryListBox1: TDirectoryListBox;
     BSalir: TButton;
     Image1: TImage;
     Label1: TLabel;
     procedure BSalirClick(Sender: TObject);
     procedure DriveComboBox1Change(Sender: TObject);
     procedure DirectoryListBox1Change(Sender: TObject);
     procedure FileListBox1DblClick(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;

 var
   Form1: TForm1;

 implementation

 {$R *.DFM}

 procedure TForm1.BSalirClick(Sender: TObject);
 begin
 Close;
 end;

 procedure TForm1.DriveComboBox1Change(Sender: TObject);
 begin
 DirectoryListBox1.Drive :=  DriveComboBox1.Drive;

 end;

 procedure TForm1.DirectoryListBox1Change(Sender: TObject);
 begin
 FileListBox1.Directory := DirectoryListBox1.Directory;

 end;

 procedure TForm1.FileListBox1DblClick(Sender: TObject);
 begin
 Image1.Picture.LoadFromFile(FileListBox1.FileName);
 Label1.Caption := FileListBox1.FileName;

 end;

 end.