Tutorial de Delphi Versión 6.0 Prof. Dulmar Tovar Universidad de Oriente - Anaco 20/02/2015 Sanchez Adargelis 21.629.029 Moreno Rosmaira 21.629.056 Celis Dagnarys 25.671.130 Falzarano Daniello 24.504.703 Yacoub José 21.041.318
Página 2 Tutorial de Delphi
INDICE Historia 4 Creación de un programa en Delphi 5 El Entorno de Desarrollo Integrado 6 La ventana Principal 7 Componentes de la Paleta Standard 7 El Inspector de Objetos 7 Formularios 8 Ficheros o archivos de un proyecto Delphi 8 Propiedades y Eventos 9 Programación 11 Estructura de un programa en Delphi 12 Estructura Condicional if..then..else 12 Estructura Selectica case 13 Ciclo for 14 Ciclo While 14 Ciclo Repeat 14 Ejemplos 14 Lineal Ejercicio nro. 16 15 Con estructura Selectiva Ejercicio nro. 4 19 Con Ciclo Ejercicio nro. 13 23 Bibliografia 27 Página 3
Historia Delphi se inicio como un nombre código para la versión beta de un proyecto de desarrollo confidencial en Borland: un ambiente de desarrollo visual de próxima generación para Windows basado en el lenguaje de programación de Borland Object Pascal. El nombre código surgió a mediados de 1993, luego que el equipo de desarrollo estuvo a través de casi 6 meses de profunda investigación, ejercicios de pruebas de conceptos, y análisis de mercadeo. Algunos miembros del entonces equipo de desarrollo de Pascal estuvieron ocupándose del tema alrededor de la oficina del gerente de Desarrollo Rápido Gary Whizin, participando en tormentas de ideas sobre nombres código claves para ser usado en el nuevo producto. Alrededor de 10 personas pertenecientes a los dptos de R&D, QA y Marketing. Era frecuente ver a Anders Heilsberg, Chuck Jazdzewski, Allen Bauer, Zack Urlocker, Richard Nelson, Danny Thorpe, entre otros. Borland tiene una larga historia de nombres código inusuales, ajustándose a la práctica que sugiere asignar nombres códigos que no tengan una relación directa con el producto en cuestión. Gary siempre tuvo en mente el nombre código Oracle, hacio referencia a la conectividad SQL hacia servidores Oracle. Esto evidentemente chocaba con el hecho de que ya existía una compañía de software con ese nombre y su producto estrella. Mientras transcurría las discusiones al respecto, Danny Thorpe pensaba como se le habla a un oráculo? El Oráculo en Delphi, esto fue la asociación de palabras que surgió en su mente. Entonces Danny sugirió el nombre Delphi, aseverando que si tú quieres hablarle al oráculo, ve a Delphi. Esta palabra hacía referencia a un templo pagano en las ruinas de una civilización extinta. No era exactamente una palabra inspiradora para un nuevo producto pero se engancho con facilidad en los integrantes del equipo de mercadeo, quienes le dieron su total apoyo. Página 4
Creación de un programa en Delphi Delphi es un poderoso IDE (Integrated Development Environment), o Entorno de Desarrollo Integrado, que permite lo que se conoce como RAD (Rapid Application Development) o Desarrollo Rápido de Aplicaciones. En pocas palabras, Delphi le ofrece la posibilidad, tanto a profesionales como entusiastas de la programación, de poder crear programas en poco tiempo y con muy poco esfuerzo. Para quienes ya han tenido una primera experiencia con esta herramienta, incluso sin tener mucho conocimiento en programación de computadores, esta proposición es totalmente cierta. Los entornos visuales de programación han simplificado significativamente el proceso de desarrollo de una aplicación. Los promotores de estos entornos coinciden en que para poder desarrollar cualquier programa en estas herramientas de programación visual, se deben seguir al menos los siguientes pasos: 1.- Crear un nuevo proyecto 2.-Colocar los componentes u objetos requeridos en el formulario 3.- Modificar las propiedades de los componentes 4.- Anadir el código necesario para los manejadores de eventos apropiados Página 5
El Entorno de Desarrollo Integrado El entrono de desarrollo está conformado por un conjunto de ventanas que pueden ocultarse o mostrarse según se necesite, al igual que organizarlas adecuadamente en el escritorio del computador. Las ventanas empleadas con mayor frecuencia son: Ventana Principal Formulario Editor de Código Inspector de Objetos Object TreeView (Árbol de vista de objetos) Página 6
La ventana Principal En la ventana Principal se puede apreciar todas las opciones principales del Menú de opciones del entrono, los diferentes botones de acceso a las opciones secundarias, así como el conjunto de paleta de componentes, conocida también en otros ambientes como Barra de Herramientas. Nuestra atención estará centrada principalmente en el grupo de componentes pertenecientes a la paleta Standard, la cual proporciona los tres componentes más utilizados en cualquier programa, desde el más simple. Componentes de la Paleta Standard En Delphi, los formularios y componentes son conocidos también como objetos. Cada objeto es una entidad auto contenida que integra el código (procedimientos y funciones) para ejecutar sus acciones. La información pertinente es pasada hacia y desde cualquier parte del programa en forma de mensajes. Label: usado para escribir texto corto como títulos, nombres de variables, etc. Edit: este control se emplea como entrada y salida de datos. Button: el botón es el iniciador de procesos por excelencia. Con solo estos tres objetos es posible desarrollar aplicaciones muy útiles, que requieran ingresar datos para ser procesados y luego mostrar los resultados. El Inspector de Objetos Página 7
El inspector de objetos es una ventanita muy útil que nos permite ver y modificar las propiedades de los componentes, así como asociar los event handlers (manejadores de evento) para dichos componentes. En caso de que no esté visible en pantalla, es posible acceder al inspector de objetos pulsando la tecla F11, o mediante la secuencia de opciones de menú View Object Inspector. Formularios Un Formulario o Form, es el componente principal en el desarrollo visual de aplicaciones, ya que sobre él se ubican todos los otros objetos que estarán a disposición de los usuarios, para facilitar su interacción. Este es la base de lo que conocemos como Interfaz de Usuario, ya que le permite a los usuarios poder interactuar con la aplicación ingresando los datos requeridos, para que posteriormente el programa despliegue los resultados para el usuario a través de esta misma interfaz. Cada formulario es almacenado por el IDE en un archivo o fichero con extensión.dfm, y el mismo trá asociado otro archivo de tipo unit con el mismo nombre que el formulario y extensión.pas. Este archivo.pas es el que se conoce como código fuente, y es el que contiene el código de nuestro programa. Ficheros o archivos de un proyecto Delphi El entorno de desarrollo de Delphi, genera un conjunto de archivos, de forma automática, cada vez que es creado un nuevo proyecto. Cada uno de estos archivos tiene una utilidad para el entorno. Página 8
En la imagen adjunta puede apreciarse todo el conjunto de extensiones archivos de un proyecto y su significado. Propiedades y Eventos Cada componente tiene unas características concretas que los identifica, así como características que comparten con otros componentes. Por ejemplo tanto un formulario como un cuadro edit y un botón, tienen una medida de ancho y de largo. Estas características de los componentes u objetos es lo que conocemos como Propiedades. Cuando colocamos un objeto sobre un formulario, frecuentemente Página 9
modificamos algunas de sus propiedades para adaptarlas a los requerimientos del programa que se esté desarrollando. Como ya se había mencionado, es posible ver y modificar las propiedades de un componente, en fase de diseño, mediante el Inspector de Objetos. Estas mismas propiedades pueden ser vistas o modificadas posteriormente cuando el programa se encuentra en fase de ejecución, mediante el uso de las sentencias adecuadas. Por ejemplo, en fase de diseño se modifica el titulo de la ventana del formulario Form1 cambiando el contenido de la propiedad Caption en el Inspector de Objetos. Si se quisiera lograr esto mismo en fase de ejecución, se debe asignar la cadena de titulo deseada a la propiedad Caption del objeto Form1 como sigue: Form1.Caption := Titulo de la ventana ; Página 10
Los eventos por su parte, están relacionados con el comportamiento que trán los componentes, lo que hace pensar que estos contienen el código encargado de ejecutar las acciones o procesos definidos en nuestro programa. Al igual que las propiedades, los eventos asociados a un componente pueden ser identificados mediante el Inspector de objetos. Cada evento define el comportamiento del objeto frente a una situación específica, la cual es iniciada por el sistema o por el usuario. Por ejemplo, el evento OnClick asociado a un botón, claramente se refiere a lo que debe suceder cuando el botón es pulsado una vez, lo que se conoce como Click, que es la acción que ejerce el usuario cuando pulsa el botón izquierdo del mouse sobre el botón. En este caso, es evidente que el iniciador del evento fue el usuario del programa. A diferencia de las propiedades, los eventos no pueden ser modificados directamente en el Inspector de objetos, sino que desde allí es posible trasladarse a la sección del código donde ya se encuentra o será generado el manejador de evento correspondiente, que no es más que un procedimiento. Para el caso de que se desee acceder al manejo del evento OnClick para un botón, desde la pestana de eventos del Inspector de Objetos, se hace doble click sobre dicho evento, y el IDE nos trasladara inmediatamente a la sección del unit del formulario, donde se encuentra el manejador para dicho evento. Manejador del evento Click Programación Al mencionar programación en Delphi, directamente nos referimos a la codificación del algoritmo que hemos desarrollado para solucionar cualquier problema planteado. En este punto se debe recordar que de todos los archivos generados por el entorno de programación, el que tiene extensión.pas, identificado por defecto como Unit, es el que contrá nuestro código fuente de programa. Página 11
Estructura de un programa en Delphi Cuando se crea un nuevo proyecto en Delphi, el entorno genera y muestra en pantalla el primer formulario de la aplicación, el cual identifica por defecto como Form1, al cual asocia también por defecto una ventana de código que identifica como Unit1.pas. En la figura se muestra la estructura básica de un programa. Estructura Condicional if..then..else La estructura condicional es utilizada cuando se nos presenta la situación en que se debe ejecutar una acción o conjunto de acciones de manera condicionada, es decir, si se cumple la condición planteada, se ejecutara un grupo de acciones y en caso contrario se ejecutara un grupo de acciones diferentes. Página 12
Estructura Selectica case Si se plantea dentro de nuestro problema la necesidad de elegir dentro de un grupo de más de dos alternativas según una condición dada, entonces la estructura apropiada a emplear en la solución es el case. Esto puede ser resuelto mediante un bloque de condicionales if..then..else anidados, pero haría que nuestro programa fuese un poco más complicado y menos eficiente. Página 13
Ciclo for El ciclo for es una de las estructuras repetitivas más utilizadas, ya que permite resolver la mayoría de los problemas que requieren de la repetición de un conjunto de instrucciones. Es importante destacar que se usara este tipo de estructuras cuando se conozca de antemano la cantidad de veces que se ejecutaran las instrucciones del ciclo. Ciclo While Al igual que el for, el ciclo while permite ejecutar repetidamente un conjunto de instrucciones. La diferencia entre ambos ciclos radica en que para el caso del while, no se conoce de antemano al cantidad de veces que se harán las repeticiones, ya que esto deperá de si se presenta o no la condición establecida para salir del ciclo. Ciclo Repeat El ciclo repeat tiene la misma funcionalidad que el ciclo while, ya que también requiere de una condición para finalizar las repeticiones. La diferencia entre ellos radica en que a condición se presenta al principio del ciclo para el caso del while, y al final del ciclo para el caso del repeat. Ejemplos Página 14
Todos los ejemplos desarrollados en este tutorial, han sido tomados de la guía de Ejercicios Propuestos de la cátedra Introducción a la Programación. Lineal Ejercicio nro. 16 El programa de tipo lineal es una secuencia de instrucciones que se ejecuta de principio a fin sin repeticiones. Enunciado Dada las horas trabajadas de una persona y la tarifa de pago, calcular su salario e imprimirla. Análisis Datos de entrada: horas trabajadas y tarifa de pago. Proceso: multiplicar cantidad de horas trabajadas por el monto de la tarifa de pago. Datos de salida: salario. Formulario Página 15
object Form1: TForm1 Left = 461 Top = 262 Width = 361 Height = 148 Caption = 'Form1' Color = clbtnface Font.Charset = DEFAULT_CHARSET Font.Color = clwindowtext Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 16 Top = 8 Width = 98 Height = 16 Caption = 'Horas trabajadas' Font.Charset = DEFAULT_CHARSET Font.Color = clblack Font.Height = -13 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False object Label2: TLabel Left = 136 Top = 8 Width = 84 Height = 16 Caption = 'Tarifa de pago' Font.Charset = DEFAULT_CHARSET Font.Color = clblack Font.Height = -13 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False object Label3: TLabel Left = 256 Top = 8 Width = 40 Height = 16 Caption = 'Salario' Font.Charset = DEFAULT_CHARSET Font.Color = clblack Página 16
Font.Height = -13 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False object Edit1: TEdit Left = 32 Top = 32 Width = 65 Height = 21 TabOrder = 0 object Edit2: TEdit Left = 144 Top = 32 Width = 65 Height = 21 TabOrder = 1 object Edit3: TEdit Left = 240 Top = 32 Width = 81 Height = 21 TabOrder = 2 object Button1: TButton Left = 128 Top = 64 Width = 89 Height = 25 Caption = 'Calcular' TabOrder = 3 OnClick = Button1Click Página 17
Código unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) Label1: TLabel; Label2: TLabel; Label3: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; procedure Button1Click(Ser: TObject); private { Private declarations } public { Public declarations } ; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Ser: TObject); var horas_trabajadas, tarifa_pago, salario: Currency; begin horas_trabajadas := StrToCurr(Edit1.text); tarifa_pago := StrToCurr(Edit2.text); salario := horas_trabajadas * tarifa_pago; Edit3.Text := CurrToStr(salario); ;. Página 18
Con estructura Selectiva Ejercicio nro. 4 El programa de tipo Selectivo es una secuencia de instrucciones que se ejecuta de principio a fin sin repeticiones, en la cual se elije una de varias posibles alternativas de flujo en un punto marcado por un grupo de condiciones. Enunciado Hacer un programa que muestre el mensaje de acuerdo a la edad ingresada: Si la edad es de 0 a 10 años niño, si la edad es de 11 a 14 años púber, si la edad es de 15 a 18 años adolescente, si la edad es de 19 a 25 años joven, si la edad es de 26 a 65 años adulto, si la edad es mayor de 65 anciano. Análisis Datos de entrada: edad. Proceso: comparar la edad ingresada con los posibles rangos de edades. Datos de salida: mensaje. Formulario Página 19
object Form1: TForm1 Left = 351 Top = 246 Width = 298 Height = 174 Caption = 'Form1' Color = clbtnface Font.Charset = DEFAULT_CHARSET Font.Color = clwindowtext Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 24 Top = 16 Width = 35 Height = 19 Caption = 'Edad' Font.Charset = DEFAULT_CHARSET Font.Color = clwindowtext Font.Height = -16 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False Transparent = True object Label2: TLabel Left = 72 Top = 16 Width = 57 Height = 19 Caption = 'Mensaje' Font.Charset = DEFAULT_CHARSET Font.Color = clwindowtext Font.Height = -16 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False Transparent = True object Edit1: TEdit Left = 24 Top = 40 Width = 41 Height = 21 TabOrder = 0 Página 20
object Edit2: TEdit Left = 72 Top = 40 Width = 185 Height = 21 TabOrder = 1 object Button1: TButton Left = 96 Top = 72 Width = 81 Height = 25 Caption = 'Procesar' Font.Charset = DEFAULT_CHARSET Font.Color = clwindowtext Font.Height = -13 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False TabOrder = 2 OnClick = Button1Click Código unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) Label1: TLabel; Edit1: TEdit; Edit2: TEdit; Label2: TLabel; Button1: TButton; procedure Button1Click(Ser: TObject); private { Private declarations } public { Public declarations } ; Página 21
var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Ser: TObject); var edad: integer; begin edad := StrToInt(Edit1.text); case edad of 0..10:Edit2.text := 'niño'; 11..14:Edit2.text := 'puber'; 15..18:Edit2.text := 'adolescente'; 19..25:Edit2.text := 'joven'; 26..65:Edit2.text := 'aduto'; 66..120:Edit2.text := 'anciano'; else Edit2.text := 'valor incorrecto'; ; ;. Página 22
Con Ciclo Ejercicio nro. 13 El programa de tipo cíclico se caracteriza por un conjunto de instrucciones que se repiten en una o varias secciones del programa. Enunciado Calcular mediante un algoritmo repetitivo la suma de los N primeros números naturales. Análisis Datos de entrada: N. Proceso: Este problema podría ser resuelto eficientemente conocio que se requiere la suma de una progresión aritmética, cuya expresión es: Suma = N*(N+1)/2 (el primer término de la progresión es 1) Pero en vista de que el problema plantea una solución mediante algoritmo repetitivo, lo único que se requiere entonces es definir una variable acumuladora inicializada en cero, e ir sumando progresivamente todos los números naturales que serán generados automáticamente por un ciclo for. Datos de salida: suma. Formulario Página 23
object Form1: TForm1 Left = 485 Top = 246 Width = 196 Height = 167 Caption = 'Form1' Color = clbtnface Font.Charset = DEFAULT_CHARSET Font.Color = clwindowtext Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 32 Top = 16 Width = 11 Height = 19 Caption = 'N' Font.Charset = DEFAULT_CHARSET Font.Color = clblack Font.Height = -16 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False object Label2: TLabel Left = 80 Top = 16 Width = 40 Height = 19 Caption = 'Suma' Font.Charset = DEFAULT_CHARSET Font.Color = clblack Font.Height = -16 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False object Edit1: TEdit Left = 24 Top = 40 Width = 33 Height = 21 TabOrder = 0 object Edit2: TEdit Página 24
Left = 80 Top = 40 Width = 81 Height = 21 TabOrder = 1 object Button1: TButton Left = 56 Top = 72 Width = 73 Height = 25 Caption = 'Calcular' Font.Charset = DEFAULT_CHARSET Font.Color = clblack Font.Height = -13 Font.Name = 'Tahoma' Font.Style = [] ParentFont = False TabOrder = 2 OnClick = Button1Click Código unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) Label1: TLabel; Label2: TLabel; Edit1: TEdit; Edit2: TEdit; Button1: TButton; procedure Button1Click(Ser: TObject); private { Private declarations } public { Public declarations } ; var Página 25
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Ser: TObject); var i, n, suma : integer; begin suma := 0; n := StrToInt(Edit1.text); for i := 1 to n do suma := suma + i; Edit2.Text := IntToStr(suma); ;. Página 26
Bibliografia Freire, J. L. (2001). Tutorial de Delphi. Madrid, España. Penabad, M. R. (2006). DELPHI PROGRAMACIÓN ORIENTADA A OBJETOS. ENTORNO VISUAL. Página 27