Borland Kylix
ÍNDICE
TEMA 1. EL ENTORNO DE DESARROLLO
TEMA 2. OBJECT PASCAL
2.1. Estructura de una unidad.
2.2. Clases.
2.3. Polimorfismo.
2.4. Propiedades y Excepciones.
2.5. Eventos y Mensajes.
TEMA 3. ELEMENTOS GRÁFICOS
3.1. Imágenes.
3.2. Shapes.
3.3. Paintboxes.
3.4. Barras de Botones.
3.5. La barra de estado.
TEMA 1
EL ENTORNO DE DESARROLLO
Kylix es un entorno de programación visual (RAD) compatible con Borland Delphi. Está orientado a objetos y utiliza el lenguaje de programación Object Pascal. Es un entorno integrado (IDE), con lo que las tareas de edición, depuración y ejecución se realizan con la misma herramienta.
Posee una librería de componentes reutilizables (CLX). Existe una dualidad entre los elementos gráficos utilizados por el programa y el código que controla su comportamiento (herramienta Two-Ways) está sincronizada, de tal forma que cualquier modificación en uno de los anteriores elementos tiene su correspondiente e inmediato reflejo en el otro.
Kylix cuenta con herramientas propias para la creación de aplicaciones para el acceso a bases de datos tanto de forma local como remota. Es posible acceder a servidores Oracle a través del BDE (Borland Database Engine).
Kylix produce directamente código ejecutable, de tal forma que las aplicaciones no dependen de otros programas o librerías.
Las aplicaciones generadas con Borland Kylix deberán distribuirse de acuerdo con la GNU/GPL.
El IDE de Kylix se compone de varias ventanas:
Para seleccionar un determinado componente, basta con seleccionarlo de alguna de las barras de botones ó bien acceder a View -> Component List, donde aparecerá una lista de componentes ordenada alfabéticamente.
Las opciones del proyecto y del entorno se pueden modificar, respectivamente, mediante las opciones Tools -> Environment options… y Tools -> Editor Options…
Depuración de Proyectos
Como todas las herramientas Borland, Kylix viene con un depurador integrado que se maneja exactamente igual que en sus hermanos pequeños de las series Turbo Pascal/Borland Pascal/Borland Delphi:
La unidad de trabajo de Kylix es el proyecto (archivo .dpr), que agrupa todos los ficheros de una aplicación. El código asociado al proyecto se mostrará en el editor de código seleccionando Project -> View Source. El literal alfanumérico que acompaña a la palabra reservada PROGRAM es el nombre del proyecto.
El hecho de utilizar PROGRAM indica que se va a crear un programa. Si se fuese a crear una librería, se utilizaría en su lugar LIBRARY.
En la sección uses, mediante la cláusula IN se asocia el nombre del fichero encerrado entre comillas simples que contiene código asociado al formulario. Entre llaves se encuentra una directiva del compilador que indica el nombre de un fichero de recursos (.res) que será incluido en la aplicación. Puede quitarse si no hace falta.
La báscula ALT + F12 muestra el fichero .xfm, en el que se encuentran en formato texto los valores asignados a cada una de las propiedades del formulario. Cada formulario tiene asociada una unit que contiene el código fuente para cada uno de los métodos que responden a los eventos. Esta unidad asociada al formulario tiene la extensión .pas y su nombre coincide con el nombre del fichero de texto asociado al formulario (.xfm).
Cuando se compila un proyecto y se comprueba la sintaxis aparece un fichero .dcu, que permite que la compilación se realice de forma más rápida.
Los ficheros de opciones del proyecto tienen la extensión .kof y el fichero de valores del escritorio la extensión .DSK.
Trabajando con Proyectos
El conjunto de ficheros que forman parte de un proyecto se puede manipular con el Project Manager (View -> Project Manager).
Compartir objetos
El Repositorio de Kylix es una herramienta que permite compartir y copiar formularios, cajas de diálogo y módulos de datos entre proyectos, proporcionando además plantillas desde las que se puede iniciar un proyecto. Es accesible mediante Tools -> Repository.
El objeto Application
Este objeto representa a la aplicación (es de clase TApplication) y tiene una serie de métodos que lo controlan:
Además, tiene una serie de propiedades, entre otras:
Ejecutar el Proyecto
Se puede hacer pulsando F9 ó bien utilizando el botón equivalente de la botonera. El ejecutable final se crea en el mismo directorio que el resto de los archivos del proyecto.
Hay que recordar que Kylix (ó Delphi) producen ejecutables compilados, mientras que otros entornos visuales (como Visual BASIC) no lo hacen.
Las Componentes son clases a partir de las cuáles pueden crearse objetos de interface de usuario. La creación del interface de una aplicación Kylix (como en cualquier otro entorno RAD) puede dividirse en tres fases:
Propiedades
Algunos objetos tienen las llamadas Propiedades Anidadas que indican que una propiedad agrupa a un conjunto de ellas.
Alertas
Para mostrar alertas, hay que utilizar alguno de los siguientes procedimientos, cuya sintaxis es:
Contenedores
En principio, hay tres clases de contenedores: Formularios, GroupBox (muestran el título en la parte superior izquierda) y Paneles (muestran el título en el centro). Los contenedores tienen propiedades (Components, ControlCount, ComponentCount, Controls) que sirven para facilitar el acceso individual a cada uno de los objetos que albergan mediante un índice numérico.
Formularios
Tienen el comportamiento habitual. Entre otros, tienen los siguientes métodos:
Entre otros, tienen los siguientes eventos:
Menús
Para insertar un menú en un formulario basta con incluir un objeto de tipo MainMenu en dicho formulario si se trata de una barra de menú ó bien de tipo PopupMenu si es de tipo menú contextual.
Para iniciar el editor de menús, basta con hacer doble clic sobre el icono que representa al objeto menú y luego seleccionando la propiedad Items en el inspector de objetos.
Para que un elemento de menú disponga de un submenú, basta con hacer clic sobre él con el botón derecho y seleccionar Create Submenu.
Diálogos estándar
Estos cuadros de diálogo (abrir fichero, salvar fichero, etc.) están disponibles desde la pestaña Dialogs. Estos cuadros de diálogo no realizan ninguna acción por sí mismos, únicamente se utilizan como interface entre la aplicación y el sistema.
La forma de trabajo es muy sencilla. En tiempo de diseño se establecen una serie de valores iniciales para las propiedades y cuando se desee que aparezca uno de estos diálogos, se llamará al método Execute con lo cuál, se abrirá el diálogo. Como este método devuelve un valor de tipo Boolean, si el usuario pulsa el botón Aceptar del diálogo, el método devolverá True y False en caso de que pulse el botón Cancelar.
Edición de texto
Se dispone del clásico control TextEdit y además del control Memo, que está preparado para contener múltiples líneas de texto, facilitando al usuario el desplazamiento y la edición. En ambos controles, la entrada de texto puede controlarse mediante el evento OnKeyPress, muy útil para hacer validaciones.
ListBox
Se utiliza para mostrar al usuario una lista de elementos que se pueden seleccionar, añadir (método Add) ó eliminar (método Delete) (por ejemplo, para implementar una PickList). El método Clear permite eliminar todos sus elementos. Su propiedad Count permite saber cuántos elementos tiene en un momento determinado.
ListView
Permite mostrar y tratar una lista de elementos que pueden contener a su vez otros (normalmente iconos a los que se asocia una cadena de caracteres). Se utilizará esta componente para mostrar información de la unidad que el usuario habrá seleccionado previamente en un ListBox.
La propiedad ViewStyle se utilizará para modificar la forma en que se mostrarán los distintos elementos (por defecto, vsReport, columnas). Para crear las columnas se utiliza el editor de columnas que sirve para gestionar las columnas en tiempo de diseño. Se puede acceder a él seleccionando la propiedad Columns.
Puesto que la primera columna contendrá las etiquetas de texto que indicarán el tipo de información mostrada en la segunda columna, se utilizará el editor de elementos que permita incluir elementos y subelementos en el componente, además de asociar diferentes iconos a estos. Se puede acceder a este editor seleccionando la propiedad Items. Esta propiedad dispone a su vez de la propiedad indexada Item que permite acceder a cada uno de los elementos que la componen.
TEMA 2
OBJECT PASCAL
2.1. ESTRUCTURA DE UNA UNIDAD
Dentro de la sección interface se indican aquellas declaraciones que serán accesibles desde otras unidades y ficheros de proyecto. La cláusula implementation contiene las declaraciones y los detalles de aquellos elementos de programa que no serán accesibles por otros módulos.
Se puede incluir código de inicialización y finalización en la unidad dentro de las secciones que acompañan a las cláusulas initialization y finalization, respectivamente. Van situadas detrás de la cláusula var. Las unidades realmente representan módulos que pueden compilarse separadamente, pudiendo utilizarse en diferentes proyectos.
Comentarios
Se permiten comentarios de línea al estilo C++, es decir, con //
Tipos de Datos
Kylix soporta algunos nuevos tipos de datos que se añaden a los ya existentes en anteriores productos
2.2. CLASES
2.3. POLIMORFISMO
2.4. PROPIEDADES Y EXCEPCIONES
2.5. EVENTOS Y MENSAJES
TEMA 3
ELEMENTOS GRÁFICOS
3.1. IMÁGENES
En la pestaña Additional se puede encontrar un control denominado Image que permite la carga de imágenes en los formularios. Estas imágenes pueden ser .BMP, .PNG, .XPM ó .ICO.
3.2. SHAPES
El objeto Shape de la pestaña Additional permite dibujar objetos gráficos. Entre otras, dispone de las siguientes propiedades:
3.3. PAINTBOXES
El objeto PaintBox de la pestaña Additional permite dibujar objetos gráficos. Entre otras, dispone de la propiedad Canvas que encapsula varias funciones de dibujo:
3.4. BARRAS DE BOTONES
Para implementar barras de botones en una aplicación Kylix se debe utilizar el control ToolBar de la pestaña Common Controls. Para agregar botones a la botonera, hacer clic con el botón derecho sobre ella y seleccionar New Button ó New Separator dependiendo de si se quiere añadir un botón normal o un separador. Los botones de la botonera son de tipo ToolButton.
Para la asociación de iconos a los botones de la botonera se emplea el mismo método que en Visual BASIC, es decir, emplear un objeto de tipo ImageList, de la pestaña Common Controls.
Se añaden los iconos necesarios al objeto de tipo ImageList (haciendo doble clic sobre este último). Luego se inicializa la propiedad Images del objeto de tipo botonera y por último, en cada objeto de tipo botón de la botonera, se inicializa la propiedad ImageIndex.
Se pueden asociar a los botones imágenes que aparezcan cuando se encuentren desactivados ó bajo el puntero del ratón, asignando a las propiedades del objeto de tipo botonera DisabledImages y HotImages los objetos de tipo ImageList donde se encuentren dichas imágenes.
Las propiedades Down y Enabled de los botones de la botonera permiten saber cuando se encuentran pulsados y disponibles. Si se desea agrupar una serie de botones para que solamente uno de ellos pueda permanecer pulsado, se deberán seleccionar todos ellos y asignar el valor tbsCheck a su propiedad Style y el valor True a su propiedad Grouped.
3.5. LA BARRA DE ESTADO
Se obtiene mediante el control StatusBar de la pestaña Common Controls. La propiedad SimplePanel indica si la barra tendrá sólo un panel donde pueda escribirse texto ó varios paneles. En el caso de haber varios paneles, éstos se indican mediante la propiedad Panels, la cuál incluye un editor de paneles. Es posible acceder a cada uno de los paneles mediante un índice, por ejemplo: sbBarra.Panels[2].
En el caso de un único panel, la propiedad SimpleText permite inicializar el texto que debe aparecer en la barra.