martes, 5 de septiembre de 2017

Muy breve tutorial para empezar con Lazarus

Es este un sencillo ejemplo de primer programa para los recién llegados a Lazarus y a la programación con objetos.


Iniciamos Lazarus, Archivo–> Nuevo–>Aplicación. Nos mostrará un formulario con su correspondiente unit. Antes de hacer nada seleccionamos Guardar todo, el 5to. icono, seleccionamos la carpeta donde se guardará la aplicación, y guardamos, son 2 la ventanas de diálogo de guardar que aparecerán, dejamos los nombres por defecto ya que es una práctica y guardamos.


Cuando compilemos con éxito el programa, tendremos los siguientes archivos:
  • project1: es el ejecutable
  • project1.lpi: contiene información del proyecto, se recomienda no editar nunca este fichero,
  • project1.ico: como su extensión lo sugiere, es el icono.
  • project1.lps: guarda la configuración del proyecto y tampoco debería editarse nunca.
  • project1.lpr: Es el programa principal, se inicializa, se crea el formulario principal y se lanza el programa. Este archivo sí se puede editar (modificar), de hecho en la práctica se modifica habitualmente, aunque no mucho. Para comenzar, de momento, con algún ejercicio sencillo, no habrá que tocarlo.
  • project1.res: es una archivo binario de los recursos del programa.
  • unit1.pas: es el código fuente de la aplicación que estamos escribiendo.
  • unit1.lfm: sería como el código del formulario, o más bien sus propiedades. Salvo contadas excepciones, no hay que modificar nunca este archivo.
En los casos donde cito “no hay que modificar nunca este archivo” es porque lo hace Lazarus “para Lazarus”, se crear y actualizan automáticamente.
Todos los objetos tienen una propiedad “name” y la mayoría tiene una propiedad “caption”, como el caso del formulario TForm que Lazarus crea por defecto cuando creamos una unidad o aplicación. Estas propiedades, además de poder ser editadas mediante código, muchas veces se accede a ellas desde el inspector de objetos. Vamos a cambiar esas propiedades de nuestro formulario, lo llamaremos frmA y el caption es el texto que mostrará el formulario, le podremos simplemente Formulario A.



Ahora a iremos incorporando objetos a nuestro Form, desde la paleta Standar seleccionamos un TLabel (es el 5to. botón) y lo colocamos en el formulario. Un TLabel es una etiqueta, que básicamente muestra un texto.


Al TLabel le cambiaremos la propiedad (también se le llama atributo) caption. Nótese que la etiqueta se llama Label1, si colocásemos otra etiqueta, Lazarus la llamaría Label2. En caption pondremos: Este texto cambiará cuando presione el botón. Esto lo haremos desde el inspector de objetos, seleccionando Label1.




Para mayor comodidad para escribir el texto es aconsejable presionar sobre los 3 puntos (…) en la propiedad caption, esto nos abrirá una ventana para ingresar es texto que mostrará la etiqueta.



De paso podemos alinear la etiqueta horizontalmente al centro de la ventana, haciendo click derecho sobre la misma y seleccionando la opción “Alinear”.



 Bien, ahora lo ideal sería incluir un botón, desde la paleta Standar el 4to. icono que dice “OK” es un TButton, incorporamos uno al formulario y le damos las dimensiones que queramos valiéndonos del mouse.



Por default, Lazarus le asigna el nombre al componente Button1 y también al caption. Cambiaremos solo el caption y le pondremos “Haga click aquí.” o “Pinche aquí” o lo que más les guste.

Cabe destacar dos cosas, en Free Pascal, los objetos por convención (según tengo entendido) llevan una T al comienzo, por eso verán que todo es TForm, TLabel, TButton, TEdit, etc… Lo otro es que Lazarus define la instanciación de del objeto (variable) quitando la T y agregando un número, Form1, Label1, Button1, etc.

Hasta ahora no hemos escrito una sola línea de código, pero llego la hora de hacerlo, debemos hacer que cuando el usuario haga click en el botón cambie el texto de Label1. Para esto, hay que definir el evento OnClick de Button1. Evento: es un procedimiento asociado a un objeto y para una acción determinada. Esto es una definición breve muy básica, siempre hay que leer (y mucho) la wiki de Lazarus y la de Free Pascal.

Para ello, haremos click en Button1 y en el inspector de objetos y luego click en la pestaña “Eventos”, allí buscaremos el evento OnClick y haremos click en la segunda columna para que nos aparezcan los 3 puntos y haremos click sobre los mismos.



Lazarus nos habrá mandado al editor de código fuente donde ya ha definido el evento.


Lo que sigue ahora sí, habrá que escribirlo, con la ayuda de autocompletar que es fundamental para evitar errores, comenzamos a escribir “lab” y presionamos [CTRL] + Sapce para autocompletar.


Cuando vemos la “var” (variable) Label1 del tipo TLabel le damos Enter, escribimos un punto “.” y nuevamente Control + Espacio y buscamos la propiedad Caption, podemos escribir “ca” para hallarla más rápido. Ahora nos resta asignarle el valor que tomará la propiedad caption, por ejemplo:

procedure TfrmA.Button1Click(Sender: TObject);
begin
  Label1.Caption:='Gracias por presionar el botón.';
end;

Para ir viendo como funciona, vamos a compilar, presionando F9 o haciendo click en el icono play.


Y nos tendría que aparecer algo así:


Lo probamos, hacemos click y el texto debe cambiar. Luego pulsar el botón de Stop o [Crtl] +F2 para finalizar.


A esta altura ya creamos un ejecutable escribiendo solo una linea de código. Si bien el RAD Lazarus reduce mucho la cantidad de código a escribir, es erróneo pensar que todo será soltar componentes y escribir poco, mientras se va avanzando, cada vez se escribe más y, a su vez, iremos viendo que en algunos casos es mejor y a veces indispensable, algunos objetos definirlos “a mano” lo que se llama “en tiempo de diseño”, porque todo lo que arrastramos al formulario, puede escribirse e insisto, a veces solo queda esa opción, por ejemplo si queremos que cuando el usuario presione un botón se cree otro botón, el primer botón lo podemos crear soltando un TButton en el TForm, pero el segundo TButton deberemos crearlo, definirlo, mostrarlo y posiblemente eliminarlo mediante código.

Por último, dotaremos al formulario con un botón que muestre una imagen y una leyenda de “Cerrar” y cuya acción será finalizar la aplicación, es decir, cerrarla. El componente para esto se llama TBitBtn y está disponible en la paleta “Additional”, es un icono muy parecido a TButton.


Un BitBtn es un botón al que se le puede añadir una imagen, también posee imágenes prediseñadas, se encuentran en la propiedad “Kind” que por defecto es “bkCustom” y de momento lo dejamos así para añadir nuestra propia imagen, una apropiada para simbolizar la acción de cerrar. Para esto debemos tener una imagen, preferentemente guardada en nuestro disco, con realizar una búsqueda en Internet de “free icons” encontraremos unas cuantas.


Para cargar la imagen, vamos al inspector de objetos y en la propiedad “Glyph” hacemos click en “…”:


(También en Caption escribimos Cerrar).


Se abrirá una nueva ventana de diálogo donde haremos click en Cargar y seleccionamos la imagen.


Y click en Aceptar. En este caso la imagen la obtuve de aquí (icons8.com).

Y con esto terminamos el diseño de nuestro formulario que debería ser algo similar a esto:


Quizas te estés preguntando “entonces para que existe TButton si TBitBtn es mejor?” y la respuesta es simple: hubo una vez en la que no existía TBitBtn y muchos programas se hicieron con TButton y se debe preservar la compatibilidad; y es correcto, desde ya. De mi parte no veo otro motivo y utilizo siempre TBitBtn que se puede utilizar sin ninguna imagen también, con el beneficio de que si el día de mañana le queremos agregar una imagen no tengo más que agregarla si la necesidad de cambiar el componente.

Solo nos falta hacer que el BitBtn1 cierre la aplicación y para ello recurriremos nuevamente al evento OnClick, tal como hicimos con Button1, buscamos en el inspector de objetos el evento OnClick del BitBtn1 y presionamos sobre los 3 puntos.

Escribimos:

Close;

Y nuestro código fuente tendría que verse así:


Compilamos (F9) y probamos.



Y hasta acá llegamos con este muy breve tutorial o guía de inicio. Para finalizar, algunas anotaciones que nunca están de más:

Este código es el mismo para cualquiera de los sistemas operativos de escritorio soportados por Free Pascal, es decir, tanto en GNU/Linux, Windows o Mac OS se compilar este proyecto y funciona. Para proyectos “en serio” el 99% del código es el mismo y en muchos casos el 100%, es una de las principales ventajas de Free Pascal, además de ser de código abierto y la gran documentación online constantemente actualizada.

En este caso he utilizado la versión 3.0.0 de Free Pascal y 1.6.0 de Lazarus sobre Linux Mint 17.2 x86_64 MATE.

Lamentablemente y a pesar de ser el segundo o tercer lenguaje más utilizado en el planeta, no es mucha la documentación en español. Y si vamos al tema libros, al día de hoy solo he conseguido uno solo de Lazarus: “Iniciar con Lazarus y Free Pascal” el cual me ha servido mucho, el problema que tiene es la pésima traducción al español, por lo tanto, lo recomiendo pero en inglés. De hecho, el autor (Menkaura) me ha respondido muy amablemente un par de consultas que le hice por e-mail. Ojo que hay otro libro que en el título menciona a Lazarus pero solo le dedica un capítulo.

Es ideal antes de empezar con Lazarus, practicar Pascal puro desde la consola, luego practicar la programación orientada a objetos también desde consola, antes de comenzar con la IDE Lazarus.

Hay un libro on line Pascal con Free Pascal con muy buena documentación en español, desde ya. También sus 8 videos donde muestra como hacer un editor de textos con Lazarus, los cuales recomiendo ya que enseña como manejar varios componentes: https://youtu.be/el5sD0_2cZo

Y desde ya los foros, no solamente planteando dudas, sino también leyendo todos los debates se aprende mucho.

La mayoría de lo que encuentres sobre Delphi es aplicable a Lazarus con Free Pascal, siempre teniendo en cuenta que Delphi es solamente Windows.

Foros en español de Lazarus:

El oficial: forum.lazarus.freepascal.org
 
Delphi Access: delphiaccess.com 100% es español con varios subforos, entre ellos, Lazarus.

Club Delphi: clubdelphi.com primo hermano de Delphi Access, también 100% en español.

Información oficial de la wiki de Free Pascal sobre los componentes vistos en este tutorial:
// Fin

No hay comentarios:

Publicar un comentario