Lazarus Tutorial - Free Pascal Wiki

20
Lazarus Tutorial/es From Free Pascal wiki Deutsch (de) | English (en) | Español (es) | Suomi (fi) | Français (fr) | Magyar (hu) | Italiano (it) | ⽇本語 (ja) | 뼑霢꽩 (ko) | Македонски (mk) | Nederlands (nl) | Português (pt) | Русский (ru) | Slovenčina (sk) | Shqip (sq) | 中⽂(中国⼤) (zh_CN) | 中⽂(台灣) (zh_TW) Estos son los primeros pasos de una tutoría de Lazarus. Por favor, añade aquí tus experiencias. Contents 1 Resumen 2 ¡Tú primer programa con Lazarus! 2.1 Comenzando 2.2 Segunda sesión 3 El Entorno integrado de desarrollo (IDE) de Lazarus 3.1 Ventana principal 3.2 Otras ventanas del IDE 3.3 El Menú Principal 3.3.1 El submenú Archivo 3.3.2 El submenú Editar 3.3.3 El submenú Buscar 3.3.4 El submenú Ver 3.3.5 El submenú Proyecto 3.3.6 El submenú Ejecutar 3.3.7 El submenú Componentes (Paquete en la v0.9.26.2) 3.3.8 El submenu Herramientas 3.3.9 El submenú Entorno 3.3.10 El submenú Ventanas 3.3.11 El submenú Ayuda 3.4 Panel de botones rápidos 4 La Paleta de Componentes 4.1 Cómo utilizar la paleta 4.2 Pestañas de la Paleta de Componentes 4.2.1 * Standard 4.2.2 * Additional 4.2.3 * Common Controls 4.2.4 * Dialogs 4.2.5 * Misc 4.2.6 * Data Controls 4.2.7 * Data Access 4.2.8 * System 4.2.9 * SynEdit 4.2.10 * IPro 4.2.11 * SQLdb 4.2.12 * RTTI 5 Como utilizar los controles estándar, comunes y extendidos 5.1 Nota: todo lo que se dice respecto de modificar las propiedades de los objetos mediante código, tiene efecto únicamente en tiempo de ejecución, por lo que los efectos de los valores modificados no pueden observarse en el Inspector de Objetos. (iskraelectrica) 6 Cómo utilizar menús en nuestros programas 7 El Depurador 8 Los archivos de Lazarus 8.1 Herramientas del IDE de Lazarus 9 Colaboradores iniciales y cambios Resumen Lazarus es una herramienta de desarrollo libre y de código abierto para el compilador Free Pascal (Object Pascal), que a su vez lo es también. El IDE de Lazarus (Captura de pantalla (http://wiki.lazarus.freepascal.org/images/3/31/Lazarus_IDE_general.png) ) es un entorno de programación estable y con abundantes características para crear aplicaciones tanto con interfaz gráficas como de consola. Actualmente funciona n sistemas Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes 1 de 20 09/06/2014 09:24 p.m.

Transcript of Lazarus Tutorial - Free Pascal Wiki

Page 1: Lazarus Tutorial - Free Pascal Wiki

Lazarus Tutorial/esFrom Free Pascal wiki

Deutsch (de) | English (en) | Español (es) | Suomi (fi) | Français (fr) | Magyar (hu) | Italiano (it) | ⽇本語 (ja) | (ko) | Македонски (mk) | Nederlands (nl) | Português

(pt) | Русский (ru) | Slovenčina (sk) | Shqip (sq) | 中⽂(中国⼤陆) (zh_CN) | 中⽂(台灣) (zh_TW)

Estos son los primeros pasos de una tutoría de Lazarus. Por favor, añade aquí tus experiencias.

Contents

1 Resumen2 ¡Tú primer programa con Lazarus!

2.1 Comenzando2.2 Segunda sesión

3 El Entorno integrado de desarrollo (IDE) de Lazarus3.1 Ventana principal3.2 Otras ventanas del IDE3.3 El Menú Principal

3.3.1 El submenú Archivo3.3.2 El submenú Editar3.3.3 El submenú Buscar3.3.4 El submenú Ver3.3.5 El submenú Proyecto3.3.6 El submenú Ejecutar3.3.7 El submenú Componentes (Paquete en la v0.9.26.2)3.3.8 El submenu Herramientas3.3.9 El submenú Entorno3.3.10 El submenú Ventanas3.3.11 El submenú Ayuda

3.4 Panel de botones rápidos4 La Paleta de Componentes

4.1 Cómo utilizar la paleta4.2 Pestañas de la Paleta de Componentes

4.2.1 * Standard4.2.2 * Additional4.2.3 * Common Controls4.2.4 * Dialogs4.2.5 * Misc4.2.6 * Data Controls4.2.7 * Data Access4.2.8 * System4.2.9 * SynEdit4.2.10 * IPro4.2.11 * SQLdb4.2.12 * RTTI

5 Como utilizar los controles estándar, comunes y extendidos5.1 Nota: todo lo que se dice respecto de modificar las propiedades de los objetos mediante código, tiene efecto únicamente entiempo de ejecución, por lo que los efectos de los valores modificados no pueden observarse en el Inspector de Objetos.(iskraelectrica)

6 Cómo utilizar menús en nuestros programas7 El Depurador8 Los archivos de Lazarus

8.1 Herramientas del IDE de Lazarus9 Colaboradores iniciales y cambios

Resumen

Lazarus es una herramienta de desarrollo libre y de código abierto para el compilador Free Pascal (Object Pascal), que a su vez lo es también. ElIDE de Lazarus (Captura de pantalla (http://wiki.lazarus.freepascal.org/images/3/31/Lazarus_IDE_general.png) ) es un entorno de programaciónestable y con abundantes características para crear aplicaciones tanto con interfaz gráficas como de consola. Actualmente funciona n sistemas

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

1 de 20 09/06/2014 09:24 p.m.

Page 2: Lazarus Tutorial - Free Pascal Wiki

operativos Linux, FreeBSD y Windows 32 bits, y proporciona un editor de código fuente personalizable y un entorno visual para crear formularios,junto con un generador de paquetes, un depurador y una completa integración del GUI con el compilador FreePascal.

¡Tú primer programa con Lazarus!

Quizá sea recomendable que aprendas antes un poco de Pascal. En Wikilibros tienes este completo curso de Programación en Pascal(http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Pascal) que puedes seguir antes o al mismo tiempo que este.

Comenzando

Descarga, instala (Instalación de Lazarus), con lo que también instalarás el compilador FreePascal y ejecuta Lazarus.

Notas: en Linux Ubuntu, al menos, el comando para iniciar a Lazarus desde consola es "startlazarus". Si se instaló desde un paquete Debian, habráuna entrada de menú Lazarus en el menú Aplicacioesn / Programación.

En Debian y Ubuntu el archivo ejecutable principal y el paquete se denominan "lazarus-ide" porque el paquete "tct" ya viene con una utilidadllamada "Lazarus".

Aparecerán varias ventanas en el escritorio: el menú principal arriba, el Inspector de Objetos a la izquierda, el Editor de Código Fuente ocupandola mayor parte del escritorio, y un formulario Form1, preparado sobre el Editor de Código fuente.

En la ventana superior, por debajo de la línea del menú, hay una fila de pestañas. Si la pestaña Standard no está seleccionada, selecciónalapulsando sobre ella con el ratón. Después busca el icono Button (un rectángulo con OK) y selecciónalo con el ratón, después pulsa sobre la ventanaForm1, en alguna parte de la misma. Aparecerá un rectángulo sombreado etiquetado Button1. Selecciona de nuevo el icono Button en la pestañaestándar, y pulsa sobre Form1 en otra parte del formulario: aparecerá otro rectángulo etiquetado Button2.

Ahora selecciona el botón Button1 con el ratón. El Inspector de Objetos mostrará las propiedades del objeto Button1. Entre las primeras hay unapropiedad llamada 'Caption', que muestra el valor 'Button1'. Entra en la casilla, y cambia 'Button1' por 'Pulsa'. Si pulsó la tecla INTRO o cambió aotra casilla, verá como el rotulo del botón en Form1 cambia a 'Pulsa'. Ahora haz selecciona la pestaña Eventos del Inspector de Objetos, para ver loseventos de que dispone el botón. Éstos son, por ejemplo, OnClick, OnEnter, OnExit, etc. Selecciona la casilla que hay a la derecha de OnClick: lacasilla se transforma en desplegable y también aparece un botón con unos puntos suspensivos. Al pulsar este, aparecerá el cursor en el Editor deCódigo Fuente dentro ya de la plantilla del procedimiento del evento:

procedure TForm1 . Button1Click ( Sender : TObject); begin {ahora escribe:} Button1 . caption := 'Pulsa otra vez' ; {el editor siempre termina el procedimiento con} end;

Si pulsas F12 aparecerá la ventana del formulario, al pulsar otra vez F12 volverás al Editor de Código.

Ahora edita las propiedades de Button2: pulsa sobre Button2 para mostrar sus propiedades en el Inspector de Objetos. Cambia su propiedadCaption por 'Cerrar' en lugar de Button2. Ahora selecciona la pestaña Eventos, y haz doble pulsaciónen la casilla de OnClicK, cómo antes, apareceráel cursor en el Editor de Código Fuente dentro ya de la plantilla del procedimiento del evento:

procedure TForm1 . Button2Click ( Sender : TObject); begin {ahora escriba:} Close; {el editor siempre termina el procedimiento con} end;

Pulsa F12 para ver la ventana Form1.

Es conveniente guardar ahora tu trabajo, seleccionando 'Proyecto > Guardar proyecto' (que al no haber guardado nuúnca funciona exactamenteigual que 'Guardar como...'. Elije una ubicación y pon nombre a la unidad que contiene el formulario (unit1.pas, por defecto) y al proyecto(proyect1.lpi, por defecto). Lazarus guarda automáticamente una copia del proyecto en el directorio backup con el estado del proyecto antes decompilar las últimas modificaciones. Es importante guardar por tu cuenta los estados 'estables' del proyecto.

Estás listo ahora para compilar. La forma más simple de hacerlo pulsar la flecha verde que hay en el panel a la izquierda de la barra de pestañas,que equivale a la opción de menú 'Ejecutar -> Ejecutar F9', o más rápido aún: pulsar simplemente F9 . Con esto compilaremos el código y después(si todo es correcto) enlazará y ejecutará el programa.

Durante el proceso aparece una ventana con mensajes de texto, informando sobre el proceso de compilación y enlazado, y finalmente la aparecerála ventana de Form1 sin la rejilla de puntos; ésto indica que es una verdadera ventana de la aplicación, ya dispuesta para que actúe sobre ella,pulsando alguno de los botones que has creado o los que por defecto tiene la ventana, en la barra del título.

Pulsa el botón etiquetado 'Pulsa'. Verás que cambia a 'Pulsa otra vez'. Si lo pulsas otra vez, seguirá diciendo ¡¡'Pulse otra vez'!!

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

2 de 20 09/06/2014 09:24 p.m.

Page 3: Lazarus Tutorial - Free Pascal Wiki

Ahora hazlo con el botón marcado 'Cerrar'. La ventana se cierra, terminando la ejecución del programa. Retornamos a Lazarus, con el formularioform1 para poder continuar el proceso de edición del mismo y del código asociado.

Segunda sesión

Reabre el proyecto guardado antes, si es que los has cerrado.

Selecciona Button1 del Form1 En la ventana Form1.

Selecciona la pestaña 'Eventos' en el Inspector de Objetos, Selecciona la casilla de OnClick, pulsa sobre los puntos suspensivos, para situarte elpunto apropiado en el Editor de Código Fuente.

Edita el código para poner lo siguiente:

procedure TForm1 . Button1Click ( Sender : TObject); {Utilizaremos la propiedad Tag del botón, asignándo le el valor 0 o 1} begin if Button1 . tag =0 then begin Button1 . caption := 'Pulsa otra vez' ; Button1 . tag := 1 end else begin Button1 . caption := 'Pulsa' ; Button1 . tag := 0 end end;

Guarda el trabajo, compila y ejecuta. El botón de la izquierda alternará entre los dos mensajes al pulsarlo. ¡El resto corre de tu cuenta!

Si prefieres escribir programas en PASCAL para consola o basados en texto (por ejemplo si está siguiendo un curso de programación en PASCALbásico, o necesitas escribir programas para usar en tratamiento por lotes o para programar el sistema), puedes también utilizar Lazarus para editar,compilar y ejecutar estos programas. Es un entorno ideal para el desarrollo de PASCAL. Ver PASCAL en modo consola.

El Entorno integrado de desarrollo (IDE) de Lazarus

Al ejecutar por primera vez Lazarus aparecen en el escritorio varias ventanas desconectadas separadas o 'flotantes'.

Ventana principal

La primera, en la parte superior derecha del escritorio, con el rótulo Editor vXX.XX.XX de Lazarus - project1 (que posteriormente reflejará elnombre que pongas al proyecto). Ésta es la ventana principal que controla tu proyecto, y contiene el Menú Principal, la Paleta de Componentes y elpanel de Botones Rápidos.

Una línea por debajo de la barra de título está el Menú Principal con las habituales opciones Archivo, Editar, Buscar, Ver, Ventanas y Ayuda, ycon las opciones que son específicas de Lazarus. Debajo, a la izquierda hay un sistema de Botones Rápidos, que te llevan ágilmente a opciones delMenú Principal, y a la derecha está la Paleta de Componentes.

Otras ventanas del IDE

Debajo de la ventana del editor de Lazarus aparecerá a la izquierda la ventana Inspector de Objetos, y la del Editor de Código Fuente a laderecha. Puede haber otra ventana más pequeña, etiquetada, en principio, Form1 (http://lazarus-ccr.sourceforge.net/kbdata/blankform.jpg) ,sobre la ventana del Editor de Código. Si no es visible inmediatamente, puede hacerse aparecer presionando la tecla F12 , que alterna entre la vistadel Editor de Código y la vista del formulario Form1. La ventana del formulario es en la que constituirá el interfaz gráfico de tu aplicación, mientrasque el Editor de Código es la ventana que muestra el código de PASCAL asociado a la aplicación que está creando. El Inspector de Objetos sedescribe con detalle más adelante, junto con la Paleta de Componentes. Cuando comience un nuevo proyecto (o cuando ejecute Lazarus porprimera vez) se construirá un formulario predefinido, que se compone de una caja en la que hay una rejilla de puntos para ayudarle a colocar losdiversos componentes del formulario, y una barra a lo largo de la parte superior que contiene los botones habituales Minimizar , Maximizar yCerrar . Si usted pulsa con el ratón en cualquier lugar de la caja, verá las propiedades de este formulario mostradas en el Inspector de Objetos en el

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

3 de 20 09/06/2014 09:24 p.m.

Page 4: Lazarus Tutorial - Free Pascal Wiki

lado izquierdo del escritorio.

Otras ventanas que pueden llegar a servisibles durante su trabajo: Inspectordel Proyecto, que contiene los detallesde los archivos incluidos en su proyecto,y permite que agregar archivos oeliminar archivos de su proyecto; laventana Mensajes, que muestramensajes del compilador, errores oinformes sobre el progreso de suproyecto; si Lazarus fuese ejecutadodesde una ventana de terminal, elterminal original seguiría siendo visibley los mensajes detallados delcompilador también se mostrarían allí. Por último, también puede ver unaventana de mensajes en la parte inferiorde la pantalla: ésta es utilizada porLazarus para mostrar los resultados alprogramador, por ejemplo, al compilarun programa.

El Menú Principal

La línea del menú principal contiene las siguientes entradas: Archivo Editar Buscar Ver Proyecto Ejecutar Componentes (Paquete en la versión0.9.26.2) Herramientas Entorno Ventanas Ayuda

Como de costumbre, las opciones se pueden seleccionar colocando el cursor del ratón sobre la opción del menú y pulsando con el botón izquierdo,o pulsando Alt + F en el teclado (suponiendo que la ventana del Menú Principal tenga el foco: si no lo tiene, pulse Tab ⇆ varias veces paracompletar un ciclo del foco a través de varias ventanas hasta que la ventana deseada tenga su barra de título resaltada).

El submenú Archivo

Nueva Unidad: Crea un nuevo archivo Unidad (en código fuente Pascal).Nuevo Formulario: Crea un nuevo Formulario: tanto la ventana visual en pantalla como el archivo asociado en código fuente Pascal.Nuevo ...: Muestra ventana emergente con un menú (captura de pantalla (http://wiki.lazarus.freepascal.org/images/e/ef/Lazarus_Ventana_Nuevo.png) ) con los distintos tipos de proyectos y archivos nuevos que se pueden crear.Abrir : Muestra un cuadro de diálogo emergente para permitirle recorrer el sistema de archivos y elegir un archivo existente para abrirlo..Deshacer: Anula los cambios de edición y devuelve el archivo a su estado original.Guardar : Guarda el archivo actual, usando su nombre original. Si no tiene nombre, el sistema se lo pregunta (igual que Guardar como)Guardar como: Le permite escoger una carpeta y un nombre para guardar el archivo actual.Cerrar : Cierra el archivo actual, preguntando si quiere guardar todos los cambios del editor.Cerrar todos los archivos del editor: Cierra todos los archivos abiertos actualmente en el editor. Pregunta si se guardan los cambios.Limpiar directorio : Muestra un diálogo con varios filtros editables para borrar archivos del directorio actual. Útil para borrar archivos .bak yrestos de antiguos proyectos en Delphi.Salir: Sale de Lazarus, después de preguntar si se guardan los archivos editados.

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

4 de 20 09/06/2014 09:24 p.m.

Page 5: Lazarus Tutorial - Free Pascal Wiki

El submenú Editar

Deshacer: Deshace el último cambio, dejando el Editor como estaba antes de la última acción.Rehacer: Rehace la última acción que fue anulada por Deshacer.Cortar : Borra el texto u otros objetos seleccionados y los coloca en el portapapeles.Copiar: Hace una copia del texto seleccionado, dejando el original en su sitio y colocando unacopia en el portapapeles.Pegar: Sitúa el contenido del portapapeles en la posición del cursor. Si el texto ha sidoseleccionado en la posición del cursor, el contenido del portapapeles sustituirá al textoseleccionado.Sangrar selección: Mueve el texto seleccionado hacia la derecha según lo indicado en Entorno-> Opciones del Editor -> General -> Sangrar bloque. Esta característica es útil para formatear sucódigo fuente Pascal para mostrar la estructura del bloque subyacente.Desangrar selección: Elimina un nivel de sangrado, moviendo el texto hacia la izquierda según loindicado en Sangrar bloque.Encerrar selección: Muestra un menú emergente con varias opciones para, lógicamente, encerrarel texto seleccionado (begin ... end; try ... except; try ... finally; repeat ... until; { ... }; etc).Selección en mayúsculas: Convierte el texto seleccionado en mayúsculas.Selección en minúsculas: Convierte el texto seleccionado en minúsculas.Tabulaciones a espacios en selección: Convierta cualquier tabulación en el texto seleccionadosegún el número de espacios especificado en Entorno -> Opciones del Editor -> General ->Anchura de tabulación. No se fija el número de espacios cuantitativamente, sino el número que senecesita para rellenar el ancho restante de tabulación.Romper líneas seleccionadas: Si algunas líneas en el texto seleccionado o el númeroespecificado en Entorno -> Opciones del Editor -> Pantalla -> Margen derecho, tienen más de 80caracteres, la línea se rompe en una palabra límite y continúa en la línea siguiente.Comentar selección: Convierte el texto seleccionado en comentarios, insertando // en cada línea.Descomentar selección: Borra las marcas de comentario.Ordenar selección: Ordena líneas (o palabras o párrafos) alphabeticamente; en orden ascendenteo descendente, puede ser sensible o insensible a mayúsculas/minusculas. En mitad del códigofuente del programa, claro, se convierte en insensible, pero si tiene una lista que necesita ordenarlo puede hacer con esto.Seleccionar: Permite seleccionar bloques de texto. Las opciones son Seleccionar todo,Seleccionar tira, seleccionar párrafo o línea, etc.Insertar desde mapa de caracteres: Permite insertar símbolos que no están en el teclado talescomo caracteres acentuados, seleccionándolos desde un mapa de caracteres emergente.Insertar texto: Muestra un menú emergente que permite insertar texto normal, tal como palabras clave de CVS (Author, Date, Header, etc) oavisos de GPL, usuario o fecha y hora actual.Completar código: Completa el código donde está el cursor. Es sensible al contexto y le ahorra mucho tiempo. Por ejemplo: completa clases,añadiendo variables privadas, las propiedades Get y Set acceden a métodos y añaden partes principales de métodos. Asignando variables (porejemplo i:=3;) añade las declaraciones de las variables. En los procedimientos definidos en adelante añade las partes principales de losmétodos. Al asignar eventos (OnClick:=) añade la definición del método y su parte principal. Véase Herramientas del IDE de Lazarus.Extraer procedimiento: Usa el texto seleccionado (una declaración o varias) para construir un nuevo procedimiento.

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

5 de 20 09/06/2014 09:24 p.m.

Page 6: Lazarus Tutorial - Free Pascal Wiki

El submenú Buscar

Buscar: Parecido a lo que existe en casi todos los editores de texto: aparece un cuadrode diálogo emergente que permite introducir una cadena de texto a buscar, con opcionescomo sensible a mayúsculas/minúsculas, palabras completas, origen, alcance y direcciónde búsqueda.Buscar Siguiente, Buscar Anterior: Busca otra vez según la entrada de texto previa,en la dirección especificada.Buscar en archivos: Busca el texto en archivos: cuadro de diálogo emergente con lasopciones todos los archivos abiertos, todos los archivos en el proyecto, o todos losdirectorios; se pueden utilizar caracteres comodín para seleccionar archivos de un tipodeterminado.Reemplazar: Parecido a Buscar; muestra un cuadro de diálogo emergente con espaciopara escribir una cadena de texto y sustituir texto y opciones de sensibilidad amayúsculas/minúsculas, dirección, etc.Búsqueda incremental: Busca la cadena de texto mientras estamos introduciendo lacadena a buscar. Por ejemplo: después de elegir "Búsqueda incremental" si teclea "l" laprimera "l" se resaltará. Si después presiona "a", el editor buscará la siguiente "la" y asísucesivamente.Ir a línea: Mueve el cursor de edición a la línea especificada de un archivo.Saltar atrás: Regresa en el archivo a el anterior marcador (es necesario haber utilizadoAñadir punto de salto al historial. Se moverá a marcadores en otros archivos abiertosen el Editor.Saltar adelante: Se mueve hacia delante al próximo marcador.Añadir punto de salto al historial: Añade marcadores o puntos de salto al archivo.Ver historial de salto: Muestra la lista de marcadores del archivo: Todavia no llevado acabo.Buscar otro final del bloque de código: Situados en un begin, busca el correspondienteend o viceversa.Buscar comienzo del bloque de código: Se mueve al begin de un procedimiento ofunción en la que está situado el cursor.Buscar declaración desde el cursor: Buscar el lugar en el que se ha declarado elidentificador seleccionado. Esto puede ser en el mismo archivo u otro ya abierto en elEditor; si el archivo no está abierto, se abrirá (cuando se declara un procedimiento o unafunción, por ejemplo, en classesh.inc , se abrirá en el Editor).Abrir nombre de archivo a cursor: Abre el archivo cuyo nombre se ha seleccionado con el cursor. Es útil para examinar archivos Include oarchivos que contienen otras Unidades usadas en el proyecto.Ir a directiva de inclusión: Si el cursor está situado en un archivo que está Incluido en otro archivo, va al lugar en el otro archivo que llamó elarchivo Include.

El submenú Ver

Controla la visualización de varias ventanas y paneles en la pantalla.

Inspector de Objectos: La ventana que normalmente ocupa el lado izquierdo del escritorio y muestra las propiedades del formulario queaparece en él. Si hace clic con el ratón en cualquier componente de un formulario se mostrarán los detalles de ese componente en el Inspectorde Objetos. En la parte superior hay un panel que muestra la estructura en árbol del proyecto actual y en el que se pueden seleccionar loscomponentes del formulario: esto también hará que se muestren en el Inspector de Objetos los correspondientes detalles. El panel principalinferior tiene dos pestañas que permiten seleccionar Propiedades o Eventos. Si se selecciona Propiedades se muestran características comonombre, color, etiqueta, tipo de letra, tamaño, etc.: hay dos columnas, la izquierda muestra la propiedad y la derecha el valor asociado a esapropiedad. Si se selecciona Eventos muestra dos columnas: la izquierda lista los posibles eventos tales como MouseClick o KeyDownasociados con ese componente, y la izquierda la acción que resulta de ese evento. Si ho hay una acción definida, haciendo clic en la casillaapropiada o en el botón hace que aparezca el Editor de Código, con el cursor ya colocado en una plantilla de declaración de procedimiento,esperando que tecleemos el código que defina el evento.Editor del código fuente: La ventana principal donde se edita el código fuente. Su funcionamiento es muy parecido a la mayoría de loseditores de texto gráficos, así que el ratón puede mover el cursor sobre el texto mostrado, y al hacer clic con el botón izquierdo mientrasarrastramos se seleccionará y sombreará texto. Al pulsar con el botón derecho se muestra un menú emergente, pero si está familiarizado conWindows, o editores de Gnome o KDE, encontrará que el menú emergente NO tiene las funciones habituales de edición: Cortar, Copiar yPegar, sino que incluye opciones como Buscar Declaración o Abrir archivo en cursor. La parte superior del Editor del código fuente tienevarias pestañas, que corresponden a los archivos que están abiertos para el proyecto actual; pulsando sobre cualquiera se verá el archivo, ypodrá moverse fácilmente de un archivo a otro, copiando y pegando entre archivos y realizando la mayoría de las funciones normales deedición. El Editor del código fuente resalta texto en color, con colores diferentes para signos de puntuación, comentarios, constantes, etc.También mantiene el nivel de sangrado de línea en línea, mientras no lo cambie. La funcionalidad y apariencia del Editor del código fuente sonmuy configurables desde el Menú Principal seleccionando Entorno -> Opciones del editor y seleccionando después una de las pestañas delcuadro de diálogo emergente.Explorador de código: Una ventana emergente (http://wiki.lazarus.freepascal.org/images/a/a9/lazarus.IDE.ExploradorCodigo.png) .normalmente situada a la derecha del escritorio que muestra, en forma de árbol, la estructura del código en la unidad o programa actual.

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

6 de 20 09/06/2014 09:24 p.m.

Page 7: Lazarus Tutorial - Free Pascal Wiki

Habitualmente se abre con el nombre de unidad y ramas para las secciones Interface eImplementation, pero pulsando en el recuadro situado a la izquierda decualquier rama abrirá sus sub-ramas o ramitas, con más y más detalles hasta constantesindividuales, se mostrarán tipos y variables, así como procedimientos y declaraciones defunción. Si cambia el archivo mostrado en la ventana principal del Editor del código fuente,necesitará pulsar el botón Refrescar del Explorador de Código para mostrar la estructura delnuevo archivo.Unidades...: Abre una ventana emergente de diálogo con una lista de los archivos de unidadesen el proyecto actual. Haciendo clic con el ratón sobre un nombre de archivo se selecciona esearchivo; pulse en Abrir para mostrar ese archivo en el Editor del código fuente. Si marca elrecuadro Multi podrá seleccionar varios archivos a la vez, y todos ellos se abrirán en el Editordel código fuente (pero sólo se mostrará uno cada vez). Este Menú Opción se parece bastante aProyecto -> Opciones del Inspector del Proyecto, pero sólo muestra la lista de archivosunidades y permite que sean abiertos.Formularios...: Abre una ventana de diálogo emergente con una lista de los formularios delproyecto actual, y permite seleccionar uno o más para que sean mostrados.Ver dependencias de la unidad: Abre una ventana de diálogo(http://wiki.lazarus.freepascal.org/images/6/65/lazarus.IDE.Ver.Dependencias.Unidad.png)emergente que muestra, como un árbol, la estructura de dependencias del archivo unidadactualmente abierto. La mayoría de los archivos listados como dependencias tendrán suspropios recuadros , lo que permite que se exploren las dependencias de losarchivos individuales, a menudo de una manera muy recursiva.Commutar Ver formulario / unidad : Commuta entre el Editor del código y el formularioactual situado en la capa superior del escritorio, y le da el foco. Si el Editor del código tiene elfoco, puede editar el código fuente; si se le da el foco al formulario podrá manipular loscomponentes en el escritorio y cambiar el aspecto del formulario. El modo más sencillo dealternar entre el Editor y el formulario es usar la tecla F12 , pero se consigue el mismoresultado seleccionando esta opción en el Menú Principal.Mensajes: Una ventana que muestra los mensajes del compilador, el avance de unacompilación con éxito o lista los errores encontrados.Buscar resultados: Una ventana que muestra los resultados de una búsqueda en archivos.Ventanas de depuración: Abre un menú emergente con varias opciones para operar y configurar el depurador. Más abajo se describe elDepurador

El submenú Proyecto

Nuevo proyecto: Crea un nuevo proyecto. Aparece una ventana de diálogo emergenteque ofrece la posibilidad de elegir entre varios tipos de proyectos.Nuevo proyecto desde archivo: Aparece una ventana de diálogo de navegación, quepermite seleccionar un archivo desde el cual crear un nuevo proyecto.Abrir proyecto Abre un proyecto que ya había sido creado y guardado. Aparece undiálogo de navegación con una lista de archivos con Información del Proyecto Lazarus(Lazarus Project Information (.lpi)) desde el que se puede elegir un proyecto.Abrir proyecto reciente: Muestra una lista emergente de los proyectos recientes enlos que ha estado trabajando y permite seleccionar uno de ellos.Guardar proyecto: Parecido a Archivo -> Guardar: se guardan todos los archivos delproyecto actual; si no fueron previamente guardados, se nos pregunta el nombre- comoen Guardar Proyecto como...Guardar proyecto como...: Pide un nombre para guardar el proyecto. Se ofrece pordefecto el nombre Project1.lpi, pero debería elegir su propio nombre. Lazarus nopermitirá usar el mismo nombre para el archivo proyecto y el archivo unidad (véasemás abajo).Publicar proyecto: Crea una copia de todo el proyecto. Si desea mandárselo a alguiensólo la configuración de las fuentes y el compilador de su código, esta función es suamiga. Una carpeta normal de proyecto contiene mucha información. La mayoria noes necesario hacerla pública: el archivo .lpi contiene información de la sesión (comoposición de inserción de texto y marcadores de unidades cercanas) y la carpeta delproyecto contiene muchos archivos .ppu, .o y el ejecutable. Para crear un archivo lpisolamente con la información base y sólo las fuentes, en todas las subcarpetas use"Publicar proyecto". En el diálogo puede establecer los filtros excluir e incluir y con la orden después puede condensar la salida a un únicoarchivo. Véase Herramientas del IDE de LazarusInspector del proyecto: Abre un diálogo con aspecto de árbol que muestra los archivos del proyecto actual. Permite añadir, borrar y abrir losarchivos que se seleccionen, o cambiar las opciones del proyecto.Opciones del proyecto...: Abre una ventana de diálogo con varias pestañas para establecer opciones para Aplicación (título, archivo desalida), Formularios (que permite seleccionar, de entre los formularios disponibles, los que se crearan automáticamente al arrancar laaplicación) y Miscelánea (especifica si la información del editor debería guardarse para archivos cerrados, o sólo para archivos del proyecto).NO ESTOY REALMENTE SEGURO DE LO QUE SIGNIFICA ESTO: ¡¡AYUDA!! --> en la versión 0.9.24 estas casillas figuran en la

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

7 de 20 09/06/2014 09:24 p.m.

Page 8: Lazarus Tutorial - Free Pascal Wiki

pestaña Sesión y lo que viene a decir es si se salvan cambios realizados en archivos abiertos en el editor, pero que no pertenecen al proyecto,normalmente unidades que figuran en la cláusula uses y otros que nosotros hayamos abierto, pero no añadido al proyecto. Lo de los archivoscerrados si que es un misterio.Opciones del compilador...: (Se trasladó a aquí recientemente desde el Menú Ejecutar). Abre una ventana multipagina con pestañas paraconfigurar el compilador. Las pestañas son Rutas para definir trayectorias de búsqueda para unidades, archivos include, librerías, etc., tambiénpermite elegir un tipo de interfaz para los formularios (gtk, gnome, win32); Procesando para elegir las reglas para procesar programas fuente,Código para hacer que los programas sean mas rápidos y pequeños, elegir procesador objetivo, tipos de comprobaciones, tamaño de la pila,etc; Enlazando permite elegir como usar la depuración, librerías estáticas o dinámicas, y si se pasarán las opciones a través del enlazador;Mensajes definir que tipo de mensajes se generarán si hay errores; Otro para decidir si usar el archivo de configuración por defecto (fpc.cfg)o algún otro archivo; Heredado muestra un diagrama con estructura de árbol para indicar cómo han sido heredadas las opciones desdeunidades ya incorporadas; Compilación permite definir comandos que se ejecutarán antes o después de lanzar el compilador y puede permitirusar archivos Make.Añadir archivo de editor al proyecto: Añade al proyecto el archivo que se está editando en este momento.Eliminar del proyecto: Aparece un menú emergente con los archivos que se pueden quitar del proyecto.Ver fuente: Independientemente del archivo que está editando, lo lleva de regreso al archivo del programa principal (.lpr), o al archivoprincipal .pas si no hay .lpr.Ver lista Para-Hacer: Abre un cuadro de diálogo con una lista de tareas pendientes asociadas a este proyecto. Listará cualquier comentariode tareas pendientes de su proyecto (líneas que comienzan por //TODO), y cualesquiera otras en las unidades Lazarus que utilizó. NecesitaRefrescar las tareas pendientes en el diálogo (usando el botón con el símbolo de una flecha en la barra de herramientas) para que aparezcan lasnuevas tareas pendientes. La primera columna de la lista de tareas pendientes contiene números que ha destinado a sus comentarios ToDo; unsimple //TODO hará que aparezca un cero, pero un comentario //TODO999 (por ejemplo) pondrá el número 999 en la primera columna.Recuerde que no puede haber espacios antes de //TODO y que los comentarios ToDo añadidos después de la última vez que guardó ¡no semostrarán!

El submenú Ejecutar

Construir : hace que Lazarus construya (es decir compile) los archivos del proyecto que hansufrido cambios desde la última construcción.Construir todo : Construye todos los archivos del proyecto, hayan sufrido cambios o no.Abortar construcción: Para el proceso de construcción una vez iniciado - si ha recordado quehizo algo mal y quiere parar la construcción , o el proceso parece que se alarga mucho yevidentemente, hay algún error.Ejecutar: Este es el modo normal para lanzar el compilador y, si la compilación tiene éxito,empezar la ejecución de la aplicación. Lo que relamente ocurre es que Lazarus guarda unacopia de sus archivos, después inicia el compilador y el enlazador, luego comienza la ejecucióndel programa binario enlazado final.Pausar: Suspende la ejecución del programa. Esto le puede permitir inspeccionar cualquiersalida que haya sido generada; la ejecución se puede continuar seleccionando Ejecutar otravez.Paso a paso por instrucciones: Utilizado junto con el depurador, produce la ejecución delprograma paso a paso hasta un punto señalado del código fuente.Paso a paso por funciones: Produce la ejecución paso a paso hasta la declaración señalada,después salta la declaración y continúa la ejecución a velocidad normal. Útil para intentar aislaruna declaración que provoca un error lógico.Ejecutar hasta cursor: Provoca la ejecución a velocidad normal (es decir, NO una declaracióncada vez) hasta la declaración donde está el cursor; después se para. Continúe la ejecución avelocidad normal seleccionando EjecutarDetener: Para la ejecución del programa. No se puede continuar seleccionando Ejecutar; estohará que comience el programa otra vez desde el principio (recompilando si es necesario).Parámetros de ejecución: Abre una ventana emergente multipágina que permite opciones deconsola y parámetros que se le pasarán al programa para que sean ejecutados; permite laselección de monitor para ejecutar el programa (por ejemplo, en Linux se puede utilizar unterminal X remoto); algunas variables de entorno pueden ser invalidadas.

Una aplicación muy importante de este submenú es activar una ventana de terminal en la quese muestra una consola Pascal de entrada/salida. Si está desarrollando un programa Pascal en modo consola (por ejemplo, que no use elinterfaz gráfico de usuario (GUI) con sus formularios, botones y recuadros) debería marcar la casilla "Usar lanzando aplicación". La primeravez que haga esto e intente Compilar/Ejecutar, probablemente obtendrá un desagradable mensaje que diga:

"xterm: Can't execvp /usr/share/lazarus//tools/runw ait.sh: Permission denied".

Si ocurre esto, necesita cambiar los permisos del archivo apropiado (por ejemplo usando chmod +x archivo, o usando la utilidad de Windowspara cambiar permisos); puede que tenga que hacer esto como administrador. Después, cada vez que ejecute el programa, aparecerá unaventana de terminal con todo su texto de entrada/salida (readln, writeln, etc).Después de terminar la ejecución de su programa, aparecerá un mensaje "Presione intro" en la pantalla. Así, cualquier salida que produzca suprograma permanecerá en la pantalla hasta que haya podido leerla; después de que presione 'intro' se cerrará la ventana de consola.Véase este tutorial sobre programación Pascal en modo consola.

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

8 de 20 09/06/2014 09:24 p.m.

Page 9: Lazarus Tutorial - Free Pascal Wiki

Reiniciar depurador: Devuelve el depurador a su estado original, con lo que se borran los puntos de interrupción y los valores de lasvariables.Construir archivo : Compila (construye) sólo el archivo que está abierto en este momento en el editor.Ejecutar archivo: Compila, enlaza y ejecuta sólo el archivo abierto en este momento.Configurar Construir+Ejecutar archivo : Abre una ventana multipágina con opciones que permiten construir únicamente este archivocuando se selecciona Construir proyecto, permite seleccionar la carpeta de trabajo, el uso de varias macros, etc. Después construye y ejecutael archivo.

Estas tres últimas opciones le permiten abrir (y mantener) un proyecto de prueba. Use Archivo -> Abrir, para abrir un archivo .lpr, presionecancelar en el diálogo siguiente para abrir este archivo como un archivo "fuente normal".

El submenú Componentes (Paquete en la v0.9.26.2)

Abrir paquete cargado...: Muestra una Lista de los paquetes instalados(http://wiki.lazarus.freepascal.org/images/c/cd/Lazarus_Abrir_Paquete_Cargado.png) ,dándonos la posibilidad de abrir uno de ellos , y en la ventana (http://wiki.lazarus.freepascal.org/images/4/43/Lazarus_Abrir_Paquete.png) que sale configurarlo, compilarlo o editarlo.Abrir archivo de paquete (lpk)...: Abre el paquete seleccionado y en la ventana(http://wiki.lazarus.freepascal.org/images/4/43/Lazarus_Abrir_Paquete.png) que saleconfigurarlo, compilarlo o editarlo.Abrir paquete de unidad actual: Abre la ventana (http://wiki.lazarus.freepascal.org/images/4/43/Lazarus_Abrir_Paquete.png) de configuración del paquete al que pertenece la unidadactiva en el editor de código.Abrir paquete reciente...: Abre un paquete que fue abierto recientemente.Añadir unidad activa al paquete: Sitúa el archivo unidad (que se encuentra seleccionado eneste momento en el editor) dentro de un paquete.Gráfico de paquete...: Muestra un gráfico (http://wiki.lazarus.freepascal.org/images/e/eb/Lazarus_Grafico_Paquete.png) con las relaciones entre los paquetes que se están usando(si no estás usando ningún otro paquete, se mostrarán el paquete Lazarus y el FCL y el LCL).Configurar paquetes instalados...: Muestra los paquetes disponibles y los instalados. Permite añadir y suprimir paquetes.

El submenu Herramientas

Configurar herramientas personalizadas: Permite al usuario añadir variasherramientas externas (generalmente macros) al juego de herramientas.Comprobación rápida de la sintaxis: Realiza una comprobación rápida de lasintaxis en su archivo fuente sin compilar nada realmente. El paso esencial en eldesarrollo de programas largos y complicados, cuando no quiere perder tiempocompilando si el código está equivocado.Adivinar bloque sin cerrar : Útil si tiene una estructura de bloques anidados yha dejado un 'end' en algún lugar.Adivinar IFDEF/ENDIF perdido : De utilidad si hay una estructura de macroanidada o compleja y cree que ha dejado una directiva ENDIF.Hacer ResourceString: Convierte la cadena seleccionada en un ResourceStringsituándola en una sección resourcestrings, que debe existir en alguna unidad delproyecto. Una ventaja de ResourceStrings es que pueden ser modificadas ¡sinnecesidad de compilar el proyecto de nuevo! con las herramientas adecuadas.Diff : Permite comparar dos archivos (generalmente dos versiones del mismoarchivo) para encontrar diferencias. Opciones para ignorar espacios en blanco alprincipio o al final de las líneas o variaciones del terminador delínea: CR+LFfrente a LF. Útil para comprobar si ha habido cambios desde la últimaactualización de CVS, etc.Opciones de las plantillas del proyecto: Este elemento es añadido por elpaquete Project Templates.Verificar archivo LFM en editor : Permite inspeccionar el archivo LFM quecontiene las especificaciones que describen el formulario actual.Convertir unidad de Delphi a unidad de Lazarus: Ayuda a convertiraplicaciones Delphi en Lazarus; realiza los cambios necesarios en el archivofuente. Ver Lazarus para usuarios de Delphi y Guía de conversión de código.Convertir proyecto de Delphi a proyecto de Lazarus: Ayuda a convertir proyectos Delphi en proyectos Lazarus; realiza los cambiosnecesarios en los archivos que componen el proyecto. Ver Lazarus para usuarios de Delphi y Guía de conversión de código.Convertir paquete de Delphi a paquete de Lazarus: Ayuda a convertir paquetes Delphi en paquetes Lazarus; realiza los cambios necesariosen los archivos que componen el paquete. Ver Lazarus para usuarios de Delphi y Guía de conversión de código.Convertir archivo DFM a LFM : Para llevar de Delphi a Lazarus: convierte los archivos de descripción del formulario de Delphi a Lazarus.Véase Lazarus para usuarios de Delphi y Guía de conversión de código.Construir Lazarus: Ejecuta una reconstrucción de Lazarus desde los archivos más recientemente descargados o actualizados vía CVS.Añadirá o eliminará los paquetes sgún hallamos indicado en la ventana configurar paquetes instalados. Pulse el botón y ¡siéntese a mirar lo que

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

9 de 20 09/06/2014 09:24 p.m.

Page 10: Lazarus Tutorial - Free Pascal Wiki

ocurre! (siga el proceso en la ventana Mensajes).Configurar "Construir Lazarus" : Permite al usuario determinar qué partes de Lazarus serán reconstruidas, y cómo. Por ejemplo, puedeseleccionar que sólo se reconstruya la LCL, o todo excepto los ejemplos; puede seleccionar qué interfaz de LCL usar (por ejemplo quéconjunto de interfaces) , y puede seleccionar el sistema operativo y especificar una carpeta diferente.

El submenú Entorno

Opciones del Entorno: exhibe una ventana de páginas con múltiples pestañas paraArchivo - permite que el usuario especifique la ruta para la carpeta pordefecto, el compilador, la carpeta de fuentes y la carpeta temporal para lacompilación;Escritorio - opciones para el idioma, guardar automáticamente, guardarpropiedades del escritorio, sugerencias para paleta de componentes y botonesrápidos;Ventanas, permite la especificación del tamaño y del comportamiento devarias ventanas;Editor de formulario - elegir los colores para editar formularios;Inspector de objetos - elegir el color y la altura de elementos;Copia de seguridad - especificar cómo hacer copias de seguridad de los archivos cuando editamos;Nombrando - especificar qué extensión utilizar al nombrar archivos de PASCAL ('pp' o 'pas'), si se guardarán los archivos con nombresen minúsculas, si se borrarán o renombrarán automáticamente.

Opciones del Editor: ventana de páginas múltiples, con pestañas paraGeneral - determina comportamientos como sangrado automático, resaltado de paréntesis, arrastrar y soltar, desplazamiento por eltexto, resaltado de sintaxis, mostrar sugerencias, tamaño de sangrado de bloques y las pestañas, límite de deshacer;Visualizar - opciones para mostrar números de línea, la presencia de canales, el tamaño y el tipo de fuente para el editor, y contiene unpanel de vista previa que muestra los colores de varias características de la sintaxis tales como comentarios, carpetas, puntuación,errores y puntos de ruptura;Accesos rápidos - para seleccionar entre el esquema de Lazarus o el de Turbo Pascal;Color - permite elegir el esquema de color para las características del texto, para varios lenguajes tales como Objet PASCAL, C++, Perl,HTML, XML y scripts de shell. Muestra el panel de vista previa otra vez (para cualquier lenguaje seleccionado);Herramientas de código - permite seleccionar características como la terminación del identificador, consejos, especificación delnombre del archivo plantilla, plantillas específicas para la terminación del código.

Opciones de depuración: ventana de páginas múltiples con pestañas paraGeneral - eligir depurador: ninguno, depurador de GNU (gdb) o gdb a través de SSH, especificar las rutas de búsqueda para lasdepuraciones, y las opciones específicas para la depuración elegida;Registro de eventos - especificar si borrar el registro y ejecutar, y qué mensajes exhibir;Excepciones del lenguaje - seleccionar qué excepciones se pueden ignorar;Excepciones del sitema operativo - permite que el usuario agregue ciertas señales que se apliquen al sistema operativo actual (nofunciona todavía).

Opciones de CodeTools: ventana de páginas múltiples, pestañas paraGeneral - permite la entrada de las rutas de búsqueda de código fuente adicionales, especificar método de salto;Creación de código - se determina si el código creado está agregado antes o después de cierto punto;Palabras - se determina si las palabras claves de Pascal se deben introducir en mayúsculas o minúsculas, o como palabras todas enmayúsculas;Separación de línea - establece las reglas sobre dónde se permite partir las líneas (antes o después de la puntuación, después de laspalabras claves, etc);Espacio - decidir si un espacio debe ser agregado automáticamente antes o después de ciertos rasgos sintácticos tales como palabrasclaves o signos de puntuación.

Definir editor de CodeTools: permite insertar plantillas de Free Pascal, Lazarus, Delphi o Kylix.Escanear de nuevo el directorio de fuentes de FPC: busca por la carpeta otra vez. Lazarus utiliza las fuentes del FPC para generar eventoscorrectos y cuando busca declaraciones. Si cambia la carpeta en las opciones del entorno, esa carpeta se vuelve a explorar, para cerciorarse deque Lazarus utiliza la versión que se almacenó en esa localización. Pero si esa carpeta ha cambiado sin que Lazarus lo advierta, entoncespuede obtener algunos errores al diseñar formularios o hacer "Encontrar declaración". Si obtiene tal error, puede hacer dos cosas:

Comprobar la carpeta de fuentes del FPC configurada en la opción Entorno.1.Volver a explorar la carpeta de fuentes del FPC.2.

El submenú Ventanas

Contiene una lista de las ventanas abiertas y por tanto disponibles, como Editor de código fuente,Inspector de Objetos ,Inspector del proyecto, Mensajes y las de los formularios. Seleccionando elnombre de una de las ventanas la pondrá en primer plano y le dará el foco.

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

10 de 20 09/06/2014 09:24 p.m.

Page 11: Lazarus Tutorial - Free Pascal Wiki

El submenú Ayuda

Tiene tres opciones:

Ayuda en línea abre una ventana del navegador que contiene una imagen de un guepardo corriendo yvarios enlaces a Lazarus, FreePascal y el sitio web del WiKi.Configurar Ayuda abre un menú emergente con opciones para seleccionar visores y bases de datos paraleer información de ayuda. Esta opción permite especificar cualquiera de los documentos en línea del sitioweb de Lazarus-CCR, algunos otros sitios que contienen documentos, o un almacenamiento local para ladocumentación (esta será la opción por defecto, cuando esté terminado completamente el sistema deayuda).

En la actualidad, al situar el cursor en la ventana del Editor sobre cualquier palabra clave de la Librería de Componentes de FreePascal (FCL) o laLibrería de tiempo de ejecución (RTL) (pero no la Librería de Componentes de Lazarus, LCL) y presionar F1 se abrirá a la definición apropiada enel sitio web.

Hay otras opciones de ayuda para el usuario final fuera de línea. Por ejemplo, si tienes una copia de Kylix, puede reutilizar los archivos de ayuda quevienen con él, dentro del IDE de Lazarus. Ver la página Adding Kylix Help para más detalles.

Acerca de Lazarus muestra un recuadro emergente con información sobre Lazarus, cómo la versión, los integrantes del equipo de desarrollo yagradecimientos varios.

Cuándo esté finalizado, será un completo servicio de ayuda en línea, con información sobre sintaxis de Pascal, el uso del IDE, cómo usar,modificar o crear componentes, y sugerencias sobre cómo realizar ciertas tareas. Esta parte de la sección de Documentación (lo que está leyendoahora mismo) representa el comienzo del proceso. Necesitamos contribuciones de cualquiera que se sienta capacitado: es muy fácil editar elWiki.

Panel de botones rápidos

Un pequeño panel de herramientas a la izquierda en la ventana principal, justo debajo del Menú Principal y a laizquierda de la Paleta de Componentes, contiene un conjunto de botones de acceso a las opciones de uso más frecuentedel menú principal:

Nueva unidad, Abrir , Recientes, Guardar , Guardar todo, Nuevo formulario, Ver formulario/unidad (F12), Ver unidades, Ver formularios ,

Ejecutar (F9) (compila, enlaza y ejecuta en modo depuración), Detener, Paso a paso por instrucciones (F7), Paso a paso porfunciones (F8) (las cuatro últimas son funciones del depurador).

La Paleta de Componentes

Una barra de herramientas con pestañas que muestra un gran número de iconos que representan los componentes más utilizados para construirformularios.

Cada pestaña hace que se muestre un conjunto diferente de iconos, que representa a un grupo funcional de componentes. El icono que está más ala izquierda en cada grupo es una flecha inclinada hacia la izquierda, llamada Herramienta de selección.

Si deja el cursor del ratón inmóvil sobre cualquier icono de la Paleta de Componentes, sin pulsar sobre el icono, aparecerá el rótulo de esecomponente. Advierta que cada rótulo empieza por 'T' - esto significa 'Tipo' o más exactamente 'Clase' de un componente. Cuando selecciona uncomponente para incluirlo en un formulario, la clase se añade a la sección tipo de la parte interface de la unidad (normalmente como parte delTForm1), y se añada una instancia de esa clase a la sección var (normalmente como la variable Form1). Cualquier Método que diseñe para que seausado por el formulario o sus componentes (por ejemplo, procedimientos o funciones) será colocado en la parte implementation de la unidad.

Cómo utilizar la paleta

Para utilizar la paleta, debe haber un formulario abierto a la vista en el editor (si no hay uno, selecciona Archivo -> Nuevo formulario). Haz clic enel icono de la pestaña correspondiente de la paleta para el componente que deseas utilizar y haz clic en el formulario, cerca de donde quieres queaparezca el componente. Cuando el componente aparezca se puede seleccionar haciendo clic en él con el ratón. Una vez seleccionado en elformulario, el objeto se encuentre seleccionado también en la ventana Inspector de Objetos, donde puedes editar sus propiedades y eventos.

Ajustes de la apariencia visual de un objeto pueden hacerse, ya sea mediante la alteración de su representación en el formulario usando el ratón, ocambiando la propiedad correspondiente en el Editor de objetos para ese componente

Si instalas componentes adicionales, ya sean los que has escrito, o los vienen en un paquete de alguna otra fuente, los iconos correspondientesaparecerán en la paleta de componentes, en una de su pestañas o en una pestaña nueva adicional. Estos nuevos componentes se pueden seleccionary utilizar en sus formularios de la misma forma que los suministrados por defecto

En la lista que sigue de los componentes, encontrarás vínculos a archivos que contienen descripciones de las unidades en que se encuentran. Si

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

11 de 20 09/06/2014 09:24 p.m.

Page 12: Lazarus Tutorial - Free Pascal Wiki

deseas obtener información sobre las propiedades de un componente en particular, a menudo merece la pena mirar en la herencia de ese componentee inspeccionar las propiedades del tipo base del que se deriva. Por ejemplo, para entender TMaskEdit también es útil examinar TCustomMaskEdit.

Pestañas de la Paleta de Componentes

Los nombres de las pestañas son bastante descriptivos de su contenido. Las imágenes y los componentes reseñados corresponden a los que vienenpor defecto con la Versión 0.9.24 de Lazarus:

* Standard (http://lazarus-ccr.sourceforge.net/docs/lcl/stdctrls/index-4.html)

(Ver Pestaña Standard para la descripción de los componentes)

Componentes utilizados con frecuencia: TMainMenu (http://lazarus-ccr.sourceforge.net/index.php?wiki=MenuUnit#TMainMenu) ,TPopupMenu (http://lazarus-ccr.sourceforge.net/index.php?wiki=MenuUnit#TPopupMenu) , TButton (http://lazarus-ccr.sourceforge.net/index.php?wiki=ButtonsTxt#TButton) , TLabel (http://lazarus-ccr.sourceforge.net/index.php?wiki=StdCtrls#TLabel) , TEdit (http://lazarus-ccr.sourceforge.net/index.php?wiki=StdCtrls#TEdit) , TMemo (http://lazarus-ccr.sourceforge.net/index.php?wiki=StdCtrls#TMemo) ,TToggleBox (http://lazarus-ccr.sourceforge.net/index.php?wiki=StdCtrls#TToggleBox) , TCheckBox (http://lazarus-ccr.sourceforge.net/index.php?wiki=StdCtrls#TCheckBox) , TRadioButton (http://lazarus-ccr.sourceforge.net/index.php?wiki=StdCtrls#TRadioButton) ,TListBox (http://lazarus-ccr.sourceforge.net/index.php?wiki=StdCtrls#TListBox) , TComboBox (http://lazarus-ccr.sourceforge.net/index.php?wiki=StdCtrls#TComboBox) , TScrollBar (http://lazarus-ccr.sourceforge.net/index.php?wiki=StdCtrls#TScrollBar) , TGroupBox(http://lazarus-ccr.sourceforge.net/index.php?wiki=StdCtrls#TGroupBox) , TStaticText (http://lazarus-ccr.sourceforge.net/index.php?wiki=StdCtrls#TStaticText) , TRadioGroup (http://lazarus-ccr.sourceforge.net/index.php?wiki=ExtCtrls#TRadioGroup) ,TCheckGroup (http://lazarus-ccr.sourceforge.net/index.php?wiki=ExtCtrls#TCheckGroup) , TPanel (http://lazarus-ccr.sourceforge.net/index.php?wiki=ExtCtrls#TPanel) , TActionList (http://lazarus-ccr.sourceforge.net/docs/lcl/actnlist/tactionlist.html)

* Additional (http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/index-4.html)

(Ver Additional tab/es para la descripción de los componentes)

Más, componentes utilizados a menudo: TBitBtn (http://lazarus-ccr.sourceforge.net/docs/lcl/buttons/tbitbtn.html) , TSpeedButton(http://lazarus-ccr.sourceforge.net/docs/lcl/buttons/tspeedbutton.html) , TStaticText (http://lazarus-ccr.sourceforge.net/docs/lcl/stdctrls/tstatictext.html) , TImage (http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/timage.html) , TShape (http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/tshape.html) , TBevel (http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/tbevel.html) , TPaintBox (http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/tpaintbox.html) , TNotebook (http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/tnotebook.html) , TLabeledEdit(http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/tlabelededit.html) , TSplitter (http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/tsplitter.html) , TTrayIcon (http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/ttrayicon.html) , TMaskEdit (http://lazarus-ccr.sourceforge.net/docs/lcl/maskedit/tmaskedit.html) , TCheckListBox (http://lazarus-ccr.sourceforge.net/docs/lcl/checklst/tchecklistbox.html) , TScrollBox(http://lazarus-ccr.sourceforge.net/docs/lcl/forms/tscrollbox.html) , TApplicationProperties (http://lazarus-ccr.sourceforge.net/docs/lcl/forms/tapplicationproperties.html) , TStringGrid (http://lazarus-ccr.sourceforge.net/docs/lcl/grids/tstringgrid.html) , TDrawGrid (http://lazarus-ccr.sourceforge.net/docs/lcl/grids/tdrawgrid.html) , TPairSplitter (http://lazarus-ccr.sourceforge.net/docs/lcl/pairsplitter/tpairsplitter.html) ,TColorBox (http://lazarus-ccr.sourceforge.net/docs/lcl/colorbox/tcolorbox.html) , TColorListBox (http://lazarus-ccr.sourceforge.net/docs/lcl/colorbox/tcolorlistbox.html) , TChart (http://lazarus-ccr.sourceforge.net/docs/lcl/chart/index.html)

* Common Controls (http://lazarus-ccr.sourceforge.net/docs/lcl/comctrls/index-4.html)

(Ver Common Controls tab/es para la descripción de los componentes)

TTrackBar (http://lazarus-ccr.sourceforge.net/docs/lcl/comctrls/ttrackbar.html) , TProgressBar (http://lazarus-ccr.sourceforge.net/docs/lcl/comctrls/tprogressbar.html) , TTreeView (http://lazarus-ccr.sourceforge.net/docs/lcl/comctrls/ttreeview.html) , TListView (http://lazarus-ccr.sourceforge.net/docs/lcl/comctrls/tlistview.html) , TStatusBar (http://lazarus-ccr.sourceforge.net/docs/lcl/comctrls/tstatusbar.html) ,TToolBar (http://lazarus-ccr.sourceforge.net/docs/lcl/comctrls/ttoolbar.html) , TUpDown (http://lazarus-ccr.sourceforge.net/docs/lcl/comctrls/tupdown.html) , TPageControl (http://lazarus-ccr.sourceforge.net/docs/lcl/comctrls/tpagecontrol.html) , TTabControl (http://lazarus-ccr.sourceforge.net/docs/lcl/comctrls/ttabcontrol.html) , THeaderControl (http://lazarus-ccr.sourceforge.net/docs/lcl/comctrls/theadercontrol.html) , TImageList (http://lazarus-ccr.sourceforge.net/docs/lcl/controls/timagelist.html) , TPopupNotifier (http://lazarus-ccr.sourceforge.net/docs/lcl/popupnotifier/index.html)

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

12 de 20 09/06/2014 09:24 p.m.

Page 13: Lazarus Tutorial - Free Pascal Wiki

* Dialogs (http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/index-4.html)

(Ver Dialogs tab/es para la descripción de los componentes)

TOpenDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/topendialog.html) , TSaveDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/tsavedialog.html) , TSelectDirectoryDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/tselectdirectorydialog.html) ,TColorDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/tcolordialog.html) , TFontDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/tfontdialog.html) , TFindDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/tfinddialog.html) , TReplaceDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/treplacedialog.html) , TOpenPictureDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/extdlgs/topenpicturedialog.html) , TSavePictureDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/extdlgs/tsavepicturedialog.html) , TCalendarDialog(http://lazarus-ccr.sourceforge.net/docs/lcl/extdlgs/tcalendardialog.html) , TCalculatorDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/extdlgs/tcalculatordialog.html) , TPrinterSetupDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/tcustomprintersetupdialog.html) ,TPrintDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/tcustomprintdialog.html) , TPageSetupDialog (http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/tcustomprintersetupdialog.html)

Algunos procedimientos y funciones útiles de Dialogos no aparecen en la Paleta, pero se pueden utilizar fácilmente mediante llamadas directasdesde tu programa fuente.

Puede ver algunos buenos ejemplos de cómo usar los componentes en la subcarpeta $LazarusPath/lazarus/examples de su instalación. Muchosprogramas muestran cómo usar diálogos y otros componentes directamente sin usar el IDE y la paleta de componentes o tienen un archivo dedefinición de formularios separado: todos los componentes están total y explícitamente definidos en el programa Pascal principal. Otros programasde ejemplo hacen un uso pleno del IDE.

Si algunos ejemplos no funcionan bien: puede que necesite modificar rutas y permisos de archivos o carpetas. Si quiere compilar algún ejemplo,compruebe que tiene permisos de lectura/escritura/ejecución para los archivos y carpetas, o copie los archivos a una carpeta donde tenga lospermisos adecuados.

Intente ejecutar el programa 'testall' para ver un menú de componentes disponibles junto con pequeños formularios ejemplo de prueba para lamayoría de ellos; después mire el código para ¡descubrir como funcionan!

* Misc

TColorButton (http://lazarus-ccr.sourceforge.net/index.php?wiki=DialogsTxt) , TSpinEdit (http://lazarus-ccr.sourceforge.net/docs/lcl/spin/tspinedit.html) , TFloatSpinEdit (http://lazarus-ccr.sourceforge.net/docs/lcl/spin/tfloatspinedit.html) , TArrow (http://lazarus-ccr.sourceforge.net/docs/lcl/arrow/tarrow.html) , TCalendar (http://lazarus-ccr.sourceforge.net/docs/lcl/calendar/tcalendar.html) , TEditButton(http://lazarus-ccr.sourceforge.net/docs/lcl/editbtn/teditbutton.html) , TFileNameEdit (http://lazarus-ccr.sourceforge.net/docs/lcl/editbtn/tfilenameedit.html) , TDirectoryEdit (http://lazarus-ccr.sourceforge.net/docs/lcl/editbtn/tdirectoryedit.html) , TDateEdit (http://lazarus-ccr.sourceforge.net/docs/lcl/editbtn/tdateedit.html) , TCalcEdit (http://lazarus-ccr.sourceforge.net/docs/lcl/editbtn/tcalcedit.html) ,TFileListBox (http://lazarus-ccr.sourceforge.net/docs/lcl/filectrl/tfilelistbox.html) , TXMLPropStorage (http://lazarus-ccr.sourceforge.net/docs/lcl/xmlpropstorage/txmlpropstorage.html) , TIniPropStorage (http://lazarus-ccr.sourceforge.net/docs/lcl/inipropstorage/tinipropstorage.html) , TBarChart (http://lazarus-ccr.sourceforge.net/docs/lcl/chart/tbarchart.html) , TButtonPanel (http://lazarus-ccr.sourceforge.net/docs/lcl/buttonpanel/tbuttonpanel.html) , TCustomShellTreeView, TIDEDialogLayoutStorage

* Data Controls (http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/index-4.html)

Componentes de datos que son como los de los grupos Standard y Additional, pero aplicables a bases de datos: TDBNavigator(http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbnavigator.html) , TDBText (http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbtext.html) , TDBEdit (http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbedit.html) , TDBMemo (http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbmemo.html) , TDBImage (http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbimage.html) , TDBListBox (http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdblistbox.html) , TDBComboBox (http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbcombobox.html) ,TDBCheckBox (http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbcheckbox.html) , TDBRadioGroup (http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbradiogroup.html) , TDBCalendar (http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbcalendar.html) , TDBGroupBox(http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/tdbgroupbox.html) , TDBGrid (http://lazarus-ccr.sourceforge.net/docs/lcl/dbgrids/tdbgrid.html)

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

13 de 20 09/06/2014 09:24 p.m.

Page 14: Lazarus Tutorial - Free Pascal Wiki

* Data Access

TDatasource, TMemDataset, TSdfDataSet, TFixedFormatDataSet, TDbf

* System

TTimer (http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/ttimer.html) , TIdleTimer (http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/tidletimer.html) , TLazComponentQueue (http://lazarus-ccr.sourceforge.net/docs/lcl/lresources/tlazcomponentqueue.html) ,THtmlHelpDatabase (http://lazarus-ccr.sourceforge.net/docs/lcl/lazhelphtml/thtmlhelpdatabase.html) , THtmlBrowserHelpViewer(http://lazarus-ccr.sourceforge.net/docs/lcl/lazhelphtml/thtmlbrowserhelpviewer.html) , TProcessUTF8 (http://lazarus-ccr.sourceforge.net/docs/lcl/asyncprocess/tprocessutf8.html) , TAsyncProcess (http://lazarus-ccr.sourceforge.net/docs/lcl/asyncprocess/tasyncprocess.html) ,TProcess, TSimpleIPCClient, TSimpleIPCServer, TXMLConfig, TEventLog

* SynEdit

TSynEdit, TSynAutoComplete, TSynExporterHTML, TSynMacroRecorder, TSynMemo, TSynPasSyn, TSynFreePascalSyn, TSynCppSyn,TSynJavaSyn, TSynPerlSyn, TSynHTMLSyn, TSynXMLSyn, TSynLFMSyn, TSynUNIXShellScriptSyn, TSynCssSyn, TSynPHPSyn,TSynTeXSyn, TSynSQLSyn, TSynPhytonSyn, TSynAnySyn, TSynMultiSyn

Un grupo de componentes para ayudar a interactuar con otros lenguajes y herramientas de software. SynEdit es un control de ediciónmultilínea avanzado, disponible también para Borland Delphi, Kylix y C++Builder. Soporta resaltado de sintaxis y terminación de código, eincluye filtros de exportación para html, tex y rtf. Son controles desarrollados enteramente con VCL/CLX , lo que significa que no son unenvoltorio para controles de M$Windows, y por tanto no precisa de ninguna librería de tiempo de ejecución; esto hace a SynEdit uncomponente de plataforma cruzada. La compatibilidad con FreePascal está también planeada, y SynEdit es el componente de edición en elIDE de Lazarus. Ver SynEdit (http://wiki.freepascal.org/SynEdit/es) .

* IPro

TIpFileDataProvider, TIpHtmlPanel

* SQLdb

TSQLQuery, TSQLTransaction, TSQLScript, TSQLConnector, TPQConnection, TOracleConnection, TODBCConnection,TMySQL40Connection, TMySQL41Connection, TSQLite3Connection, TMySQL50Connection, TIBConnection

* RTTI

TTIEdit, TTIComboBox, TTIButton, TTICheckBox, TTILabel, TTIGroupBox, TTIRadioGroup, TTICheckGroup, TTICheckListBox,TTIListBox, TTIMemo, TTICalendar, TTIImage, TTIFloatSpinEdit, TTISpinEdit, TTITrackBar, TTIProgressBar, TTIMaskEdit,TTIColorButton, TMultiPropertyLink

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

14 de 20 09/06/2014 09:24 p.m.

Page 15: Lazarus Tutorial - Free Pascal Wiki

Como utilizar los controles estándar, comunes y extendidos

Las unidades StdCtrls, ComCtrls y ExtCtrls contienen definiciones y descripciones de algunos de los controles más comunmente utilizados en lacontrucción de formularios (Forms) y otros objetos de las aplicaciones generadas con Lazarus.

Algunos de los controles finales que el desarrollador utiliza, tales como TButton, TMemo, TScrollBar etc, tienen su correspondiente clase ancestrotal como TCustomButton, TCustomMemo o TCustomScrollBar. Algunas de las propiedades y métodos relevantes para el control final se definen (yse explican) más en profundidad en la clase TCustomXXX , y son heredados por el control final.

Si se sitúa un componente en el editor de formularios no se necesita añadir código explícitamente para crearlo. El componente es creadoautomáticamente por el IDE junto con el formulario (form) e igualmente destruido al tiempo que el formulario se destruye.

De igual forma, si creas un componente por tí mismo, no debes olvidarte de liberar sus recursos cuando ya no sea necesario.

Si colocas un componente en el diseñador de formularios (Form Designer) y observas el Inspector de Objetos (Object Inspector), puedes ver comocambian las propiedades a medida que mueves el componente por el formulario.

Por ejemplo, si pones un botón (TButton) en el formulario, lo seleccionas con el ratón y lo arrastras por el formulario podrás observar como losvalores de las propiedades Top (arriba) y Left (izquierda) cambian en el Inspector de Objetos para reflejar la nueva posición. Igualmente si utilizas lasbarras de redimensionado para ajustar su tamaño, puedes observar como cambian los valores de las propiedades Height (altura) y Width (anchura).

Por otro lado, utilizando el inspector de objetos, puedes modificar el valor asociado con una determinada propiedad tal como la altura (Height) ydandole un nuevo valor (dentro del rango soportado); de esta forma puedes observar directamente como el tamaño del objeto seleccionado en elformulario (o el mismo formulario si es el seleccionado) cambia para reflejar el nuevo valor.

Puedes además cambiar explícitamente las propiedades del objeto mediante código tecleando (en la sección de implementación apropiada deleditor de código fuente), por ejemplo

Formulario1 . Boton1 . Height := 48;

Si escribes este nuevo valor en el editor de código fuente y miras de nuevo en el diseñador de formulario (Form Designer), puedes observar que elbotón en el formulario ha tomado el nuevo tamaño. El nuevo valor se mostrará también en el inspector de objetos.

En resumen, la mayor parte de las veces las propiedades de un objeto se pueden establecer de tres formas diferentes para lograr lo mismo:

Utilizando el ratón,Estableciendo los valores en el inspector de objetos,explícitamente escribiendo en el código fuente en la sección adecuada.

Nota: todo lo que se dice respecto de modificar las propiedades de los objetos mediante código, tiene efecto únicamente en tiempo de ejecución, por lo que los efectos de los valores modificados no puedenobservarse en el Inspector de Objetos.(iskraelectrica)

Los componentes definidos en estas unidades tienen varias propiedades que son comunes a la mayor parte de ellos, mientras que otras propiedadesson específicas de componentes individuales. Aquí describiremos algunos de los más comunes. Las propiedades menos usuales o específicas decontroles se describirán en la explicación de los controles individuales.

Siempre se puede obtener ayuda adicional seleccionando una propiedad o palabra, tanto en el inspector de objetos como en el editor de códigofuente, y a continuación presionando F1. Esto hará que el visor de ayuda nos presente la página adeduada que buscamos dentro de la documentacióndisponible.

Si la descripción de una propiedad en dicha página no es suficiente, se puede navegar a la correspondiente descripción en las clases ancestro,seleccionando los enlaces en el listado de herencia o seleccionando un tipo de ancestro en la declaración del objeto.

Los constructores tales como Create reservan la memoria y otros recursos del sistema que necesita el objeto. También llama a los constructores delos objetos que componen la clase.

Destructores: eliminan el objeto y liberan la memoria y los otros recursos que pudiera haber tomado. Si se llama a Destroy de un objeto quetodavía no se ha inicializado se produce un error. Siempre se debe utilizar el método Free para desalojar objetos porque comprueba cuando el valordel objeto no está establecido, es nil , antes de invocar a Destroy.

Hay que tomar las siguientes precauciones cuando alguien crea su propio método Destroy:

Declarar Destroy con la directiva override , porque es un método virtual .Llamar siempre inherited Destroy; como lo último en el código del destructor.Tener en cuenta que se puede generar una excepción (exception) por parte del constructor en el caso de que no exista suficiente memoria paracrear el objeto, o cualquier otra cosa salga mal. Si no se maneja la excepción dentro del constructor, entonces el objeto solamente se construiráparcialmente. En este caso se llamará a Destroy en el momento que no se espera, por lo que el destructor debe comprobar si los recursos

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

15 de 20 09/06/2014 09:24 p.m.

Page 16: Lazarus Tutorial - Free Pascal Wiki

fueron realmente asignados antes de liberarlos.Recuerda llamar a Free para todos los objetos del constructor.

Algunas propiedades habitualmente listadas:Propiedad Significado

ActionLa acción principal o el evento asociado con el objeto. Por ejemplo, seleccionando un botón 'Salir' debería causar la acción'Cerrar'

Align

Define la manera en la que un objeto se alinea con el objeto padre. Los posibles valores son alTop (situado arriba del todo yutilizando el máximo ancho disponible), alBottom, alLeft (situado a la izquierda y utilizando la máxima altura disonible), alRight.alNone (ubicado en cualquier sitio del objeto padre) o alClient (toma todo el espacio disponible hasta los controles cercanosalineándolo hacia arriba, abajo, izquierda y derecha)

AnchorUtilizado para mantener un control a una cierta distancia de los bordes definidos del control padre, cuando este último esredimensionado. Por ejemplo [akBottom, akRight] mantendrá el control a una distancia fija de la esquina inferior derecha.

AutoSelectCuando su valor es verdadero (True), se selecciona todo su texto en un control de edición cuando recibe el foco (es seleccionado)o cuando se presiona la tecla Enter (Intro).

AutoSelectedVerdadero (True) indica que el control edit o combobox ya han realizado una operación AutoSelect por lo que los subsecuentesclicks de ratón y pulsaciones de tecla proceden con normalidad sin seleccionar texto.

BorderSpacing El tipo y el espacio alrededor del borde entre un control anclado (Anchored) y su padre.

CaptionEl texto que es mostrado en o cerca del control; debería sugerir el tipo de función del control, o una instrucción como 'Close' o'Execute'. Por defecto Caption se establece para tener el mismo valor que la propiedad 'Name', y el programador de la aplicacióndebería sustituirlo por uno con mayor significado para la aplicación, en lugar de dejar el valor dado automáticamente.

CharCaseIndica como se muestra el texto en un control de edición: Normal (reteniendo el tipo de letra (mayúsculas/minúsculas) tecleadapor el usuario), convertido a mayúsculas (uppercase), o convertido a minúsculas (lowercase)

ConstraintsEstablecen el tamaño mínimo y máximo para un control. Si un control se redimensiona, las nuevas dimensiones estarán siemprecomprendidas dentro del rango definido aquí. Se debe tener especial cuidado cuando se establecen estas opciones para que noentren en conflicto con las configuraciones de ancho y alineado.

Color El color a usar para dibujar el control o para escribir texto que contiene.

EnabledPropiedad booleana para determinar cuando o no un control es capaz de ser seleccionado y realizar una accción. Si no seencuentra habilitado (Enabled), entonces se presenta con un color grisaceo (Grayed) fuera en el formulario.

FontFuente que se utilizará para escribir el texto asociado con el control - tampoco caption o label, o las cadenas de texto contenidasen el control. La entrada en el inspector de objetos habitualmente tiene un cuadro (+) a la izquierda, y seleccionándolo muestramás opciones tales como el juego de caracteres, color y tamaño.

HintUn trozo corto de texto informativo emergente (pop-up) que aparece si se deja el cursor del ratón sobre el control por un breveespacio de tiempo.

ItemsEl listado de cosas 'Things' que un objeto contiene, tal como un grupo de imágenes, una serie de líneas de texto, un número deacciones en un actionlist, etc

LinesUna matriz de cadenas de texto, conteniendo datos textuales en controles con más de una sola línea de datos, tal como unEdit-Box o un Combo-Box. La matriz tiene un índice con base cero, eg las líneas están numeradas [0..numLines-1]

Name

El identificador por el que el control es conocido en el programa. El IDE( Entorno Integrado de Desarrollo) le asigna un nombrepor defecto basándose en su tipo subyacente, por ejemplo, sucesivas instancias de TBitButton se deberían nombrarForm1.BitBitton1 y Form1.BitButton2; depende ya del programador de la aplicación darle un nombre con más significado talcomo ExitButton o OKButton. Por defecto el nombre del control se aplica a Caption, pero el texto de Caption puede sercambiado por separado.

PopUpMenuUna ventana conteniendo un menú de información sensitivo al contexto que emerge (pop-up) cuando se acciona el pulsadorderecho del ratón en el objeto.

Position (or Top,Left)

Determina donde se ubica el control en el formulario o ventana padre/td>

ReadOnlyPropiedad booleana que si está establecida a verdadero (True), significa que el contenido del control puede ser leido por el usuarioo la rutina llamante, pero que no puede ser escrita o cambiada.

ShowHintPermite una pequeña ventana (bocadillo) conteniendo ayuda sensible al u otra descripción que deba mostrarse cuando el cursor sesitúa sobre el objeto.

Size (or Heightand Width)

Las dimensiones del control

StyleLas opciones disponibles para estilo (Style) dependen del tipo de control que se vaya a considerar: por ejemplo el estilo puede serdefinido para TFormStyle, TBorderStyle, TButtonStyle etc.

TabOrder Entero que sirve para definir en que solapa se encuentra (dentro de un objeto) del listado total de las disponibles

TabStopPropiedad booleana que si se establece a verdadero (True)sitúa este control en la secuencia de objetos que el usuario puedealcanzar pulsando sucesivamente la tecla de tabulación (TAB)

Text

Cadena de texto que representa el dato actual que contiene el control. Se aplica particularmente a los tipos de objeto Text, Memoy StringLis. La mayor parte de las operaciones de edición (tales como Select, Clear, Cut, Copy) se realizan en esta parte delobjeto, que mantiene la cadena actual que va a ser editada. Si el control contiene más de una sola línea de texto, por ejemploTMemo o TComboBox, entonces los elementos textuales se organizan como una matriz de cadenas (con base cero, ie numeradas

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

16 de 20 09/06/2014 09:24 p.m.

Page 17: Lazarus Tutorial - Free Pascal Wiki

desde [0..numLines-1]) en Líneas.

Visible Si su valor es verdadero (True), el objeto se puede ver en el formulario; si es falso (False), el objeto permanece oculto

WordWrapFlag (bandera o señalizador) para mostrar si el desplazamiento de palabra está habilitado o no. eg si una palabra está cercana alfinal de una línea y va a ser demasiado larga para contener en ella, entonces se la emplaza abajo en la siguiente línea.

Algunas acciones se listan comunmente en la solapa 'Eventos' del inspector de objetos. Seleccionando una entrada del listado aparece unComboBox con un listado leleccionable (DropDown list)mostrando las acciones que tiene definidas, y permitiendo escoger una para asociarla a esteevento. Alternativamente se puede seleccionar la elipsis (tres puntos ...) que nos llevará a un área del editor de código fuente donde se puedeempezar a teclear nuestras propias instrucciones de acción para el evento seleccionado.

A pesar de la gran cantidad de eventos disponibles para un control dado, en la práctica lo más habitual es utilizar sólamente unos pocos de ellos.Para la mayor parte de los controles es más que suficiente el uso de 'OnClick'; para otros más complejos 'OnEntry' (cuando el cursor del ratón entraen el control y le da el foco o selección) y 'OnExit' (cuando el cursor del ratón abandona el control); o puedes necesitar escribir un gestor deenventos para 'OnChange' o 'OnScroll', dependiendo de la naturaleza de un control particular con el que se esté tratando.

El menú emergente (pop-up) que aparece cuando se hace click con el pulsador derecho del ratón en el diseñador de formularios tiene como primerelemento: 'Create default event' y seleccionando esta opción tendremos el mismo efecto que seleccionando la elipsis en el inspector de objetos parael evento por defectot, usualmente OnClick: esto nos lleva al área de implementación del editor de código fuente donde podemos escribir el códigopara el manejador del evento.

Una estrategia habitual en la programación orientada a objetos es aportar un listado de acciones (ActionList) con la facilidad de entrar, eliminar oeditar un determinado número de acciones predefinidas desde las que poder seleccionar las más apropiadas para un determinado propósito.

Algunas acciones listadas habitualmenteAcción Significado

OnChangeAcción a realizar si se detecta un cambio (eg movimiento del ratón, click de ratón, pulsación de tecla, edición de texto, cambio deuna imagen, etc)

OnClick

Acción a realizar cuando se acciona el pulsador izquierdo del ratón. Esta es habitualmente la acción principal o por defecto delcontrol; por ejemplo, accionando un pulsador en un checkbox inicia la acción asociada con el checkbox. Esto puede iniciaralternativamente un proceso de selección, por ejemplo en un TextBox o Memo, o señalizar el comienzo de dibujo con un lápiz(Pen) o brocha (Brush).

Click

Un método para emular mediante código el efecto de accionar en un control. Este método se encuentra frecuentemente encontroles del tipo Button(TButton, TBitBtn, TSpeedButton etc). Se puede escribir un procedimiento que llame el mismo código quela acción OnClick. Esta facilidad puede ser particularmente útil si la activación del control por accionamiento produce una cascadade activación de otros controles, y el método Click se puede utilizar para iniciar la acción, en lugar de que el usuario tenga quehacer click explícitamente en gran cantidad de controles.

OnDragDropAcción a realizar durante un Drag-Drop manoeuvres, ie cuando el ratón se utiliza para capturar 'capture' un elemento o algún textoetc y lo mueve hacia alguna alguna ubicación nueva en la pantalla.

OnEditingDoneAcción a realizar cuando el usuario ha terminado todas las ediciones / modificaciones al control. Esto a menudo se utiliza paravalidar el contenido del control (por ejemplo, comprobar si un texto escrito es una dirección IP válida)

OnEntryAcción a realizar cuando el cursor del ratón entra en el área ocupada por el objeto, usualmente transfiriendo el foco al objeto. Estopuede incluir cambios en el aspecto del objeto tales como luminosidad o la aparición de un borde emergente.

OnExit Acción a realizar cuando el ratón se mueve fuera del área del objeto, habitualmente transfiriendo el foco fuera del objeto.

OnKeyPressAcción a realizar ante la pulsación de cualquier tecla. Sutilmente diferente de OnKeyDown, la cual cual simplemente responde auna tecla, independientemente de si ya estaba pulsada cuando se obtuvo el foco por parte del control. OnKeyPress requiere queuna tecla sea pulsada mientras el control tiene el foco.

OnKeyDownAcción a realizar si se pulsa una tecla mientras el control tiene el foco. Sutilmente diferente de OnKeyPress - por ejemplo la tecladebe haberse presionado con el foco ya obtenido por el control, mientras que OnKeyPress requiere que la tecla sea pulsadamientras el foco está en el control.

On Key Up Acción a realizar si la tecla no está pulsada (eg no presionada) mientras el control tiene el foco.

OnMouseMove On Mouse Down - Acción a ser realizada si el cursor del ratón se mueve mientras el control tiene el foco.

OnMouseDown Acción a realizar si el pulsador del ratón está accionado mientras el control mantiene el foco (está seleccionado).

OnMouseUpAcción a realizar si el pulsador del ratón no está presionado mientras el cursor está sobre el control. Implica que el pulsador delratón fué previamente accionado y posteriormente soltado. El caso en el que el cursor entra en el control, pero el pulsador del ratónno ha sido todavía presionado es tratado por OnEntry o OnMouseEnter.

OnResizeAcción a realizar cuando el control es redimensionado. Puede requerir realineación del texto o selección de un tipo de tamaño defuente diferente etc.

Cómo utilizar menús en nuestros programas

El componente de tipo TMainMenu es responsable de crear el menú principal que aparece en la parte superior de muchos formularios; losdiseñadores pueden personalizarlo eligiendo itens para el menú. El componente de tipo TPopupMenu creará un menú en una ventana emergente, conopciones pertinentes según el contexto, normalmente aparece al pulsar el botón derecho del ratón sobre cierto control.

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

17 de 20 09/06/2014 09:24 p.m.

Page 18: Lazarus Tutorial - Free Pascal Wiki

TMainMenu es un componente invisible: el icono que representa al componente no aparece en tiempo de ejecución, lo que aparece es el menú quehemos definido mendiante el Editor de Menú. Lo mismo sucede con los componentes TPopupMenu que insertemos en nuestros formularios.

Para acceder al (Editor de Menú (http://wiki.lazarus.freepascal.org/Image:IDE_Editor_Menu.png) ) hacemos doble clic sobre el icono delcomponente en el formulario; aprecerá una ventana donde podremos definir los elementos que compondrán el menú. Al aparecer por primera vez laventana muestra un botón rotulado New Item1. Si pulsamo el botón derecho mientras lo señalamos con el ratón se mostrará el menú contextual conlas opciones posibles que podemos ralizar: añadir un nuevo elemento (después o antes), borrar el elemento, crear un submenú, y otras.

Las propiedades del elemento seleccionado, como su etiqueta, nombre o comportamiento, pueden ser editadas en el Inspector de Objetos.

Lo mínimo que debemos cambiar es el rótulo (propiedad Caption) que mostrará el elemento en el menú, para que se identifique la acción que serealiza con con la opción del menú ("Abrir archivo", "Salir", etc.).

Si queremos asociar cierta letra del rótulo como un atajo de teclado hay que preceder la misma con un símbolo &. Así, &Archivo se verá alejecutar el programa como Archivo. Al pulsar esa letra (A, en este ejemplo) junto con Alt activará la opción correspondiente del menú. Tambiénpodemos asignar una combinación de teclas como atajo (normalmente para opciones de submenú), tales cómo Ctrl + C para copiar o Ctrl + V

para pegar, mediante la propiedad ShortCut del elemento.

Es provechoso utilizar los controles de menú en el conjucción con un ActionList que contenga una serie de acciones (Actions) estándar opersonalizadas. Los items de menú se pueden enlazar en el Inspector de Objetos a las acciones en la lista, y estas mismas acciones se pueden enlazara Botones, Barras de Botones (ToolBar Buttons), Botonés rápidos (SpeedButtons), etc.Economizaremos esfuerzos al reutilizar el mismo código pararesponder a varios acontecimientos, en vez de escribir código para el evento OnClick de cada control individual.

De forma predeterminada ciertas acciones normales se cargan en StdActns o, si son controles de Datos (DataAware) en DBActns y estas se puedenseleccionar mediante el editor de ActionList que aparece al hacer bole clic sobre el icono del componente en el formulario.

El Depurador

Todavía está por escribir?. esta linea se deja por respeto al autor(a)

solucion depurador

En version 0.9.26 menú 'Entorno'->'Options ...' -> 'Debugger' elegir 'GNU debugger (gdb)' y buscar ubicación (en ubuntu /debian es '/usr/bin/gdb').

Nota1: gdb (sin extensión), es el archivo ejecutable linux del depurador.

Los archivos de Lazarus

(Gracias a Kevin Whitefoot.) (Añadidos de Giuseppe Ridinò, Usuario:Kirkpatc y Tom Lisjac)

Al guardar se graban dos archivos:

xxx . pas yyy . lpr

(Se guardan más, pero estos son a los únicos que tiene que poner nombre). El archivo proyecto (lpr) y el archivo unidad (pas) no deben tener elmismo nombre porque amablemente Lazarus renombrará la unidad (dentro del código fuente) con el mismo que el del archivo unidad y el programacon el mismo del archivo proyecto (es necesario hacer esto, porque si no el compilador probablemente no sea capaz de encontrar la unidad, mástarde, cuando se refiera a ella en el archivo proyecto). Claro, para ser coherente cambia siempre unit1 por xxx.

Así que si guarda un proyecto llamado again, si intenta guardar again.pas y again.lpr obtendrá fallos, porque los nombres de la unidad y elprograma son iguales, con lo que se produce un error de duplicación de nombre. A continuación, lo que obtuve:

e :/ lazarus / kj / lazhello : total 4740 free 76500 - rwxrwxrwx 1 kjwh root 4618697 Mar 24 11 : 19 again . exe - rw - rw - rw - 1 kjwh root 3002 Mar 24 11 : 21 again . lpi - rw - rw - rw - 1 kjwh root 190 Mar 24 11 : 18 again . lpr - rw - rw - rw - 1 kjwh root 506 Mar 24 11 : 08 againu . lfm - rw - rw - rw - 1 kjwh root 679 Mar 24 11 : 08 againu . lrs - rw - rw - rw - 1 kjwh root 677 Mar 24 11 : 08 againu . pas - rw - rw - rw - 1 kjwh root 2124 Mar 24 11 : 08 againu . ppu - rwxrwxrwx 1 kjwh root 335 Mar 24 11 : 07 ppas . bat

Observe que hay más de los dos archivos que pensé que estaba guardando.

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

18 de 20 09/06/2014 09:24 p.m.

Page 19: Lazarus Tutorial - Free Pascal Wiki

A continuación, una breve nota sobre cada archivo:

again.exe: El programa principal ejecutable binario. Win32 añade una extensión "exe". En Linux no tiene ninguna. Este archivo será enorme enLinux debido a la inclusión de símbolos de depuración. Ejecute la utilidad 'strip' para borrarlos y disminuir bastante el tamaño del ejecutable.

again.lpi: Este es el archivo principal del proyecto Lazarus (Lazarus Project Information); el archivo principal de una aplicación equivalente enDelphi será .dpr. Se almacena en formato XML.

again.lpr: El archivo fuente del programa principal. A pesar de su extensión específica de Lazarus es en realidad un archivo fuente totalmentenormal de Pascal. Tiene una cláusula de usos que permite al compilador encontrar las unidades que necesita. Nótese que la declaración del programano tiene que ponerle el mismo nombre al programa que al archivo.

againu.lfm: Aquí es donde Lazarus almacena el diseño del formulario. Lazarus utiliza esto para generar un archivo fuente que está incluido en lasección de inicio de la unidad againu.pas unit. Los archivos de Delphi dfm se pueden convertir a formato lfm format en el IDE de Lazarus medianteHerramientas->Convertir archivo DFM A LFM.

again.lrs: Este es el archivo fuente generado. Adviértase que no es un archivo fuente de Windows.

againu.pas: La unidad que contiene el código del formulario.

again.ppu: La unidad compilada.

ppas.bat: Un script sencillo que enlaza el programa para crear el ejecutable: Si la compilación tiene éxito, lo borra el compilador.

Herramientas del IDE de Lazarus

Colaboradores iniciales y cambios

Esta página se ha importado desde el epiwiki version (http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusTutorial) .

Created initial page and template. T. Lisjac - 11/04/2003 VlxAdminInserted a note containing instructions for writing your first Lazarus Program. Suggest an administrator places it in the appropriate place on theTutorial menu. 3/09/2004 User:KirkpatcPer above, moved Chris's writeup to the main body of the tutorial VlxAdminBegan to insert text describing the Lazarus Editor - more to follow! 24 Mar 2004 User:KirkpatcAdded some more to Lazarus Editor section of Tutorial. 25 Mar 2004 User:KirkpatcAdded screenshots and revised some of the page formatting VlxAdmin 3/25/2004Moved some of kwhitefoot's comments into Tutorial section. Formatting not quite right, but have to go to bed now! 26 Mar 2004User:KirkpatcFormatted, added credits and comments. Removed original notes. VlxAdmin 3/26/2004More material added to Editor section of tutorial. 26 Mar 2004 User:KirkpatcMore material added describing the Main Menu. Renamed 'Hello World' to 'Getting Started' and moved it to nearer the top. 31 March 2004User:KirkpatcInserted section on Run sub-menu. Some general editing (eg ended each entry with a period to ensure consistency). 9 Apr 2004 User:KirkpatcInserted a new section on How to get started with MySQL in FPC/Lazarus. 13 Apr 2004 User:KirkpatcDeleted the section on MySQL from here: it has been copied to Lazarus Database section of tutorial. 14 Apr 2004 User:KirkpatcAdded some more to the description of the Editor Main Menu. 18 Apr 2004 User:KirkpatcAdded section on Environment sub-menu. 19 Apr 2004 User:KirkpatcAdded section on Components sub-menu. 4 May 2004 User:KirkpatcAdding Tools sub-menu description (incomplete). 7 May 2004 User:KirkpatcAdded some screenshots to Menu descriptions. 9 May 2004 User:KirkpatcFixed a bit in Environment Options - thanks VincentSnijders. 14 May 2004 User:KirkpatcMore additions to Tools sub-menu. 19 May 2004 User:KirkpatcAdded a section on the Button Bar and started work on The Component Palette. 20 May 2004 User:KirkpatcPosted a description file for the StdCtrls unit of the LCL, in the hope that people will add comments. 26 May 2004 User:KirkpatcEdited the StdCtrls file, removing a lot of repetitive material and doing some formatting. It is still far too long. 28 May 2004 User:KirkpatcExpanding on the Components Palette. 5 June 2004 User:KirkpatcAdded a lot to the DialogExamples page. 10 June 2004 User:KirkpatcConsiderable revision of the StdCtrls page, hopefully making it clearer and encouraging people to contribute - particularly in the 'Description'sections. 14 June 2004 User:KirkpatcAdded pages for Menus and Dialogs units (linked to Component Palette description) - please feel free to add to these pages. 14 June 2004User:KirkpatcAdded page for Common Controls (linked to Component Palette). 16 June 2004 User:KirkpatcAdded MaskEdit page (linked to Component Palette). 17 June 2004 User:KirkpatcAdded Buttons, ExtCtrls pages (linked to Component Palette). 17 June 2004 User:KirkpatcEdited MainMenu component description page. 23 June 2004 User:KirkpatcSome additions to Common Controls. 28 June 2004 User:KirkpatcA new tutorial on Text-mode Pascal programming has been added. 5 July 2004 User:Kirkpatc

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

19 de 20 09/06/2014 09:24 p.m.

Page 20: Lazarus Tutorial - Free Pascal Wiki

Minor changes to ComCtrls, ExtCtrls, Environment Menu. 10 July User:KirkpatcAdded FormsTxt, component description page for Component Palette. 20 July 2004 User:KirkpatcSome corrections to ConsoleModePascal. 21 July 2004 User:KirkpatcSome small changes to ComponentPalette. 22 July 2004 User:KirkpatcSome edits and additions to the Lazarus Component section. 23th Jan 2009 User: MiyatakeIlustración gráfica (casi) completa y actualizada a la versión 0.9.26.2 de Lazarus. 17 junio 2009. User:Iskraelectrica

Retrieved from "http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&oldid=73579"Categories: CastellanoEspañol Tutorials/es

This page was last modified on 19 October 2013, at 17:57.Content is available under .

Lazarus Tutorial/es - Free Pascal wiki http://wiki.freepascal.org/index.php?title=Lazarus_Tutorial/es&printable=yes

20 de 20 09/06/2014 09:24 p.m.