El entorno de desarrollo Lazarus.

Anuncio
SimSEE pág. 1 / 14
SimSEE por dentro 002
El entorno de desarrollo Lazarus.
------------------------Proyecto: SimSEE v2.47
Archivo: SimSEE_pordentro002_Lazarus.odt
Autor: Ruben Chaer.
Fecha creación: 28/11/2009 10:52:21
Fecha última revisión: 30/11/2009 08:27:57 PM
Institución: IIE – Montevideo – Uruguay.
En este capítulo se introduce el entorno de programación Lazarus y cómo desarrollar
aplicaciones con el.
La sección 1 contiene una breve introducción al desarrollo de aplicaciones más que nada
para establecer el lenguaje de uso común como qué es codigo fuente compilador, linker etc.
Si usted tiene experiencia en el uso de compiladores puede saltear dicha sección.
En la sección 2 se muestra cómo instalar el entorno de desarrollo Lazarus y cómo crear una
aplicación sencilla.
1 Introducción al desarrollo de aplicaciones.
Código Fuente y Ejecutable.
Por PROGRAMA entendemos un código ejecutable. Por FUENTE o FUENTES de un
PROGRAMA entendemos el conjunto de archivos de texto que especifican qué es lo que
hace el PROGRAMA.
Lenguaje de Programación.
Los FUENTES están escritos en un LENGUAJE DE PROGRAMACION de alto nivel
como puede ser BASIC, PASCAL, FORTRAN, C, C++, etc.
Compiladores y Linkers
Para pasar del LENGUAJE DE PROGRAMACION al código binario ejecutable por el
microprocesador, es necesario utilizar dos programas, un COMPILADOR y un LINKER.
El Compilador es específico del lenguaje de programación. Técnicamente el compilador
hace una traducción de cada uno de los archivos fuentes del lenguaje de programación a
archivos con los códigos binario que representan las instrucciones entendibles por el
microprocesador. Nosotros trabajaremos con un compilador Pascal.
El programa LINKER (o enlazador si lo traducimos crudamente al español) se encarga de
enlazar los bloques de código creados por el compilador con los bloques de códigos propios
del sistema operativo para el que se está creando el programa ejecutable y con todos esos
bloques enlazados correctamente crea el archivo binario ejecutable.
El Proyecto, MAKE, Construir y Construir Todo
SimSEE pág. 2 / 14
Cuando trabajamos en la creación de un PROGRAMA, a partir de determinado nivel de
complejidad se hace necesario partir el FUENTE en varios archivos para darles una
organización lógica y además esto permite reutilizar parte de los FUENTES en otros
programas. A esta agrupación "de las cosas necesarias para editar y compilar un programa"
la llamamos PROYECTO. Cada PROYECTO maneja por lo tanto lo necesario para generar
un PROGRAMA.
En el caso de SimSEE, los programa más usados son el "Editor", el "Simulador" y el
"Procesador de resultados". Como veremos hay tres PROYECTOS, uno para cada uno de
estos PROGRAMAS.
Las herramientas utilizadas para desarrollar un programa pueden incluir funciones especiales
para manejo de los proyectos o no.
De las primeras herramientas que aparecieron para compilar un conjunto de fuentes y linkear
los resultados en un ejecutable fue el programa "make" conocido como "El maker". Este
programa toma como entrada un archivo de texto que especifica el conjunto de archivos
fuentes a compilar (llamando al compilador) y luego el conjunto de archivos con código
binario a linear (llamando al linker).
Cuando ejecutamos el programa make desde una línea de comando, éste busca en la carpeta
actual un archivo con el nombre Makefile.cfg, si existe lo considera como un archivo de
descripción de un proyecto e intenta ejecutar las órdenes contenidas den el Makefile. Estas
ordenes indican el compilador a usar, el linker a usar y las dependenicas entre los archivos
de forma que se puedan compilar. No vamos a entrar en el detalle de cómo escribir un
Makefile pues como veremos no es algo que sea necesario y hoy todo esto se hace en forma
automática. Lo nombramos aquí solamente por completar el conocimiento y para que se
entienda porqué hablamos de hacer MAKE.
Generalmente, el Makefile se organiza de forma que si cambiamos un solo fuente y lo
llamamos (hacemos MAKE) se compile solamente ese fuente y quienes puedan depender de
él. Es decir que no se recompilan todos los fuentes sino solamente aquellos cuyo resultado
de la última compilación tiene fecha anterior a la fecha del archivo fuente. Es decir que
hacer un MAKE recompila (o construye) sólo lo que cambió desde la última compilación.
Esto ahorra mucho tiempo. Hay ocaciones en que queremos que se recompile todo sin
importar las fechas. Eso se logra pasando una opción al make que le indica que ignore las
fechas y reconstruya todo.
En algunas plataformas se le llama MAKE a la acción de Contruir lo necesario de acuerdo a
las fechas y BUILT a la acción de Costruir Todo sin importar las fechas.
El DEBUGGER.
La palabra DEBUGGER viene de BUG (bicho en inglés) y significa el quitador de bichos.
El DEBUGGER es un programa que nos permite correr nuestra aplicación (el programa que
está siendo debuggeado) paso a paso e ir inspeccionando las variables. Es una herramienta
muy útil y que facilita mucho la detección y corrección de errores.
Entornos de Desarrollo Integrados ( IDE )
Los archivos fuente son simples archivos de texto y se pueden editar con cualquier programa
editor de textos.
SimSEE pág. 3 / 14
Luego se puede llamar el compilador para compilar cada archivo fuente y luego el linker
para unirlos y crear el ejecutable.
El trabajo de esta forma es algo tedioso y se han creado entornos de desarrollo que permiten
manejar con facilidad todos los archivos de un proyecto, permitiendo editar los fuentes con
ayudas como resaltado con colores de las palabras claves, autocompletado de texto,
chequeador de sintaxis en tiempo real etc. Además estos entornos facilitan las llamadas al
compilador y al linker desde el propio entorno y en caso de saltar un error nos posicionan
con facilidad en la parte del código fuente que produce el error.
Los IDE integran también funciones de DEBUGGER que nos permiten ejecutar el programa
siguiendo paso a paso su ejecución sobre el código fuente y revisar los valores de las
variables.
Entornos RAD (Rapid Application Development)
En la antigüedad (lo digo bromeando pues la mayoría de nosotros vivimos esta etapa) nos
comunicábamos con la computadora mediante una consola de texto, sin Mouse y sin interfaz
gráfica. Los programas recibían los datos generalmente en archivos de textos y para editar
esos archivos no había más remedio que usar editores de texto de comando diseñados para
funcionar en las consolas de texto. De esa época hasta ahora toda ha evolucionado mucho,
han mejorado muchísimo los monitores aumentando su definición, agregando color y
bajando mucho de precio. Esto llevó a un desarrollo explosivo de las interfaces gráficas y
por supuesto que los usuarios se volvieron cada vez más exigentes.
El desarrollo de las interfaces gráficas con las antiguas herramientas de desarrollo era
realmente tedioso (yo llegué a hacer alguna). Por suerte, parecieron los entornos RAD (de
Rapid Application Development) que permiten "armar" la interfaz y programar su
comportamiento en forma muy sencilla. Los entornos RAD más conocidos son el Visual
Basic (de Microsoft) y el Delphi (de Borland). También los hay para Java y C++.
El entorno Visual Basic es por lejos el más popular pues al utilizar BASIC le resulta sencillo
de usar a un grupo importante de gente.
El entorno Delphi es similar a Visual Basic, pero utiliza lenguaje PASCAL en lugar de
BASIC.
Para describir en palabras lo que significa RAD, utilizando este entorno el diseño de la
aplicación se realiza en base a un formulario (aparece un panel que es lo que verá el usuario)
y una barra de herramientas que podemos seleccionar y arrastrar al formulario. Por ejemplo,
elegimos un botón y lo arrastramos al formulario, luego hacemos doble-click sobre el botón
y se abre una ventana donde podemos escribir el tramo de programa con la acción a ejecutar
cuando se presiona el botón.
Podríamos decir que los editores de texto+compilador+link desde la línea de comando
constituyen la primera generación de herramientas, los entornos IDE la segunda y los
entornos RAD la tercera.
El desarrollo de SimSEE se realizó con el entorno RAD Delphi. Como este entorno es un
programa de uso comercial y dado que se busca que la plataforma SimSEE sea utilizada con
SimSEE pág. 4 / 14
fines didácticos se ha migrado el desarrollo (con poco esfuerzo) para que se pueda continuar
el desarrollo utilizando el entorno RAD Lazarus que es de uso libre.
Otra razón para utilizar Lazarus es que se dispone de esta herramienta tanto en Windows
como en Linux.
2 El entorno de desarrollo Lazarus.
El entorno de desarrollo que utilizaremos es LAZARUS. Es de uso gratuito y puede bajarse
de la dirección: http://lazarus.freepascal.org/
LAZARUS es un RAD Pascal. La misma instalación incluye el compilador FREEPASCAL.
Al momento de escribir este texto, la ultima versión para windows de Lazarus es la que
corresponde al archivo "lazarus-0.9.28-fpc-2.2.4-win32.exe"
Una vez bajado ese archivo (o uno más reciente si lo hay) al ejecutarlo se instala el entorno
como cualquier aplicación de windows.
Una vez instalado ya estamos en condiciones armar nuestra primer aplicación.
Al ejecutar Lazarus, se abre el ambiente de desarrollo. En este ambiente todo gira alrededor
de la idea de PROYECTO. Lo que estamos editando es un PROYECTO y podemos editar
los diferentes fuentes del PROYECTO.
La siguiente figura muestra la parte de la ventana del menú y barras herramienta principal.
Ilustración 1: Menú Principal y Barras de Herramientas de Lazarus.
Lo primero para iniciar una aplicación es crear un Proyecto. En el menú seleccionar
Proyecto y se abrirá un submenú como el que se muestra en la siguiente figura.
SimSEE pág. 5 / 14
Ilustración 2: Menú Proyecto
Seleccionar "Nuevo Proyecto" y se abrirá otro menú (ver figura siguiente) en el que se debe
seleccionar el tipo de proyecto.
Ilustración 3: Selección del tipo de proyecto.
De todas las opciones la primer "Aplicación" es la que debemos elegir para crear un
proyecto de un programa con interfaz gráfica. La segunda "Programa" es la opción para
crear un programa que funcione en una consola en modo texto (por ejemplo una terminal
Linux). El resto de las opciones no son de interés en nuestras aplicaciones.
Bien, al presionar el botón ACEPTAR se creará el nuevo PROYECTO y automáticamente
se creará un archivo con código fuente para manejo de un FORMULARIO (pantalla del
SimSEE pág. 6 / 14
usuario). Se abrirán unas cuantas ventanas, un poco desordenadas y superpuestas pero
después de trabajar un poco son manejables.
Si alguna de las ventas no está visible o si la cerramos y queremos volver a verla hay que
buscar en el menú principal el comando que la mostrará nuevamente.
Las ventas que se abren son:
2.1 Ventana Principal.
La ventana principal del IDE Lazarus es la que contiene el Menú y las herramientas.
Ilustración 4: Ventana Principal del IDE - Lazarus
Si cerramos esta venta se cierran todas y saldremos de Lazarus.
2.2 Ventana Editor de código Fuente.
La de "Editor de código fuente". Donde inicialmente aparece desplegado el archivo "Unit1"
con el código Pascal creado en forma automática para manejo del primer formulario.
El "*" al inicio de la palabra "Unit1" indica que ese archivo está sin guardar. Por cada
archivo que tengamos abierto en edición aparecerá una orejita (como Unit1) y según la que
esté activa veremos el código fuente en la parte central de la ventana.
Ilustración 5: Ventana Editor de código fuente
Si cerramos esta venta (o ya está cerrada) podemos volver a abrir clickeando sobre "Editor
código fuente" en el menú "Ver".
SimSEE pág. 7 / 14
Si el archivo en la oreja activa en el editor de código corresponde a una unidad que tienen un
formulario asociado (ver siguiente ventana) podemos cambiar el foco entre la ventana de
edición del código fuente y el formulario presionando F12 o haciendo click sobre el botón
de la barra de botones de la venta principal.
2.3 Ventana del formulario.
La ventana con el formulario nos muestra lo que será la interfaz gráfica del usuario. Este
formulario es un "contenedor" en el que colocaremos los elementos gráficos (botónes,
etiquetas, cuadros de texto, etc.) que verá el usuario.
Ilustración 6: Ventana del Formulario
de la barra de botones de la venta principal o presionando F12
Presionando el botón
cambiamos el foco (o sea la ventana activa) entre el formulario y la ventana de edición del
código con el archivo fuente asociado al formulario.
2.4 Ventana Inspector de Objetos.
La ventana "Inspector de Objetos" nos
permite modificar las propiedades de un
objeto incrustado en el formulario (o del
propio formulario). En la Ilustración 7, se
muestra en la parte superior el árbol de
objetos. En este caso como el único objeto
es el formulario "Form1" del tipo "Tform1"
el árbol tiene solo ese elemento. Si
agregamos un botón en el formulario,
veríamos que el mismo aparece en ese árbol
como dependiendo de "Form1". En la parte
de abajo de la ventana tenemos las
propiedades editables en tiempo de diseño
(o sea ahora, dentro del entorno de
desarrollo, no en tiempo de ejecución).
Las oreja "Propiedaes" contiene campos con
sus valores. Por ejemplo el campo
Ilustración 7: Ventana Inspector de Objetos
"Caption" tiene en la figura el valor
"Form1" y corresponde al título de la
ventana.
SimSEE pág. 8 / 14
Supongamos que queremos que nuestra ventana al abrirse diga en la parte superior "Mi
primer aplicación". Es tan fácil como hacer click en la fina "Caption" sobre "Form1" y
cambiar el valor al deseado.
La oreja "Eventos" nos permite especificar cómo responde el objeto a determinados Eventos.
Veremos en el ejemplo más adelante cómo usar esta característica.
Las orejas "Favoritos" y "Restriguido" no son de nuestro interés por ahora.
2.5 Inspector de Proyecto
Esta ventana (Ilustración 8) nos permite ver el conjunto de archivos que utiliza el proyecto.
Es como un navegador de archivos.
Presionando el botón "+" podemos
agregar un archivo al proyecto y con el
"-" podemos quitarlo. En la figura,
vemos el árbol de "Archivos" que en
este caso muestra que el proyecto bajo
edición tiene un archivo que se llama
"project1.lpr" y otro que se llama
"unit1.pas". Estos dos archivos son el
principal del proyecto (el que tienen el
programa principal) y el que tiene el
código de definición y manejo del
Ilustración 8: Ventana Inspector de Proyecto
formulario respectivamente. El árbol
"Paquetes Requeridos" hacer referencia
a los paquetes instalados junto al entorno de desarrollo (o agregados posteriormente) que
utiliza este proyecto. El paquete LCL es el que contiene los elementos gráficos de Lazarus
usables en formularios.
2.6 Ventana de Mensajes.
En esta ventana aparecen los mensajes del compilador y del linker. También aparecen en
esta ventana los resultados de búsquedas si usamos alguna de las funciones en varios
archivos del proyecto.
Ilustración 9: Ventana de mensajes
2.7 Nuestra primer aplicación.
Continuando con el ejemplo, antes que nada guardemos el nuevo proyecto y especifiquemos
un nombre adecuado tanto para el módulo "Unit1.pas" como par el proyecto en si. Para eso
vamos al menú "Archivo" y hacemos "Guardar". Como los archivos tienen los nombres por
defecto, nos dará la opción de cambiar los nombres antes de guardar. Elegir la carpeta
destino del proyecto y especificar un nombre para los dos archivos.
Es aconsejable usar una carpeta para cada proyecto. Por ejemplo si el proyecto se va a llamar
"ejemplo1" creamos una carpeta que se llama así "ejemplo1" y guardamos la "unit1.pas" con
el nombre "uejemplo1.pas" y el proyecto como "ejemplo1.lpi".
SimSEE pág. 9 / 14
Es aconsejable usar siempre minúsculas para los nombres de archivos y no poner ni espacios
ni eñes ni caracteres raros. Esto es así pues si necesitamos compilar en Linux vamos a tener
problemas si mezclamos minúsculas y mayúsculas o si usamos caracteres raros.
Una vez salvado el proyecto, probemos "correr" la aplicación. Para eso podemos presionar el
botón
. Al presionar ese botón, Lazarus procede a Compilar, Linkeditar y Ejecutar la
aplicación. Si hay errores, se interrumpe el proceso y aparecen los mismos en la ventana de
mensajes.
En este caso, que aún no hicimos nada en el formulario ni en el código fuente debiera
funcionar sin errores. Aparecerán mensajes del compilador del linker y un mensaje de
indicando "el proyecto se ha construido correctamente :)" y se abrirá una ventana con el
formulario vació pues no le pusimos nada. El título de la ventana dirá "Form1" si no
cambiamos la propiedad "Caption" o lo que hayamos puesto en su lugar.
En la opción del menú "Ejectuar" se encuentra la posibilidad de "Construir", "Construir
Todo" y "Ejecutar" ver Ilustración 10. La opción "Construir" significa compilar solamente
aquellos archivos que hayan sido modificados desde la última vez que se compilo. La opción
"Construir Todo" es volver a compilar todo sin importar las fechas de modificación y
"Ejecutar" es equivalente a "Construir", linkear y correr.
Por comodidad, hay definidos "atajos de teclado" que
nos permiten hacer determinadas acciones sin la
necesidad de levantar los dedos del teclado. Estos
atajos aparecen en las ventanas de los menúes. Por
ejemplo, observar en la misma Ilustración 10 que "CtrF9" (Control F9 presionadas juntas) es el atajo para
"Construir" y "F9" equivale a "Ejecutar".
Bueno ahora introduzcamos algún error para ver qué
pasa. Vamos a intentar que al cargarse el formulario,
cambie el "Caption" (o sea el título de la ventana) a
"Hola que tal!".
Activemos la ventana del formulario. Y en el inspector
de objetos, despleguemos las propiedades del
formulario, seleccionemos la solapa "Eventos". Una
vez abierta esa solapa, hagamos click en la segunda
columna de la fila correspondiente al evento
Ilustración 10: Menú Ejecutar
"OnCreate". La idea es que vamos a definir el
comportamiento del formulario frente al evento
"OnCreate". Este evento se dispara al crear el formulario y es una oportunidad que tenemos
en tiempo de ejecución para inicializar parámetros.
Nos tiene que aparecer algo similar algo similar a lo que se despliega en la Ilustración 11.
Al hacer click sobre el botón "…" que aparece a la derecha del cuadro blanco, se creará
automáticamente en el editor de código fuente una función pascal que se ejecutará al crearse
el formulario.
SimSEE pág. 10 / 14
Es dentro de esa función que debemos introducir lo que queremos que el formulario haga al
crearse.
En nuestro caso la idea es asignarle a la propiedad
"Caption" del formulario otro valor al momento de
crearse.
Pero primero introduzcamos un error para ver cómo
funciona el tema de la detección y corrección de
errores.
La Ilustración 13 muestra el procedimiento
"TForm1.FormCreate" creado automáticamente por
Lazarus y en el que le escribí en el cuerpo del
procedimiento (entre el begin y el end) un código
que intenta asignar a una variable "titulo" el valor ".
La sentencia pascal agregada es:
Seguramente Lazarus no tiene ni idea de quíen es
"titulo". Intentemos compilar (Ctrl-F9).
Y observemos la ventana de mensajes. En la
Ilustración 13 vemos la ventana de mensaje
resultante. Indica que en el archivo vuente unit1.pas
Ilustración 11: Evento OnCreate
en la líne31, carácter 9 encontró un error y no pudo
seguir compilando. Además indica que el error fue
que no encontró el identificador "titulo".
Automáticamente Lazarus debe de haber activado la ventana de editor de fuentes y debe
haber posicionado el cursor sobre el error. Si no lo hizo pude hacer CLICK sobre el error en
la venta de errores e irá al error correspondiente.
Ilustración 12: Error, Identifier not found
Bien ahora corrijamos el error, nuestra intención era cambiar el "Caption" del formulario.
Nosotros ya sabemos que los formularios tienen esa propiedad porque ya la vimos en el
"Inspector de Objetos".
No todas las propiedades de un objeto gráfico aparecen en el "Inspector de Objetos". El tipo
de objeto gráfico que puede usarse en tiempo de diseño en el entorno Lazarus se llama
COMPONENTE. Los componentes también se crean con Lazarus y se pueden agregar
nuevos componentes a la barra de herramientas. Al momento de diseño de un componente se
elige cuales propiedades son publicadas para que sean modificables en tiempo de diseño con
el inspector de objetos.
SimSEE pág. 11 / 14
Bien, ahora cerremos la aplicación (click en la cruz del formulario) y agreguemos algo más
interesante a la misma.
Ilustración 13: Escribiendo la respuesta a OnCreate
Si ejecutamos la aplicación veremos que se abre una ventana y que el título dice
"Hola que tal!", tal como lo programamos.
2.8 Estructura de una UNIDAD PASCAL.
Una aplicación se desarrolla escribiendo el código fuente organizado en diferentes módulos.
Cada módulo se escribe en un archivo aparte. La idea es que cada módulo agrupa un
conjunto de definiciones e implementaciones que tienen alguna característica que hace que
sea natural agruparlas. Por ejemplo veremos que entre las librerías (o módulos) usados en
SimSEE tenemos uno en el que se define lo necesario para manejar matrices, otro para
polinomios, etc.
El módulo tiene dos secciones fundamentales. La INTERFACE y la IMPLEMANTATION.
En la sección INTERFACE se colocan todas las definiciones (tipos, funciones, variables,
clases, etc.) que son públicadas por el módulo. Esto significa que son visibles desde otros
módulos.
En la sección IMPLEMANTATION se escribe el código que implementa las diferentes
funciones y/o procedimientos definidos en la INTERFACE más aquellos que sean
necesarios dentro de la IMPLEMENTATION.
SimSEE pág. 12 / 14
A modo de ejemplo, supongamos un módulo que exporta una función "Producto" para
multiplicar dos números. Un código mínimo para tal módulo sería:
(para visualizar los números de línea en Lazarus hay que habilitar la opción en el menú
Entorno-Opciones-Editor-General-Visualizar-y marcar Mostrar números de línea. )
En la línea 1, tenemos la declaración del nombre de la unidad. En este caso "uproducto". Si
bien el nombre de la unidad puede tener minúsculas y mayúsculas como este nombre
coincide con el nombre con que se guarda el archivo, es aconsejable usar solamente
minúsculas para evitar problemas si el sistema operativo distingue entre minúsculas y
mayúsculas.
Con la palabra reservada "interfce" (línea 3 en el ejemplo) comienza la sección
INTERFACE del módulo y se extiende hasta la palabra reservada "implementation".
En este caso en la INTERFACE hemos definido la función "Producto" (línea 5) para que
desde fuera del módulo sea visible dicha función. Ha este tipo de encabezado de una
función, que lo que hace es declarar el nombre, la lista de parámetros y sus tipos y el tipo de
resultado de la función es lo que se llama un "prototipo" o "declaración" de una función.
Esto es nos dice lo necesario para llamar la función pero no nos dice cómo está
implementada la función.
La sección IMPLEMENTATION del módulo comienza con la palabra reservada
"implementation" (línea 7) y va hasta el final del módulo.
El final de todo archivo fuente Pascal es un "END." (la palabra END seguida por un punto).
El compilador Pascal, cuando procesa los archivos lee el contendio hasta encontrar "END." e
ignora cualquier cosa que esté escrita después de esa palabra.
Para continuar con el ejemplo, hagamos que el formulario tenga lugar para ingresar dos
números y un botón que al presoinarlo calcule el producto de los números usando la función
Producto antes definida y que guarde el resultado en otro casillero del formulario puesto
para ese propósito.
Comencemos por crear un nuevo proyecto del tipo Aplicación para que nos cree un
formulario vacío. Definamos en la UNIT la función Producto como la desarrollamos en los
párrafos anteriores.
SimSEE pág. 13 / 14
A continuación hagamos activa ventana del formulario para comenzar a incluir los
componentes y diseñar el aspecto del formulario. En la siguiente figura se muestran los
componentes que utilizaremos. Ellos son de izquierda a derenca: Botón, Etiqueta (para poner
los textos visibles fijos) y Editables (para poner los casilleros en los que ingresar los
números y en el que poner el resultado).
Botón
Etiqueta
Editable
Bueno haciendo click sobre el compoente Editable y luego Click en el fomulario colocamos
3 componentes de este tipo. Como veremos automáticamente Lazaurs les pondrá nombres
Edit1, Edit2 y Edit3 respectivamente. Si queremos que en lugar de esos nombres tengan
otros más significativos podemos seleccionar cada uno y cambiar la propiedad "Name" en el
Inspector de Objetos. Por ejemplo los podemos renombrar a "eDato_a", "eDato_b" y
"eResultado". El texto que aparece en el casillero es el que está en la propiedad "Text".
Pongamos por ejemplo inicialmente 0 (cero) en todos los campos "Text" de los Editables
para que el formulario tenga valores coherentes.
Paso seguido, pongamos tres Etiquetas a la derecha de los Editables para ponerle texto que
indique al usuario el objetivo de cada campo y un botón. Editar la propiedad "Caption" del
botón para que diga algo como "Calcular". El aspecto del formulario tiene que ser algo así
como lo que se muestra a continuación:
Ahora, debemos hacer que al hacer Click sobre el botón "Calcular" se calcule el producto de
los parámetros "a" por "b" y el resultado sea colocado en "Resultado".
Para ello, hagamos un click sobre el botón (para seleccionarlo) y en el inspector de objetos
activemos la oreja "Eventos". En el panel de los eventos posible debemos activiar el que dice
"OnClick". Haciendo Click sobre el botón con "..." que aparece a la derecha del casillero
blanco, Lazarus creará un procedimiento vacío en el editor y posicionará el cursor pronto
para que escribamos lo que corresponde hacer en ese lugar.
SimSEE pág. 14 / 14
La Ilustración 14 se muestra la ventana correspondiente del inspector de objetos.
Observar en la misma ilustración el árbol de los componetes que hemos incluído en el
formulario hasta el momento.
En el código fuente debemos ahora escribir lo que
queremos hacer cuando el usuario haga click.
Lo primero es convertir los textos que están en los campos
editables a números reales, luego llamar a la función
"Producto" para calcular el resultado y luego convertir el
número real resultante a string para cargarlo en el casillero
resultado.
Para la conversión de String a Número Real y a la inversa
usaremos la funciones "StrToFloat" y "FloatToStr"
respectivamente. Estas funciones están definidas en el
módulo "SysUtils" que viene con Lazarus.
En el sitio web http://freepascal.org podemos ver la
documentación on-line del módulo SysUtils (y de los
Ilustración 14: Evento
demás módulos que bienen con Freepascal).
En particular el acceso directo a las funciones de Sysutils OnClick
está en:
http://community.freepascal.org:10000/docs-html/rtl/sysutils/index-5.html
El código a escribir sería:
procedure TForm1.Button1Click(Sender: TObject);
var
a, b, res: double;
begin
a:= strToFloat( eDato_a.Text);
b:= strToFloat( eDato_b.Text);
res:= Producto( a, b );
eResultado.Text:= FloatToStr( res );
end;
Descargar