Ejemplos
  
  En ésta sección pretendo recopilar ejempos de código en Delphi que durante mucho tiempo e ido realizando por diferentes necesidades; Algunos por pura y propia investigación, otros por simples pruebas, algunos más que en su momento he posteado en grupos y foros y el resto por razones varias...

Como ya os he comentado muchos son pruebas o simples "experimentos", así que es posible que los comentarios "brillen por su ausencia", pero aún así espero que sean de utilidad.



Dibujar porcentaje en una celda de un Grid

    En este ejemplo se muestra cómo dibujar manualmente una barra de porcentaje en una celda de un DBGrid. Presuponemos que en la celda en la que vamos a dibujar la barra se está mostrando un valor entre 0 y 100 que pertenece a un porcentaje. Este ejemplo muestra cómo se hace para un componente TDBGrid estándard; No es muy difícil adaptarlo para utilizarlo en un TStringGrid o similar.




  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Realizar búsqueda incremental y visualizarla sobre un DBGrid

    En este ejemplo se muestra de forma sencilla de realizaruna búsqueda incremental sobre un campo y mostrar el resultado de la búsqueda sobre un DBGrid estandard. Para este ejempo se ha utilizado un TClientDataset, de forma que todos los datos estén cargados en memoria (en local). Hay que tener en cuenta que este método puede ser costoso si la tabla es muy grande o los datos datos no se encuentran en local (cursores server-side, por ejemplo)




  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Convertir un Menu en un TreeView

    En este ejemplo se muestra de forma sencilla cómo "pasar" o convertir un Menu existente (componente TMainMenu) en un TTreeView; Conservando la jerarquía de los elementos y asignando las imágenes que ya existan en el ejemplo.




  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Sistema de Plug-ins utilizando packages dinámicos

Sencillo ejemplo que muestra cómo utilizar packages dinámicos en una aplicación para obtener caraterísticas de plug-ins.
Los packages (BPL's) con diferentes funcionalidades se crean de forma independiente y el programa se encarga de cargarlos al inicio y "colgarlos" o añadirlos a un menú en la aplicación principal.


  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba


Arrastrar elementos entre dos TListBox

Se trata de un ejemplo de cómo arrastrar elementos entre dos componentes de tipo TListBox utilizando el ratón.
Está basado en un formulario que ya trae el propio Delphi como ejemplo y accesible desde el menú de:

File/New/Other/Forms/Dual List Box

En este ejemplo se añaden 4 procedimientos que introducen la posibilidad de mover elementos utiilizando el ratón y que en el original sólo se puede realizar utilizando controles del formulario.
La técnica de Drag & Drop que se usa en este ejemplo entre dos TListBox, puede ser fácilmente exportable para utilizarla con otros controles; StringGrids, DBGrid,...


 


  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba


Descargar un fichero y copiarlo en local (Indy)

Se trata de un sencillo ejemplo para mostrar cómo descargar un fichero desde internet y copiarlo en local.
En su día lo desarrollé para montar la actualización en línea de una aplicación.
Previamente a esto, se descargaba un fichero de texto para comprobar ambas versiones; Si la actual estaba anticuada, se descargaba la nueva utilizando éste sistema.




  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba


Crear, mover y redimensionar controles en Runtime (IDE)

Se trata de un sencillo ejemplo para mostrar el funcionamiento del componente TSelectOnRuntime que se encuentra en la sección de componentes de ésta página. De una forma muy burda (pero suficiente para ver el funcionamiento del componente) se ilustra con una imitación a IDE de Delphi cómo se pueden crear y modificar diferentes componentes en Runtime.

Se puede ver cómo se crean componenetes en "tiempo de ejecución" y cómo se mueven y redimensionan utilizando el componente TSelectOnRuntime.




  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Simular barras flotantes en torno al formulario

La idea de éste ejemplo llega a partir de una petición de obtener en un formulario unas barras de herramientas (toolbars) similares a las que aparecen en los Expertos para Delphi CnPack (muy buenos y gratuítos, por cierto).
En el caso de los CnPack, cuando aparece un formulario en el IDE de Delphi, aparecen varias barras de herramientas "flotantes" que se "pegan" literalmente al formulario.

De forma que si mueves el form, automáticaente se mueven las barras también. Una imagen descriptiva podría ser esta:




La forma de conseguirlo es utlizando el mensaje WM_WINDOWPOSCHANGING accesible desde los descencientes de TCustomForm.


  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



API LockFile para detectar instancias de aplicación activas en red

Éste ejemplo muestra cómo utilizar la API LockFile para detectar aplicaciones que están ejecutándose.

La situación
es la siguiente: Una aplicación que se ejecuta en Red. Puede haber muchos puestos/estaciones que la están ejecutándo simultáneamente. Y nos interesa saber en cada momento qué puestos la ejecutan.

Las ventajas de éste método son su sencillez (poco código), fiabilidad (ya que al ser bloqueos controlados por el sistema operativo, si algunas estación "se cuelga" no hace falta ningun código de recuperación de identificadores, el sistema librera el bloqueo) y pocos recursos, ya que aunque bloqueemos mucha posiciones del fichero, el tamaño de éste simpre será de 0 bytes.




  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Ejemplo de tratamiento de "Planos y figuras"

     Es bantante común encontrarse en programación con aplicaciones que requieren una interface del tipo "plano y figuras". Son aquellos programas cuya entrada de datos se realiza a partir de un formulario que presenta un plano y donde se deben poder "colocar" elementos/objetos que después se utilizarán en el programa.





En éstos proyectos suele haber dos "modos de trabajo" básicos:

    Como ayuda a éste tipo de Interfaces de cara al usuario, se han creado los componentes TSaveComps y TSelectOnRuntime de la sección de componentes de ésta página. Y como muestra para éstos dos componentes se ha creado ésta demo. Muestra cómo sería su utilización en una interface sencilla, que en éste caso simula un restaurante. Muestra el funcionamiento básico de ambos modos de trabajo.



  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Ejemplo sobre Threads ampliado (v. 2)

     Se ha ampliado el ejemplo anterior sobre threads, para mostrar cómo se puede configurar el número de threads que se deseen para ejecutar una tarea concreta. Se puede definir un número máximo (por el usuario) y se muestra cómo se van ejecutando threads.
A medida que los primeros van acabando, se lanzan nuevos hasta completar todo el proceso.




  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Ejemplo sobre Threads

     Este ejemplo es una muestra simple de como crear diferentes Threads y hacerlos funcionar; Es básico pero puede servir como comienzo para aprender el funcionamento. Como crearlos, ponerlos en marcha, pausarlos/reanudarlos y modificar su prioridad.
    Hay diferentes tipos, aunque al final la estructura de todos ellos es similar.





  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Trocear un Bitmap a modo de puzzle en n imagenes

Éste ejemplo muestra cómo "trocear" una imagen (un bitmap en éste caso) en n pequeñas imágenes a "modo de cudrícula"; El número de imágenes (de ancho y de alto) se puede configurar y finalmente las n partes de la imagen se guardan en disco.



Las imágenes resultantes de la división se guardan en disco.


  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba


Tamaño de ficheros/directorios y espacio en disco

     Éste ejemplo muestra cómo calcular el tamaño de ficheros y el tamaño de directorios; El procedimiento para los directorios es recursivo. Además implementa varios sistemas para obtener el espacio de los discos, tanto es espacio total como es espacio libre.




  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Abrir un fichero de Excel, escribir en celdas y ocultar hojas

    Éste ejemplo muestra cómo realizar algunas sencillas operaciones sobre un documento de Excel a través de Autoimatización, sin utilizar los componentes de la paleta Servers de Delphi.
    En mi caso necesitaba hacer pruebas para escribir en una celda (Worksheets.Items[i].Cells), ocultar una hoja del libro (Worksheets.Items[i].Visible) y activar otra(Worksheets.Item[i].Select).


  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Ejecutar un procedimiento/función a partir de su nombre (RTTI)

    Éste ejemplo muestra cómo ejecutar un método o función definido en otro formulario, a partir del nombre de ese método. Para ello se utiliza RTTI (Runtime Type Information); Es suficiente con que el procedimiento que queremos ejecutar se encuentre en la parte published del formulario.
    Podemos probar en el ejemplo con varios procedimientos. Si el procedimiento con ese nombre no existe, devolverá un error.
    Muy útil en casos en que no podemos añadir dependencias entre packages o cuando determinados métodos están almacenados por su nombre en la Base de Datos (por ejemplo).


  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Generar una búsqueda (Like *) utilizando SQL

     Éste ejemplo muestra cómo crear una sentencia SQL para realizar búsquedas sobre una tabla del estilo de "...Campo LIKE 'Pes*' "; Sencillo y simple, utiliza la Base de Datos de pruebas DBDemos que viene con Delphi.




    En el ejemplo se muestra cómo construir la sentencia SQL (que se muestra en la parte inferior) a partir del texto que se introduce en el Edit. Esta misma consulta es la que se utiliza en un control de búsqueda (TQuery) para filtrar datos de la tabla.
En este caso el texto "an" se busca en el campo Common_Name de la tabla utilizando el operador LIKE.


  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Color y alineación en celdas de un StringGrid

     Éste ejemplo muestra cómo programar el evento OnDrawCell de un TStringGrid para modificar la alineación y color de las celdas pertenecientes a una columna completa; Además implementa los metodos de Importar desde un fichero separado por comas e interacción con el portapapeles de filas completas (Cortar/Copiar/Pegar).




En este ejemplo está el código necesario para:

  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Crear/destruir componentes (imagenes) en Runtime y moverlas con el ratón

     Éste ejemplo surgió hace tiempo en los foros a raiz de un problema típico, en el que existe una imagen de fondo (plano) y se deben posicinar sobre ésta otras imagenes a modo de "elementos" (un bar y las mesas, la planta de un hospital y las camas, un plano de una terminal y el posicionamiento de las gruas,...).
    Se trata de crear/destruir objetos y poder (en ejecución) moverlos utilizando el ratón;

    Es una ampliación del ejemplo Selecciconar Shapes visualmente que hay más adelante.




    Este ejemplo sirve también para mostrar cómo crear/destruir componentes visuales (en este caso son TImage), en ejecución mediante código. El sistema es muy similar para otros tipos de componentes.


  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Crear un menu de aplicación a partir de texto (o fichero o campo de Base de Datos)

    Éste ejemplo muestra cómo crear en una aplicación, un menú dinámicamente a partir de texto; Normalmente la opción más común es que éste texto se almacenbe en un fichero o incluso en Base de Datos. Para el texto ya está almacenado en un memo.




En el ejemplo podemos ver cómo crear menús en tiempo de ejecución y además cómo asignarles los eventos y acciones necesarias.
Además está implementada la creación del menú a partir de un formato de Texto. En este caso almacenado en un TMeno, pero fácilmente exportable a otros formatos.
    Es ideal para aplicaciones que trabajen con menús dinámicos, con algun sistema de plugins (y el menú no sea fijo) o para aquellas que por temas de seguridad deban fucncionar con diferentes menús (segun los diferentes permisos de los usuarios, por ejemplo).


  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Realizar un Scroll manual (por código) en un DBGrid

    Éste ejemplo muestra cómo hacer manualmente un Scroll horizontal (en éste caso hacia la derecha, aunque se realiza de la misma forma en sentido contrario) sobre el TDBGrid estandard de Delphi; Utilizando mensajes de Windows, que se envían al componente de Grid: WM_HSCROLL con el parámetro SB_LINERIGHT o SB_LINELEFT dependiendo de la dirección en que desemos movernos.


  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba


Seleccionar Shapes visualmente

     La idea de éste ejemplo era realizar unas pruebas para simular en ejecución, la selección de objetos, como normalmente se hace en el IDE de Delphi; Hice pruebas con dos métodos de selección; Uno utilizando las típicas marcas que aparecen el los vértives de un componente y otro con una outline -linea en la parte exterior del control-.



    Hay implementados dos tipos de selección; Una es modificando las propiedades del propieo control (en este caso el Borde de los TShapes -aunque con otros controles puede hacerse algo similar-) y la otra añadiendo una marcas en ejecución alrededor del Componente; Este segundo caso parece que podría ser más estandard si es necesario hacerlo con diferentes tipos de componentes.


  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba



Ejecutar DTS (SQL Server) desde Delphi

    Con éste ejemplo se muestra cómo ejecutar un DTS (Data Transformation Services) creado en SQL server 2000 desde un programa de Delphi 6.
    Para trabajar con DTS desde Delphi, se debe generar la unit DTS_TLB a partir del objeto "Microsoft DTSPackage Object Library (Versión X.X)".

    Para generar la unit se deben seguir los pasos desde el IDE de Delphi:
  1. Project / Import Type Librery 
  2. Seleccionar: "Microsoft DTSPackage Object Library (Versión X.X)" 
  3. Create Unit
    La unit creada se deberá añadir al USES del proyecto.


  Download
  D6, D7, D2005, D2006, D2007
  Freeware
  Código fuente
  Incluye EXE (demo)
  Ir arriba