Lección 1- Conociendo Delphi XE

4 comentarios

Conociendo Delphi XE

Delphi es uno de los entornos de desarrollo RAD (Desarrollo Rápido de Aplicaciones), más respetado y extensamente utilizado hoy. Más de 1,7 millones de desarrolladores a lo largo de todo el mundo eligen Delphi sobre otras herramientas, porque Delphi acelera radicalmente el desarrollo de aplicaciones de escritorio, estaciones de trabajo, táctiles, terminales de punto de venta, y Web sin sacrificar ni una pizca de potencia o control en la programación.

Las aplicaciones creadas con Delphi son rápidas, compactas, proporcionan UI’s ricos, y pueden conectarse con virtualmente cualquier base de datos o fuente de datos tal y como viene de fábrica. Con Delphi, puedes:

  • Reducir RADicalmente el tiempo de desarrollo y construir aplicaciones Windows hasta 5 veces más rápido que con otras soluciones de desarrollo
  • Acelerar la manera en que pasas del prototipo a producción con herramientas de arrastrar y soltar y una potente biblioteca de componentes
  • Liberar a tus clientes del teclado con deslumbrantes UI’s basados en funcionamiento táctil

Características principales de Delphi:

  • IDE RAD con diseño rápido de arrastrar y soltar
  • Más de 250 controles VCL
  • Soporte integrado táctil y de gestos
  • dbExpress con soporte para las 9 principales bases de datos
  • Middleware DataSnap para n-capas con JSON, REST, HTTP, COM, y XML
  • Soporte para depurar aplicaciones con múltiples hilos
  • UML / métricas de código y auditorías
  • Despliegue en Windows 2000, XP, Vista, y Windows 7 con el mismo código

Delphi XE está disponible en las ediciones Professional, Enterprise, y Architect.

Novedades que encontrarás en Delphi XE

RAD Studio XE te ayuda a ir más lejos y llegar más rápido con más de 120 características nuevas y mejoradas que te ayudan a finalizar los proyectos más rápido y alcanzar a más usuarios. Las características nuevas y mejoradas incluyen:

Reduce el tiempo de desarrollo con el nuevo IDE y herramientas de depuración.

Herramientas nuevas y mejoradas para codificar, depurar y compilar.

  • IDE Insight para acceder fácilmente a las características, configuraciones y componentes.
  • Formateador de código.
  • Visualizadores de depuración de datos.
  • Depuración de múltiples hilos.
  • Compilación en segundo plano.
  • Explorador de Clases C++.

Crea aplicaciones táctiles.

Construye rápidamente aplicaciones basadas en GUI táctiles, tabletPC, dispositivos táctiles, y terminales digitales.

  • Más de 30 gestos incluidos y la creación de gestos propios.
  • Funciona en Windows 2000, XP, Vista, y Windows 7.
  • Permitir fácilmente capacidades táctiles en aplicaciones existentes.
  • Teclado táctil en la pantalla.

Firebird, DataSnap, y más.

Haz la conexión con más datos y más arquitecturas de aplicación.

  • Conectividad a bases de datos Firebird.
  • Drivers actualizados para Microsoft SQL Server, Oracle y MySQL.
  • Soporte para DataSnap callbacks, filtrado, HTTP, REST y JSON

Lección 2 – Introducción a Delphi.

Deja un comentario

¿Que es Delphi?

Delphi (se pronuncia “dél-fi”), también conocido como Borland Delphi, Delphi, aunque Borland ya no existe ahora,Delphi es un compilador, una IDE y un lenguaje de programación, producido antiguamente por la Borland Software Corporation y actualmente producido por la empresa Embarcadero. El Delphi, originalmente direccionado para la plataforma Windows, llegó a ser usado para desarrollo de aplicaciones nativas para LinuxMac OS, a través del Kylix (el Kylix es un IDE para los lenguajes C++Object Pascal), y para el framework Microsoft .NET en sus versiones más recientes.

El desarrollo del Kylix fue descontinuado.

Actualmente hay un proyecto llamado Lazarus, el que posee una interfaz muy semejante al Delphi (aunque se ve un poquitín avejentado, pero es muy bueno) y la característica de ser multiplataforma, o sea, funciona en LinuxWindowsOS/2Mac OS y más.

El nombre Delphi es inspirado en la ciudad de Delfos, el único lugar en la Grecia antigua en que era posible consultar el Oráculo de Delfos. El nombre se debe al hecho de que los desarrolladores del compilador buscaban una herramienta capaz de acceder el banco de datos Oracle - de ahí el dicho: “la única manera de acceder al oráculo es usando Delphi“.

Aplicaciones

El Delphi es muy utilizado en el desarrollo de aplicaciones de escritorio, aplicaciones multicapas y cliente/servidor, compatíble con los bancos de datos más conocidos del mercado. El Delphi puede ser utilizado para diversos tipos de desarrollo de proyecto, comprendiendo desde Servicios, Aplicaciones Web y CTI.

Características Técnicas

El Delphi es un ambiente de desarrollo de softwares con las siguientes peculiaridades:

  1. Visual: La definición de la interfaz e incluso de parte de la estructura de un aplicativo Delphi puede ser realizada con el auxílio de herramientas visuales. Por ejemplo, una pantalla es creada con un simple clic y un botón, seleccionando esta imagen en una barra de herramientas y clicando sobre la pantalla donde él debe aparecer;
  2. Orientada a Objetos: Los conceptos de clase, herencia y polimorfismo son abarcados por el lenguaje de programación del Delphi, el Object Pascal. Esta no es, sin embargo, un lenguaje puramente orientado a objeto como Smalltalk y Eiffel;
  3. Orientada a Eventos: Cada elemento de una interfaz de aplicativo es capaz de capturar y asociar acciones a una serie de eventos;
  4. Compilada: La generación de código en lenguaje de máquina acelera la ejecución de los aplicativos.

Componentes

Delphi dio una implementación muy buena a la idea del uso de componentes, que son piezas reutilizables de código (clases) que pueden interactuar con el EID en tiempo de diseño y desempeñar una función específica en tiempo de ejecución. Desde un enfoque más específico de la herramienta, se catalogan como componentes todos aquellos objetos que heredan de la clase TComponent, donde se implementa la funcionalidad necesaria para interactuar con el entorno de desarrollo, la carga dinámica desde streams y la liberación de memoria mediante una jerarquía. Una gran parte de los componentes disponibles para Delphi son controles (derivados de TControl), que encapsulan los elementos de interacción con el usuario como botones, menus, barras de desplazamiento, etcétera.

Delphi incluye una biblioteca de clases bien diseñada denominada VCL (Visual Component Library, Biblioteca de Componentes Visuales) y, en sus versiones 6 y 7, una jerarquía multiplataforma paralela denominada CLX. Ésta también se incluye en Kylix. Estas jerarquías de objetos incluyen componentes visuales y no visuales, tales como los pertenecientes a la categoría de acceso a datos, con los que puede establecerse conexiones de forma nativa o mediante capas intermedias (como ADO, BDE u ODBC) a la mayoría de las bases de datos relacionales existentes en el mercado. La VCL también está disponible para el desarrollo en .NET.

Además de poder utilizar en un programa estos componentes estándar (botones, grillas, conjuntos de datos, etc.), es posible crear nuevos componentes o mejorar los ya existentes, extendiendo la funcionalidad de la herramienta. En Internet existe un gran número de componentes, tanto gratuitos como comerciales, disponibles para los proyectos a los que no les basten los que vienen ya con la herramienta.

Eventos

Delphi permite de manera sencilla ejecutar trozos de código en respuesta a acciones o eventos (sucesos) que ocurren durante el tiempo que un programa se ejecuta. Por ejemplo, cuando se presiona un botón, la VCL captura la notificación estándar de windows, y detecta si hay algún método asociado al evento OnClick del botón. Si lo hay, manda ejecutar dicho método.

Los eventos pueden generarse debido a la recepción de señales desde elementos de hardware como el ratón o el teclado, o pueden producirse al realizar alguna operación sobre un elemento de la propia aplicación (como abrir un conjunto de datos, que genera los eventos BeforeOpen/AfterOpen). La VCL ha demostrado estar bien diseñada y el control que se tiene a través de los eventos de la misma es suficiente para la gran mayoría de aplicaciones.

AfterDelete Se produce despues de el borrado de un registro AfterEdit Después de editar un registro AfterInsert Después de Insertar After Post Después de grabar los datos BeforeCancel Antes de cancelar la operación BeforeClose Antes de que se cierra la tabla BeforeDelete Antes de borrar BeforeEdit Antes de editar el registro actual BeforeInsert Antes de insertar un registro BeforeOpen Antes de abrir la tabla BeforePost Antes de guardar los datos OnCalcFields Se produce cuando se va a calcular el valor de un campo OnDeleteError Cuando se produce un error al borrar un registro OnEditError Cuando hay un error al editar un registro OnFilterRecord Cuando se activa el filtrado OnNewRecord Cuando se añade un registro OnPostError Cuando hay un error durante el grabado de datos.

Base de datos

Una de las principales características y ventajas de Delphi es su capacidad para desarrollar aplicaciones con conectividad a bases de datos de diferentes fabricantes. El programador de Delphi cuenta con una gran cantidad de componentes para realizar la conexión, manipulación, presentación y captura de los datos, algunos de ellos liberados bajo licencias de código abierto o gratuitos. Estos componentes de acceso a datos pueden enlazarse a una gran variedad de controles visuales, aprovechando las características del lenguaje orientado a objetos, gracias al polimorfismo.

En la paleta de componentes pueden encontrarse varias pestañas para realizar una conexión a bases de datos usando diferentes capas o motores de conexión.

Hay motores que permiten conectarse a bases de datos de diferentes fabricantes tales como BDEDBExpressADO, que cuentan con manejadores para los formatos más extendidos.

También hay componentes de conexión directa para un buen número de bases de datos específicas: Firebird, Interbase, Oracle, etcétera.

A continuación un breve resumen de las capas de conexión disponibles para las bases de datos más populares:

  • Interbase/Firebird: IBX (InterBase eXpress), IBO (IB Objects), MDO (Mercury Data Objects), *DBExpress, BDE, FibPlus, Zeos
  • Oracle: DOA (Direct Oracle Access), NCOci8
  • dBase: BDE
  • FoxPro: BDE
  • Paradox: BDE
  • Microsoft SQL Server: BDE, ADO, *DBExpress
  • mySQL: Zeos (nativo), *DBExpress, BDE y ADO (usando ODBC)
  • Postgres: BDE, ADO, ZEOSDBO

Borland Database Engine (BDE)

Es un motor de conexión a bases de datos de uso bastante amplio y que permite manejar bases de datos de escritorio como dBaseFoxproParadox, además de ofrecer la capacidad para conectarse a servidores SQL locales y remotos. Su uso, va siendo cada vez menor, debido a la pobre gestión de memoria que realiza, sustituyéndolo por componentes más actualizados y especializados como DOAC (Direct Oracle Access Components) o DBExpress, esto sumado a la fiabilidad que están presentando los nuevos gestores de datos en especial tecnologías como RDO y ADO; los cuales son mantenidos por sus fabricantes, forzando la compatibilidad con las versiones preliminares; liberando al programador de actualizaciones en cuanto a gestión de datos. Actualmente ya no es desarrollado por Codegear.

Desarrollo visual

Como entorno visual, la programación en Delphi consiste en diseñar los formularios que componen al programa colocando todos sus controles (botones, etiquetas, campos de texto, etc.) en las posiciones deseadas, normalmente usando un ratón. Luego se asocia código a los eventos de dichos controles y también se pueden crear módulos de datos, que regularmente contienen los componentes de acceso a datos y las reglas de negocio de una aplicación.

Entorno Integrado de Desarrollo (EID)

O IDE en inglés (Integrated Development Environment), es el ambiente de desarrollo de programas de Delphi. Se trata de un editor de formularios (que permite el desarrollo visual), un potente editor de textos que resalta la sintaxis del código fuente, la paleta de componentes y el depurador integrado, además de una barra de botones y un menú que nos permite la configuración de la herramienta y la gestión de proyectos. En las ediciones Client/ServerEnterprise el EID también ofrece integración con una herramienta de control de versiones (PVCS).

Depurador integrado

Es una potente característica que nos permite establecer puntos de ruptura (breakpoints), la ejecución paso a paso de un programa, el seguimiento de los valores de las variables y de la pila de ejecución, así como la evaluación de expresiones con datos de la ejecución del programa. Con su uso, un programador experimentado puede detectar y resolver errores lógicos en el funcionamiento de un aplicativo desarrollado con Delphi. En las ediciones Client/ServerEnterprise se añade la opción de depuración a programas corriendo en equipos remotos (remote debugging), lo que posibilita el uso de todas las características del depurador con un programa ejecutándose en su entorno normal de trabajo y no en el ordenador del programador (en donde muchas veces no ocurren los errores).

Proyectos alternativos

Existen desarrollos de la comunidad del software libre que intentan producir una versión multiplataforma y completamente independiente de Delphi. La más desarrollada es el llamado Lazarus. Descargalo del siguiente Link http://sourceforge.net/projects/lazarus/

Página Oficial de Delphi

http://www.embarcadero.com/products/delphi

Lección 3 – Iniciando el Delphi XE

Deja un comentario

Es momenro de ir a Inicio, Todos los programas, y despues buscar la carpeta llamada: ” Embarcadero Rad Studio XE“, y dar click sobre de ella, para mostrar su contenido. Tal y como se muestra en la figura siguiente.

 

Figura 1. Carpeta de RAD Studio XE.

Figura 2. Contenido de la carpeta RAD Studio XE.

Hemos de dar un click sobre la opción Delphi XE, la cual está sombreada en color azúl en la figura anterior. Inmediatamente despues empezara la carga del Delphi XE, mostrando la siguiente pantalla de inicio (SplashScreen).

Figura 3. SplashScreen de RAD Studio XE, abriendo Delphi XE.

Despues de unos cuantos segundos, dependiendo de tu equipo de computo, se mostrara el IDE (siglas en ingles de Entorno de Desarrollo Integrado), de Delphi XE, tal y como se puede ver en la figura siguiente.


Figura 4. IDE de Delphi XE.

Las herramientas disponibles en el IDE, dependen de la edición del RAD Studio que tu estes usando, esta versión incluye lo siguiente:

  • Página de Bienvenida (Welcome Page)

Figura 5. Página de Bienvenida.

Cuando tu abres RAD Studio, la Página de Bienvenida (Welcome Page) aparece con un número de ligas para desarrollar recursos, como lo son; articulos, entrenamiento, y ayuda en linea. Así como tu puedes desarrollar proyectos, tu puedes acceder rapidamente a ellos ,de la lista d eproyectos recientes en la parte superior de la página. Si tu cierras la Página de Bienvenida (Welcome Page), tu puedes reabirla al seleccionar View > Welcome Page.

  • Las Formas (Form)

Figura 6. Foma o Formulario o Form.

Tipicamente, una forma representa a una ventana o página HTML, en la interfaz gráfica que tú estas diseñando. En tiempo de diseño, una forma es mostrada en la Superficie del Diseñador. Tu agregas componentes desde la Paleta de Herramientas (Tool Palette) a la forma para crear la interfaz de usuario.

RAD Studio provee una rica libreria de formas. Selecciona la forma que mejor se adecue al diseño de tu aplicación. Para cambiar entre el Diseñador y el Editor de Codigo, solo basta un click sobre los tabs debajo del IDE.

Figura 7. Tabs, para cambiar entre el Código, el Diseño y la Historia.

Para agregar formas, selecciona File > New > Other. (Esto lo veremos mas delante en práctica)

  • Diseñador de Formularios (Form Designer)

Figura 6. Diseñador de Formularios.

El Diseñador de Formularios (Form Designer), es mostrado automaticamente en el panel central cuando tu estas usando una forma. La apariencia y funcionalidad del Diseñador de Formularios depende de el tipo de foma que tu estes usando. Por ejemplo, si tu estas usando una FormaWEB (WebForm), el Diseñador mostrara un editor de Tags (etiquetas) HTML. Para acceder al Diseñador, solo da click sobre la pestaña (tab) Design (Diseño) en la parte baja del IDE.

En este punto es necesario aclarar, que: En Delphi encontraremos Componentes Visuales y No Visuales, así que hablemos de los primeros.

  • Componentes Visuales

Los componentes Visuales aparecen sobre el form en tiempo de  diseño y son visibles para el usuario final en tiempo de ejecución.  Estos incluyen muchas cosas, como Botones, Etiquetas, Barras de Herramientas y Cajas de Lista.

Componentes No Visuales

Son aquellos que se colocan sobre el formulario pero, solo son vistos por el desarrollador, ya que solo realizar funciones a nivel de sistema y no de manera gráfica. Esto quiere decir que el usuario final no los puede ver, literalmente, pero si puede comprobar su funcionamiento.

  • Paleta de Herramientas (Tool Palette)

Figura 7. Paleta de Herramientas.

La Paleta de Herramientas (Tool Palette), localizada sobre la columna derecha, contiene elementos para ayudarte en el desarrollo de tu aplicación. Los elementos mostrados dependen de la vista actual.

Por ejemplo, si tu estas viendo una forma en el Diseñador, la Paleta de Herramientas muestra componentes que son apropiados para ese formulario. Tu puedes dar doble click a un componente para agregarlo a tu forma. Tambien puedesarrastrar a la posicion que tu desidas en tu forma. Si tu estas viendo el codigo en el Editor de Codigo, la Paleta de Herramientas muestra segmentos de codigo que tu puedes agregar a tu aplicación.

  • Inspector de Objetos (Object Inspector)

Figura 8. Inspector de Objetos.

El Inspector de Objetos (Object Inspector), localizado a la izquierda, te permite asignar propiedades en tiempo de diseño y crear manejadores de eventos para componentes. Esto provee la conección entre la apariencia visual de tu aplicación y el codigo que hace que tu aplicación funcione. El Inspector de Objetos (Object Inspector) contiene 2 etiquetas (tabs): Propiedades (Properties) y Eventos (Events).

Usa la pestaña Propiedades para cambiar los atributos físicos de tus componentes. Dependiendo de tu selección, algunas opciones de categoria te permitirán introducir valores en una caja de texto, mientras otros requerirán que selecciones valores de una caja desplegable. Para operaciones Boleanas (SI/NO), tú puedes intercambiar entre True (Verdadero) y False (Falso). Despues de que tú cambies atributos físicos a tus componentes, tú crearas manejadores de eventos que te permitirán administrar o manipular los componentes.

Usa la pestaña Eventos (Events) para especificar el evento para un objeto seleccionado por tí. Si el manejador de evento ya existe, usa la caja desplegable y seccionalo. Por defecto, algunas opciones del Inspector de Onjetos (Object Inspector) están colapsadas (cerradas). Para expandir o abrir las opciones, click en el simbolo de (+) para mostrar la siguiente categoria.

  • Administrador de Proyectos (Project Manager)

Figura 9. Administrador de Proyectos.

Los proyectos estan hechos por muchos archivos de aplicación. El Administrador de Proyectos, localizado en la parte superior derecha, te permite ver y organizar tus archivos de proyecto como Formas, ejecutables, ensamblados, objetos, y archivos de librerias. Ademas con el Administrador de Proyectos puedes, remover, agregar y renombrar archivos usando la barra de herramientas o el menu contextual. Tu podras invocar siempre la ventana de Dialogo de Opciones del Proyecto desde el menu contextual, en el Administrador de Proyectos.

  • Explorador de Datos (Data Explorer)

Figura 10. Explorador de Datos.

El Explorador de Datos, te permite buscar un esquema de objeto de base de datos especifico, incluyendo tablas, campos, definicione de procedimientos almacenados, triggers, e índices. Usando los menus de contexto, tu puedes crear y administrar conecciones de base de datos. Tu puedes, ademas arrastrar y soltar datos desde un origen de datos de muchas formas diferentes para construir tu aplicación de base de datos rapidamente.

  • Structure View

La vista de estructura muestra la herencia del codigo fuente o HTML mostrado en el Editor de Código, o componentes mostrados en el Diseñador. Cuando se esta mostrando la estructura del Código Fuente o HTML, tu puedes dar doble click a un elemento y saltar a la delcaración de este, o localizacion del mismo en el Editor de Código.

Cuando se estan mostrando componentes, tu puedes hacer doble click en un componente y seleccionarlo en el formulario.

Si tu codigo contiene errores de sintaxis, ellos serán mostrados en la carpeta de Errores, en la Vista de Estructuras. Tu puedes hacer doble click en un error para localizarlo en el Editor de Código.

Tu puedes contorlar el contenido u la apariencia de la Vista de Estrcutura, seleccionando Tools > Options > Environment Options > Explorer y cambiar las configuraciones.

  • History Manager

El Administrador de Historia, Localizado en el Panel central, te permite ver y comparar versiones de un archivo, incluyendo multiples versiones de respaldo, guardando cambios locales, y el buffer del los cambios no guardados para el archivo activo.

  • Code Editor

Figura 10. Editor de Código.

El Editor de Codigo, localizado en el Panel Central, proporciona una conveniente via para ver y modificar tu código fuente.

  • Debugger

Los depuradores integrados te permiten encontrar y arreglar (corregir), los errores en tiempo de ejecución y los errores lógicos, en tu aplicacion de RAD Studio. Usando los depuradores, tu puedes seguir los pasos del código, asignar puntos de quiebre y relojes, e inspeccionar y modififcar los valores de programa. Cuando tu depuras tu aplicación, el depurador de Windows esta disponible para ayudarte a administrar la sesión de depuración y proveer información a cerca de tu aplicación.

  • File Browser

Tu puedes modificar las operaciones basicas del archivo usando el Buscador de Archivos, una ventana de estilo ajustable en el panel de Busqueda. Ebre el Buscador de Archivos para buscar, renombrar, o modificar el control  de operaciones de un archivo.

Para modificar la operación de un archivo, selecciona: View > File Browser, busca el archivo, da click derecho sobre el archivo y selecciona la operacion a realizar.

Entre otras.

Y hasta aquí el rollo. ya que continuaremos con la práctica.

Lección 4 – Conociendo el Form

Deja un comentario

Una vez teniendo abierto Delphi XE, en la Página de Bienvenida (WelCome Page), en el panel izquierdo (el cual muestro en la imagen debajo d eeste parrafo), realizaremos un click sobre la opción New Project…

Figura 1.- Opciones de Proyectos Recientes.

Despues de un par de segundos cargara la siguiente ventana, la cual lleva por nombre “New Items“, Nuevos Elementos, en español, y de la cual podremos seleecionar  el tipo de desarrollo que deseamos realizar.

Figura 2.- Cuadro de Dialogo “New Items“.

De esta ventana es importante recordar donde se encuentra cada cosa, ya que de ello dependera la facilidad y la soltura con la que desarrollemos en Delphi XE.

Así que: describiré un poco la ventana conforme hacemos el trabajo. En el Panel de la izquierda, puedes visualizár un arbol de directorios, los cuales contienen los diferentes tipos de Proyectos que puedes desarrollar en Delphi XE. Por defecto, en este Panel, se encuentra seleccionado el Directorio de “Delphi Projects” y en la Lista de Proyectos del lado derecho, visualizaremos los mismos, disponibles para cada Directorio de Proyecto. En nuestro caso seleccionaremos el que se llama “VCL Forms Application” y despues click en el botón OK.

Despues de unos 3 a 4 segundos, según las características técnicas de tú PC o Laptop, podras ver que el IDE de Delphi XE a cambiado, y ahora muestra lo siguiente.

Figura 3.- IDE de Delphi XE, con el Nuevo Proyecto cargado.

Como pudes ver, se a agregado un Form (una Forma), a la ventana del Diseñador, dicho Form cuando estemos haciendo las pruebas se convertirá en “La Ventana“. Veamosla un poco más de cerca.

Figura 4.- Form1, de nuestro proyecto.

Así como cualquier ventana de un programa, ya que eso es, pero la diferencia es que nosotors podremos hacer modificaciones a nuestro gusto y necesidad, cuenta con una Barra de Titulo, en la cual se encuentran diferentes elementos:

  1. Icono de la Ventana. (Menu de Control) [izquierda del Form]
  2. Título de la Ventana. [izquierda del Form, del lado derecho del Icono de la Ventana]
  3. Botones de Acción. [Derecha del Form]

Figura 5.- Barra de Titulo del Form1.

En el mismo tenor, podremos encontrar, que el Form, cuenta con Bordes los cuales los puedes ver un poco sombreados. Los cuales los conoceremos por.

  1. Borde lateral izquierdo
  2. Borde lateral derecho
  3. Borde inferior
  4. Borde Superior

Figura 6.- Bordes del Form1.

Por último, el área gris que se encuentra dentro de los bordes. Esta área tiene y a tenido diferentes nombres y apelativos, entre ellos: Grid, Cuerpo del Form, Area de Trabajo del Form, etc. Cualesquiera de ellos se me hace adecuado. Es en este donde colocaremos los componentes que nos servirán, para ayudar al usuario a realizar su tarea de una manera mas facil, eficiente y rapida.

Hasta la Próxima Lección.

Lección 5 – Práctica 1 y Práctica 2

Deja un comentario

Trabajando con Forms

Normalmente todos los cursos, tutotiales y manuales, de programación basados en algun lenguaje comienzan con el clasico “Hola Mundo“. Yo no, me inclino más a pensar en el lado realista de la programación.

Así que; iniciemos el Delphi XE, y en el Inspector de Objetos, buscaremos la propiedad Caption, la cual nos permite escribir texto o tiutlos a los componentes. En nuestro caso el Form1 tiene el siguiente Título o letrero.

Figura 1.- Barra de Titulo del Form.

Como dije en el parrafo anterior, en la Inspector de Objetos, buscaremos la propiedad Caption. Tal y como se muestra en la figura siguiente.

Figura 2.- Inspector de Objetos.

Daremos un click sobre la propiedad indicada, y observaremos que se selecciona el valor de la derecha, la cual es la que debemos de cambiar.

Figura 3.- Propiedad Caption del Form1.

Ahora solo teclearemos, sin comillas: “Mi primera Aplicación“, conforme escribamos el nuevo título, en la Barra de Título de nuestro Form, se vera estará escribiendo. Mostrandose de la siguiente manera.

Figura 4.- Barra de Título del Form1.

Ahora vamos a generar nuestra aplicación. Para ejecutarla, y que sea funcional, presionaremos el botón Run, “Ejecutar” en México. El cual lo encontraremos en la Barra de Herramientas de Delphi XE. Segun lo podemos ver en la figura siguiente.

Figura 5.- Barra de Herramientas de Delphi XE.

Utilizaremos el que puedes ver en la figura anterior, con la imagen de una catarina “un Bugg” y debajo de el una Felcha en verde.

Figura 6.- Botones de ejecución de Delphi XE.

En esta version de Delphi XE, existen dos botónes para  ejecución de una aplicación, el primero, el que no tiene la catarina, se llama “Run Without Debugging“, ejecutar sin sin usar el debugger, y el otro que se llama “Run“, utilizaremos este último, ya que necesitamos que se “Debuggué” la aplicación, para detectar posibles errores y Bugs.

Despues de tanto rollo, tu aplicación ya se debió haber ejecutado, y nuestro resultado será más o menos lo siguiente.

Figura 7.- Ventana en Ejecución de nuestra primer aplicación en Delphi XE.

Diferncias que encontraremos en el Form, antes de ejecutar y despues de ejecutar.

  1. Cuando podemos realizar cambios a un Form, se le denomina “Tiempo de Diseño” y cuando lo ejecutamos se le denomina “Tiempo de Ejecución“.
  2. En Tiempo de Diseño un Form, muestra el Grid, con una serie de puntos, los cuales son una guia, vamos, veamoslo como una regla, para que todo nos salga derecho. Y en Tiempo de Ejecución, el Grid, se observa completamente solido, como cualquier ventana.
  3. El icono que se muestra en la Barra de Titulo de nuestro Form, en Tiempo de Diseño, es el de Delphi Clásico “El del Oraculo de Delphos” y en Tiempo de Ejecución es el de Delphi Nuevo, “La D“.

Ahora bien, ya tienes en tus manos un programa, un ejecutable.

Prueba colocar el puntero del mouse sobre uno de sus bordes y veras, que el puntero del mouse cambia a una doble flecha y si haces click y sin soltar, arrastras, el Form cambiara su tamaño, es decir se redimensionará.

Figura 8.- Ventana redimensionada en Delphi XE.

Como puedes ver en la imagen, un Form se puede reducir a su minima expresión. Lo cual desde el punto de vista lógico, no es viable y no debe de ser permisible. Así que para corregir esto….

Práctica 2

Seguiré trabajando con el proyecto anterior, asi que, una vez abierto.

Busca en el Inspector de Objetos, la propiedad BorderStyle, y cambia su valor a bsDialog, tomando en cuenta que su valor original era bsSizeable.

Figura 9.- Propiedad BordesStyle del Fom1.

Ahora, dale un vistázo a tu Form, ya tiene el soguiente aspecto.

Figura 11.- Fom1, con borde de estilo Dialog.

Este tipo de borde quito el icono y los botones de Maximizar y Minimizar.

Si utilízo el valor bsNone, en la propiedad BorderStyle, obtendre algo como esto.

Figura 12.- Fom1, sin bordes.

Este tipo de Forms es muy util en algunos caso, si ejecutaste tu aplicacion y no encuentras como terminar la ejecución, realiza el siguiente atajo de teclado, Alt +F4.

Si lo que nos gustaria es tener un borde, con estilo del tipo de las Barras de Herramientas Flotantes, pues asignamos el valor bsToolWindow, a la propiedad BorderStyle. Con lo cual obtendremos un resultado como este.

Figura 13.- Fom1, con borde estilo Barra de Herramientas Flotante (bsToolWindow).

Trabajaremos con este ultimo estilo de borde, ahora, trabajaremos un poco con los colores de fondo para un Form, este uno de los puntos debiles de Delphi, no se coloca una amplia gama de colores, solo los mas “tradicionales“, para desarrollo, pero para aquellos mas avidos en el rollo del diseño de aplicaciones, pues buscamos algunos Skins o realizamos gradientes de color, dobre los Forms.

Lo que haremos ahora es seleccionar en el Inspector de Objetos, la propiedad Color.

Figura 14.- Propiedad Color, del Form1.

Como podemos ver al dar click en la caja desplegable (sobre el botón con la flecha hacia abajo), se muestra el listado de colores disponibles en Delphi.

Figura 15.- Listado de colores del Form1.

A mí me agrada el color verde, así que yo seleccionaré el color llamado “clMoneyGreen“, y como podras ver el Form1, se coloreó de un tono verde claro.



Figura 16.- Form1 con color de fondo seteado a verde.

Ejecuta tú aplicación, bonita ¿No?, ¿Te fijaste en que posicion se colocó al ejecutarse?. ¿Noooo?, Entonces cierrala y vuelve a ejecutar. La mia sale un poquitin alineada a la izquierda y arriba. Eso es porque al generarse el archivo .exe, se toma la posicion relativa del formulario. Pero que pasa si deseamos que se muestre en el centro.

Pues muy fácil, solo buscamos la propiedad que se llame Position (Posición), la cual por defecto tiene el valor “poDefaultPosOnly“, lo cual quieres decir “Solo la posición por defecto”. Desplegaremos sus opciones, del mismo modo que lo hicimos con los colores, y seleccionaremos poScreenCenter. Como te lo estas imaginando, si este valor permitira que nuestro Form se active en el centro de la pantalla.

Ejecuta y verifica lo antes mencionado, con tus propios ojos.

Bien, pero que paso si lo que deseamos es que nuestra ventana, no quede oculta detras de otras que no son de nuestro programa, por ejemplo, cuando activas el Windows Media Player, este siempre se muestra encima de otras ventanas, si la opción esta activada.

Esto tambien lo haremos muy fácil, busca la propiedad FormStyle, la cual ahorita tiene un valor de “fsNormal“, y lo cambiaremos por “fsStayOnTop“, como es de suponerse el primero, permite que la ventana se pueda quedar detras de otras ventanas de nuestra propia aplicación o de otros programas que se esten ejecutando. Y la segunda activa a nuestro Form, para que siempre este encima de las demas ventanas.

Figura 17.- Form1 con FormStyle Normal.

Como puedes darte cuenta la ventana activa es el Windows Media Player, y nuestra aplicación se oculta detras al manipular otra aplicación.

Figura 18.- Form1 con con FormStyle StayOnTop.

Ahora, como puedes darte cuenta la ventana activa sigue siendo el Windows Media Player, pero nuestra aplicación se muestra sobre la activa gracias a esta propiedad.

Por el momento hemos terminado con el formulario. guarda los cambios de tu aplicación.

Nos vemos en la próxima.

Lección 6 – Práctica 3

2 comentarios

Agregando Componentes a nuestro Form

Bienvenido, a esta nueva lección, aquí vamos a aprender como organiza Delphi los componentes y como se colocan en un Form.

Genera una Nueva Aplicación y guardala, en una carpeta con los nombres por defecto, recuerda que se guardaran dos archivos, el del Proyecto y el del Form.

EL IDE de Delphi muestra las siguientes partes.

  1. La ventana Structure
  2. La ventana Object Inspector
  3. La ventana  Project Manager
  4. La ventana del Tool Palette

La que nos interesa es Tool Palette, y como puedes ver se encuentra del lado derecho, en la parte baja.

Como ami me gusta ver esta ventana más amplia lo que hago es minimizar el Project Manager, por medio del botón PIN.

Lo cual hará que nuestra Tool Palette, se amplie, en todo el costado derecho del IDE de Delphi.

Y aun así comprobaras que no caven todas las pestañas que agrupan a los componentes.

Bueno, cada pestaña mostrada en el Tool Palette, contiene una serie de componentes, los cuales se encuentran agrupados, de acuerdo a su uso, el cual es nombre de la pestaña. Para visualizar el contenido de cada pestaña solo basta con dar un click sobre de ella.

Los componentes mas comunes se encuentran en la pestaña Standard; como lo son: Los Menus, La etiqueta, El cuadro de texto, El Memo, El Botón, Los botones de selección y de revisión, La caja de lista, La caja desplegable, Las barras de desplazamiento, El grupo de botones de radio, y El panel.

Para empezar trabajaremos con algunos componentes de esta pestaña, ahorita tenemos nuestro formulario solo.

Colocar los componetes en Delphi puede ser de dos formas diferentes:

  1. DobleClick sobre el componente deseado.
  2. Un click sobre el componente deseado y despues un click sobre el Grid del Form.

En esta aplicación, colocaremos dos componentes TLabel (una Etiqueta), para colocar un texto de información al usuario.

Y la colocaremos en el costado izquierdo del Form, los componente s colocados en el Form los puedes mover libremente por el Form, haciendo click sobre el componente y arrastrarlo a la posicion dedseada.

Ahora cambiemos el titulo del Form, ya lo habiamos hecho antes, pero ahora debemos de tener la precaución de seleccionar el Form y no otro componente. Como nos daremos cuenta que componente esta seleccionado, muy facil, con los tiradores que aparecen en los bordes de los objetos o bien por medio del Object Inspector, el cual debe de mostrar el nombre del objeto seleccionado.

El titulo que le colocaremos sera “Saludo“.

A continuación cambiaremos el texto por defecto del Label1, tambien por medio de Caption, a “Hola:” y el texto por defecto del Label2, lo eliminaremos, es decir  no habra texto escrito en él.

Esta imagen muestra el resultado final.

Pero, realmente que es lo que deseamos hacer, bueno lo que deseamos hacer es: que al iniciar la aplicación, automaticamente nos mande un saludo personalizado, asi que para ello, procederemos a realizar nuestro primer evento.

Así que selecciona el Form, y en el Object Inspector, y da un click sobre la pestaña Events.

Esto nos llevará a los eventos del objeto seleccionado. Y buscaremos el llamado evento “onShow“, el cual es el que se ejecuta cuando se muestra el Form. Para generar el codigo del evento onShow, necesitamos dar doble click sobre la caja desplegable que se muestra justo a la derecha del nombre del evento, ver imagen siguiente.

Una vez echo el doble click dentro de la caja desplegable, se abrira la ventana del Editor de Código, mostrando el codigo cabecera del evento onShow() del Form1;


Analicemos un poquitín esta ventana, en primera instancia aparece la linea: procedure TForm1.FormShow(Sender: TObject);, la cual es la cabecera d econstrucción del evento Show, del Form1.

La segund ay tercer linea: beginend;, indican el inicio y fin respectivamente del codigo que se debera de realizar, es decir el codigo contenido dentro de estas dos lineas se ejecutara, siempre y cuando formen parte de un evento, rpocedimiento, metodo o función.

La utlima linea que apoarece, no es parte del evento, esta linea, end. indica que aquí se termina el código de el Form.

Empecemos con el código, asi que para poder colocar un texto al componente Label, pero en ejecución, tenemos que referenciar al componente y  asignarle el nuevo valor, para esto escribiremos el código siguiente, dentro de las lineas Begin y  End;.

Label2.Caption:=’Ricardo Bustamante’;

Conforme escribas el texto, veras que aparece la ayuda en linea, solo despues de haber puesto el punto que separa al nombre del componente, de su propiedad, segun se ve en la imagen siguiente.

Explicaré la sintaxis del código anterior.

Label2, hace referencia al nombre del componente, el cual lo podemos comprobar seleccionado el componente y dirigiendo la mkirada al Objetc Inspector, en el aparatado donde muestra el nombre d elos componentes, que ya habiamos visto antes.

. (punto), así como en muchos lenguajes de programación el . (punto), es el separador de elementos de código.

Caption, es la propiedad la cual queremos utilizar, ya sea para asignar un valor inicial, como es en este caso, o para cambiar el valor.

:= es el signo de asignación que utiliza Delphi, ya que la mayoria de los lenguajes utiliza el =.

en este caso se utilizo lo siguiente ‘Ricardo Bustamante’, coloque mi nombre dentro de comillas simples, porque es una cadena de caracteres, todas las cadenas de caracteres deben de estar escritas dentro de comillas simples ‘ ‘.

; es el terminador de instrucción, todas las instrucciones que no sean estructuras de control, deben de llevar ;

Ahora ejecutemos la aplicación. El resultado final será eñ siguiente.

Bonita, ¿No?, pero esto no es nada, pero bueno por algo se empieza.

Hasta la próxima

Lección 7 – Práctica 4

1 Comentario

Trabajando con Texto

En esta práctica aplicaremos los conocimientos basicos obtenidos en la Lección 6, pero subiremos un poco el nivel de la aplicacion ya que trabajaremos con la manipulacion de texto, entre componentes.

Genera una nueva aplicación en Delphi, en la que agregarás 2 componentes Label, un Edit y un Button, según se puede ver en la imagen.

Figura 1.- Form con los componentes colocados en él.

Ahora vamos a cambiar las propiedades de estos componentes, segun lo siguiente.

Componente                Propiedad             Valor

Label1                                   Caption                 Nombre:

Label2                                   Caption                 “sin texto”

Edit1                                       Text                       “sin texto”

Button1                                  Caption                 Saludar

El resultado de nuestro Form, despues de haber realizado los cambios antes indicados seria..

Figura 2.- Form con las propiedades de los componentes asignadas.

Ahora asignemos los bordes del Form1, a bsSingle, recuerda que esto lo haremos por medio de la propiedad BorderStyle. Y el titulo del Form, debera de ser “Saludo con botón“.

Lo que haremos ahora, será generar el evento click del Button1, si el que dice Saludar, para ello tenemos dos maneras.

1. Primero la manera correcta, Selecciona el Button, con un solo click, en el Object Inspector, click sobre la pestaña Events. Y en el listado de Eventos, busca el que dice onClick, despues doble click sobre el area de texto de la caja desplegable. Y listo debenos de tener un codigo similar al siguiente.

Figura 3.- Código del Evento Click del Button1.

Como saber que este es el evento correcto?, muy fácil. La primer linea del código, Hacer las siguientes referencias:

TForm1 —-> referencia al Formulario Form1.

. ———>   Separador entre Objeto y Evento.

Button1Click —–> referencia al evento click del Button1

2. La forma fácil, de generar el evento, doble click sobre el Button.  Y listo. Pero debes de tener en cuenta que esto del doble click sobre un componente, genera el evento click, generalmente, y que si queremos otro evento diferente a click, debemos de realizar los pasos descritos en el punto 1.

Ahora bien vamos a validar que el Edit tenga datios escritos. Asi que el codigo que agregaremos al evento será.

if (edit1.Text=”) then

ShowMessage(‘La Caja de Texto Esta Vacia’)

else

label2.Caption:=’Hola: ‘+ Edit1.Text;

En la primer linea utilízo un if, para comparar si el Edit esta vacia (sin caracteres),  observa las comillas, son dos comillas simples. Aquí en Delphi se utilíza ‘ (comilla simple) para representar las cadenas de caracteres, y la sintaxis de esta sentencia es Si (condicion) Entonces Acción (en esta parte de acción, van los codigos que queremos que realice si la condición se cumple).

En nuestro caso si la casilla d etexto esta vacia, mandamos un mensaje indicando el error. Esto por medio de la funcion ShowMessage();

Sino se cumple la condicion (else), realizar los siguiente. Es decir si existen datos en la casilla de texto, Mostrar el contenido de la casilla (que en teoria debes de teclear un nombre) en el Label2, pero le concatenaremos (uniremos) antes el texto “Hola “, y como puedes verlo en el código anterior, la union de cadenas de texto se realiza con el signo + (mas). Sin olvidar dejar un espacio en blanco (caracter blanco), para que los textos no se muestren pegados.

Ahora ejecutemos y veamos el resultado.

Figura 4.- Introduciendo los datos en la Casilla de Texto.


Figura 5.- Al hacer click sobre el botón Saludar, se muestra el saludo en la etiqueta inferior.

Resumen: Utilizamos los componentes Label, Edit y Button, aprendimos dos maneras diferentes de generar eventos, pasamos texto de un componente a otro, en tiempo de ejecución, por medio de un evento que activara el ususario (Click del Botón), concatenamos o unimos textos, uno predefinido en el código con otro definido por el ususario por medio de la casilla de texto.

Hasta la Próxima.

Lección 8 – Práctica 5

Deja un comentario

Manejo de Excepciones.

Para el manejo de excepciones en Delphi, contamos con una funcion de tratamiento deexcepciones, de esta forma, nosotros podemos capturar los posibles errores que se produzcan en nuestra aplicacion, de una forma mucho mas ordenada y sencilla, con el fin de evitar que nuestra aplicación se congele, o el usuario vea en pantalla errores de aplicacion incomprensibles.

Las excepciones son, entonces, mecanismos que se crean explícitamente para facilitar el reporte de un error al usuario y/o para tratar estos errores.

En Delphi, las excepciones nos permiten designar áreas específicas de nuestro código para tratar errores. En particular, puedes proteger partes de código de tal forma de que si ocurre un error durante la ejecución de ese código, el problema sea tratado en un área diferente por una serie de rutinas creadas explícitamente con ese único propósito.

as excepciones, además, tienen 3 ventajas muy importantes:

a) muestran mensajes de error automáticamente y… **
b) nos ayudan a evitar la ejecución accidental de código luego de que ocurre un error y…
c) nos permiten asegurarnos de que ciertas porciones de código se ejecutarán, aún cuando ocurra algún error.

Nota: ** esto ocurre gracias a que Delphi ya tiene una serie de mensajes “estándar” incorporados. Sin embargo, también es posible que nosotros generemos nuestros propios mensajes de error si se quiere más … “explicativos”.

Como vimos, hay diferentes “casos especiales” con los que podemos tropezar durante nuestra vida como programadores. Pero ¿cómo hacer para que Delphi sepa que tal o cual es una situación “excepcional”? Muy fácil, sólo debemos utilizar los bloques try-except de la manera apropiada.

Delphi nos permite utilizar las palabras reservadas tryexcept.

Hagamos un ejemplo.

El ejemplo clásico del tratamiento de una excepción, seria tratar de sumar dos valores contenidos en componentes Edit. Pero que realmente los dos valores no se hayan tecleado, o uno de ellos si y el otro no o que ni siquiera sean números. El siguiente código nos enseña cómo utilizar un bloque try..except para mostrar un mensaje de error “más elegante“.

Crearemos una nueva aplicacion en Delphi. Y en el Form colocaremos los componentes que se ven en la imagen.

Figura 1.- Form con los componentes colocados.

Ahora cambiemos un poco sus propiedades para que se vea mas o menos de la siguiente manera.

Figura 2.- Form con las propiedades de los componentes asignadas.

OJO: Fijate bien que el Label4, solamante no tiene texto escrito, no fue eliminado.

Ahora bien caqmbiemos mas propiedades, pero solo de las etiquetas, seleccionaremos las etiquetas, que tienen letrero o titulo para el ususario (Número 1:, Número 2: y Resultado:), en el Object Inspector, situate sobre la propiedad Font (Fuente), si eres muy observador, ya habras notado el signo de + que aparece a la izquierda de la propiedad Font, click sobre de él, y se deplegará como si fuera arte de magia sus subrpopiedades.

De estas últimas, nos interesa la que se llama Style (Estilo), la que nos permitira cambiar al estilo negritas, italica, subrayado o tachado, del texto. Nos interesa fsBold (Negritas) y le asignaremos el valor true, segun se ve en la imagen siguiente.

Figura 3.- Asignación del valor true a la subpropiedad fsBold del Estilo del Texto.

Esto es para que el estilo del texto de estas etiquetas sea negritas, tal y como se ve en la siguiente imagen.

Figura 4.- Resultado final de las Etiquetas, habiendo aplicado fsBold a true.

Generemos el evento click del Button1 (Calcular). Y colocquemos un try, pero ten cuidado ya que Delphi coloca automaticamente un finally, el cual no nos sirve de nada, si aparecio borralo y continua poniendo el código, tal como se muestra a continuación.

try

Label4.Caption:=IntToStr(StrToInt(edit1.text) + StrToInt(Edit2.Text));

except

ShowMessage(‘Error, Nos se puede realizar la operación. No son numeros’);

end;

Explicaré un poco el código.

Try —->  Intenta

Label4.Caption:=  —–> La etiqueta contendra la suma de lo que se encuentra en Edit1 y Edit2

IntToStr( ) —-> Función que permite convertir un valor de tipo Entero a Cadena de Caracteres (IntToStr).

StrToInt(  ) —–> Función que  permite convertir un valor de tipo Cadena de Caracteres a Entero (StrToInt)

Y si te fijas bien la funcion IntToStr(   ), agrupa en su interior a otras dos funciones StrToInt, de las cuales cada una de ellas trabaja con los Edit1 y Edit2, respectivamente.

Es decir, leyendolo desde adentro.

StrToInt(edit1.text) —–>  Convierte lo que contiene el Edit1 de Cadena de Caracteres a número Entero

+ ——->     Suma el dato antes convertido con el siguiente dato a convertir

StrToInt(Edit2.Text) —–>  Convierte lo que contiene el Edit2 de Cadena de Caracteres a número Entero

Si los datos no fuesen convertido  no se pudieran sumar los numeros tecleados.

Ahora el resultado seria de tipo numero entero, es por esa razon que IntToStr(  ), agrupa a la operacón antes descrita, para poderla convertir a cadena de caracteres y que se pueda mostrar en una etiqueta, ya que los componentes de texto solo pueden mostrar propiamente Texto.

Por último, genera el evento click del Button2 (Salir), y coloca el siguiente código.

Application.Terminate();

Creo que es muy obvio.

Ahora ejecuta tu aplicación.


Figura 5.- Introduciendo datos en la apliacación.

Figura 6.- Calculando Datos, y obteniendo resultado.

Y cunado introducimos un número en la primera casilla de texto y en la segunda no. Obtendaras un error del Compilador, similar a este.

Figura 7.- Error del Compilador para valores “”, vacios.

Esto no indica otra cosa que no puede realizar operaciones con números y valores “”, en Blanco, por decirlo de esta manera. Se a producido una excepción que no se puede controlar. Como somos muy buenos programadores y ya hemos entendido, que esta tecnica de programación es importante y la utilizaremos en todas nuestra aplicaciones, pues seleccionaremos la opción Ignore this exception type, y daremos click en el botón continuar.

Figura 8.- Error del Compilador para valores “”, vacios.

Y ahora si, se ejecuta la parte del except, el mensaje al usuario indicando que no se ha podido realizar la operación.

 

Listo terminamos esta práctica.

Hasta la próxima.

 

 


Lección 9 – Práctica 6

Deja un comentario

Forms Modales y No Modales

Dentro de los formularios de Windows tenemos:

  1. Formularios modales, los cuales no permite interactuar con otros formularios (permiten solo unainstancia de un formulario) que se estánejecutando en el mismo hilo.
  2. Formularios no modales, que si permiten crear más de unainstancia del mismo formulario en un mismo hilo.

Genera un nueva aplicacion en Delphi.

Como primer paso, en esta práctica, vamos a controlar la salida de nuestra aplicación, es decir cuando el usuario presione el botón de cerrar de la barra de titulo de nuestra aplicación.


Figura 1.- Form1, y su botón cerrar.

Como solo tenemos el Form, en esta aplicación, nos dirigiremos directamente al Object Inspector, para acceder a los eventos por medio de la pestaña eventos.

Figura 2.- Eventos del Form1.

Ahora buscaremos el evento onCloseQuery, que le pertenece al formulario. Expliquemos esto un poquitín antes de continuar, OnClose es un evento que se activa al cerrar el Form, es decir se produce el evento OnClose. Éste hace una llamada al evento OnCloseQuery para comprobar si es correcto cerrar el Form. Si OnCloseQuery devuelve el valor false, el Form no se cierra. En otras palabras OnCloseQuery, es el que indica a onClose si el Form, se cierra o no.

Una vez generado el evento OnCloseQuery (debiste de haber dado doble click sobre el area de texto de la caja desplegable), deberas de tener algo similar a esto.

Figura 3.- Evento CloseQuery del Form1.

Ahora programaremos este evento que valida si el usuario a dado click en el boton cerrar, por medio de los siguiente.

if (MessageDlg(‘Desea salir?’, mtInformation, mbOKCancel,0)) = mrOk then

Application.Terminate()

else

CanClose:=false;

 

¿Que es esto? Bueno esto es una caja de mensaje, hermana de la que utilizamos en la aplicación anterior, la otra fue ShowMessage(), en este caso utilizamos un MessageDlg(), el cual lo podemos personalizar, es decir colocar botónes, y validar el uso de ellos. Entonces; lo que hacemos es mandar un mensaje por medio de esta caja de mensajes, y que dice “Desea salir?“, seguido pro el tipo de icono que se puede colocar en esta caja de mensajes, despues la combinación de botones que existen para este tipo de cajas, el numero cero que aparece es un valor de contexto, el cual despues explicaremos, pero sin el no funciona esta vaja de mensaje.

La caja de mensajes que creamos en el paso anterior sería la siguiente.

Figura 3.- Caja de Mensaje personalizada, por medio de la función MessageDlg().

Si te fijas muy bien los botones que colocamos fueron OK y Cancel.

Guarda y ejecuta tu aplicación, y trata de cerrar y obtendras la caja de mesnsaje anteriormente mostrada. Inclusive si utilizara el hook Alt +F4, obtendras el mismo resultado. Facilísimo controlar la salida del usuario de nuestra aplicación.

Continuamos ocn el segundo paso, el cual es el que nos atañe crear Forms Modales. Pero antes de ir a la práctica un poquitin de rollo.

Los Forms y los cuadros de diálogo pueden ser modales o no modales.

Un Form o cuadro de diálogo modal debe cerrarse u ocultarse para que el usuario pueda continuar trabajando con el resto de la aplicación.

Es conveniente que los cuadros de diálogo que muestran mensajes importantes sean siempre modales. El cuadro de diálogo Acerca de (About) de Embarcadero Delphi, es un ejemplo de un cuadro de diálogo modal. ShowMessage es un Form modal que puede utilizar.

Los Form no modales permiten alternar el foco entre dos Forms sin necesidad de cerrar el Form inicial. El usuario puede continuar trabajando en otro lugar, en cualquier aplicación, mientras se muestra el Form.

Los Forms no modales son más difíciles de programar, porque el acceso por parte de los usuarios se produce en un orden impredecible. Se ha de mantener la aplicación en un estado coherente con independencia de lo que haga el usuario.

Con frecuencia, las ventanas de herramientas se muestran de forma no modal. Esto es, que nuestros Forms, comunmente creados son no modales.

El cuadro de diálogo Buscar, accesible desde el menú Search de Rad Studio, es un ejemplo de cuadro de diálogo no modal. Utilice formularios no modales para mostrar comandos o información utilizados con frecuencia.

Espero haber sido lo sificientemente claro. Ahora vamos a poner las manos y nuestro cerebro a trabajar.

Necesitaremos agregar un Form, nuevo nuestra plicación, y para ello tenemos diferentes maneras de hacerlo, las cuales mencionare a continuación.

Primera Forma.

  • En el Project Manager (Administrador de Proyectos), se encuentra nuestro arbol de elementos de nuestra aplicacion, con los siguientes elementos: Project Group1, dentro de el se encuentra Project1.exe y dentro de este se encuentran, Build Configurations y Unit1.pas.

Figura 4.- Project Manager, mostrando los archivos del proyecto actual.

  • El que nos interesa es el llamado Project1.exe. Sobre de el realizamos click derecho del mouse, con lo cual obtendremos el siguiente menu contextual.

Figura 5.- Menu contextual del proyecto.

  • De él nos interesa la opción Add New ->, en donde solo basta colocar el puntero del mouse sobre esta opción, para que se desplieguen sus opciones.

Figura 6.- Opción Form, del submenu Add New, del menú contextual del proyecto.

  • De las opciones mostradas, click en Form.

Inmediatamente veremos que aparece un nuevo Form, llamado Form2.

Segunda Forma.

  • Por medio del menú File.
  • Colocamos el puntero del mouse en New ->
  • Y por último click en Form – Delphi.

Figura 7.- Insertando un Form desde el menú File.

Inmediatamente veremos que aparece un nuevo Form, llamado Form2.

Bueno ahora debes de tener dos pestañas en el diseñador o editor de código, segun lo que tengas abierto.

Figura 8.- Diseñador con las 2 pestañas de los correspondientes Units.

Lo cual indica que ya tenemos agregado a nuestro proyecto el segundo Form.

Regresemosnos al Form1, y coloquemos dentro de él un componente Button, por el momento en cualquier parte que desees colocarlo, cambiemosle su texto por medio de la propiedad Caption al siguiente: “Mostrar Form2“, como sera muy obvio ajustaremos el tamaño del Button1.

Ahora generemos su evento click, obviamente estoy hablando del Button1. Y coloquemos el siguiente código dentro de este evento.

form2.ShowModal();

Y como puedes observar nos marca, este código como si hubiera un error, de hecho existe un error, ya que el Form2 es independiente del Form1, así que debemos declarar el uso de la clase Form2, dentro de la clase Form1.

Para hacer esto tenemos dos formas;

  • una de ella la manera “conchuda”, dejar que Rad Studio, nos indique que falta la declaracion de la clase Form2, dentro de Form1 y responder Si a la pregunta “¿Desea agregar la declaracion uses del Form2 en el Form1?”.

¿Pero como se hace esto? Muy facil solo ejecutaremos la aplicación y obtendremos el siguiente mensaje (el cual es el que describí an el parrafo anterior).

Figura 9.- Caja de mensaje indicando la falta de declaracion del Form2 en la clausula USES del Form1.

Despues de hacer click sobre el boton Yes, aparecerá el clasico mensaje de error del compilador indicando que falta algo, ya que apenas que realizamos el click en Yes de la ventna anterior, se agregó el código faltante. Ahora acepta el mensaje de error y ejecuta nuevamente.

Debe de mostarse la ventana, que representa al Form1, tal y como se muestra a continuación.

Figura 10.- Ventana principal en ejecución.

  • La segunda forma de instanciar la clase del Form2 en el Form1, se realiza de la siguiente manera.

Ir al código del Unit1, presionando la tecla F12, si es que estamos visualizando el Form1.

Localizar la instrucción Implementation, justo debajo de ella debemos de teclear el siguiente código.

uses Unit2;

Lo cual indica, literalmente, usa el Unit2. Solo por si algun despistado no encuentra la instrucción Implementation, muestro la imagen con el código insertado.

Figura 11.- Ventana principal en ejecución.

Ahora si ya puedes ejecutar, si es que usamos este metodo de declaración.

Una vez que ya tenemos la ventana principal en nuestra pantalla, presionaremos el botón que dice “Mostrar Form2“, y abre la ventana secundaria, la cual no editamos para nada.

Figura 12.- Ventana secundaria mostrada sobre la ventana principal.

Ahora trata de pasarte a la ventana Principal y no te lo permitira, de hecho escucharas un sonido de error. y veras un parpadeo de la ventana secundaria.

Listo, terminamos una aplicacion con ventanas Modales.

Hasta la próxima.

 

 

 

Lección 10 – Práctica 7

Deja un comentario

Validando Entrada de Datos.

Generemos una nueva aplicación en Delphi y agreguemos 4 componentes Label, 2 Edit y 2 Button, segun se ve en la siguiente imagen.

Figura 1.- Form1 conteniendo componentes situados en su lugar.

Como titulo de formulario colocaremos “Sumadora” y a los Label les colocaremos los siguientes valores a su propiedad Caption.

Label1 —>  Número 1:

Label2 —>  Número 2:

Label3 —> Resultado:

Label4 —> “En blanco”

Edit1 —>  “En blanco”

Edit2 —>  “En blanco”

Buttton1 —> Calcular

Button2 —> Salir

Además deberás de colocar el texto estilo negritas a los Label 1, 2 y 3. Tal como lo muestro a continuación.

Figura 2.- Form1 conteniendo componentes con sus propiedades modificadas.

Deseamos validar que en los Edits no se pueda escribir otra cosa que numeros. Y para ello tenemos dos iteraciones diferentes, una de ellas es utilizar los caracteres Unicode que representan el teclado utilizando la interferencia del mismo. La otra es utilizar el codigo ASCII para la validadcion de números.

Generaremos el evento onKeyPress, del Edit1.

Este evento se lleva a cabo cunado el usuario presiona una tecla, cualquiera que sea esta. Elcódigo que colocaremos sera el siguiente.

if not (Key in [#8,#13,'0'..'9']) then

begin

Beep;

Key:= #0;

end;

Osea que, ¿que?.  Bueno vamos a explicar esto. Es un simple if, en el cual la diferencia radica, en que; la validadción la realizamos por medio de una variable llamad Key, que le pertenece al evento onKeyPress del Edit1. y la manejamos como un arreglo, para introducir todos los valores de teclado que queremos validar.  En este caso; #8 hace referencia a la interrupción de la tecla Retroceso (Back Space – Alias Borrar) y #13 hace referencia a la interrupción de la tecla Enter. el resto aunque parece muy facil, lo explicare. ’0′..’9′,  si la tecla presionada es 0 hasta el 9.

Entonces si las teclas presionadas no son Enter, Retroceso o del 0 al 9, realizar un Beep (sonido), y Key, no permite escribir nada el el componente activo.

Ahora bien, ejecuta, observa y escucha lo que pasa, cuando das un teclaso inadecuado.

Continuemos con el segundo metodo. Así que generaremos el evento onKeyPress del Edit2 y ahora utilizaremos el siguiente código, para hacer exatamente lo mismo, pero usando el código ASCII.

if key<chr(48) then

begin

Key := chr(0) ;

showmessage(‘Error. Debe ingresar Numeros’);

end;

if key>chr(57) then

begin

Key := chr(0) ;

showmessage(‘Error. Debe ingresar Numeros’);

end;

Los caracteres ASCII que representgan a los numeros del 0 al 9 son desde el valor ASCII 48 al 57.

A diferencia de el primer evento onKeyPress del Edit1, no existe algo visual, que nos indique el error, lo cual es correcto. Pero en este caso, mostramos mensajes de error al usuario.

Figura 3.- Aplicación en ejecución, mostrando mensaje de error al tratar de introducir datos incorrectos en la segunda caja de texto.

 

El paso siguiente será programar el botón de “Calcular“, ya que nuestra aplicación es una sumadora, o sea que suma números. Así que manos a la obra. Generemos el evento click del Botón titulado “Calcular“.

En este caso, la tarea primordial será validar que las cajas de texto tengan datos, recordemos que ya validamos que los datos tecleados sean solo números. Así que para ello utilizaremos una sentencia if — then — else. Tal y como lo muestro en la figura siguiente.

 

Figura 4.- Código del evento click del Botón “Calcular“.

Lo que estamos haciendo en este código es:

Declaramos una variable de tipo entero, esto mediante el estatuto de declaraciond e variables var, que se coloca justo debajo de declaración del evento click. Como puedes darte cuenta, se coloca el nombre de la variable (el cual tu lo asignas) despues el operador : (dos puntos), el cual es el signo de asignacion para los tipos de datos, por ultimo hay que colocar, el tipo de dato, el cual define que datos son los que se van a almacenar en dicha varibale, y trerminamos con un ; el cual es un terminador de instrucción.

Despues, dentro del cuerpo del evento click del botón, es decir despues del begin.

Utilizaremos la sentencia if, para evaluar si una u otra de las cajas de texto contienen (esto significa vacio, nada escrito en ellas), si alguna de ellas no contiene números escritos, mandaremos a pantalla un mensaje de error, esto por medio de una caja de mensajes (Las cuales veremos a mayor profundidad en la siguiente práctica), fijate muy bien que no he colocado el ; al final de la función ShowMessage( ), ya que el else, que forma parte de la sentencia if, no soporta el terminador de instruccion de una linea antes que el.

Despues coloco un bloque beginend, justo despues del else, ya que en caso de que en ambas cajas de texto se encuentre tecleado un valor numérico, se debe de hacer la operacion y asignar el resultado a algún componente.

 

 

 

 

 

 

 

 

 

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 26 seguidores