Sign in Join
Wiki copytemporary

Lazarus Tutorial/es: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-*Estos son los primeros pasos de una tutoría de Lazarus. Por favor, añade aquí tus experiencias.*
1+```text
2+
3+```
24
5+   *Estos son los primeros pasos de una tutoría de Lazarus. Por favor, añade aquí tus experiencias.*
6+
37## Resumen
48
59   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 en sistemas 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.
610
711## ¡Tú primer programa con Lazarus!
812
913Quizá 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.
1014
1115### Comenzando
1216
1317   Descarga, instala ([[Installing Lazarus/es|Instalación de Lazarus]]), con lo que también instalarás el compilador FreePascal y ejecuta Lazarus.
1418
1519   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ú Aplicaciones / Programación.
1620
1721   En Debian y Ubuntu el archivo ejecutable principal y el paquete se denominan "lazarus-ide" porque el paquete "tct" ya viene con una utilidad llamada "Lazarus".
1822
1923   Aparecerán varias ventanas en el escritorio: el menú principal arriba, el Inspector de Objetos a la izquierda, el Editor de Código Fuente ocupando la mayor parte del escritorio, y un formulario *Form1*, preparado sobre el Editor de Código fuente.
2024
2125   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ónala pulsando 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 ventana *Form1*, en alguna parte de la misma. Aparecerá un rectángulo sombreado etiquetado *Button1*. Selecciona de nuevo el icono *Button* en la pestaña estándar, y pulsa sobre *Form1* en otra parte del formulario: aparecerá otro rectángulo etiquetado *Button2*.
2226
2327   Ahora selecciona el botón *Button1* con el ratón. El Inspector de Objetos mostrará las propiedades del objeto *Button1*. Entre las primeras hay una propiedad llamada 'Caption', que muestra el valor 'Button1'. Entra en la casilla, y cambia 'Button1' por 'Pulsa'. Si pulsó la tecla *INTRO* o cambió a otra 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 los eventos de que dispone el botón. Éstos son, por ejemplo, *OnClick*, *OnEnter*, *OnExit*, etc. Selecciona la casilla que hay a la derecha de *OnClick*: la casilla se transforma en desplegable y también aparece un botón con unos puntos suspensivos. Al pulsar este, aparecerá el cursor en el Editor de Código Fuente dentro ya de la plantilla del procedimiento del evento:
2428
2529``` pascal
2630 procedure TForm1.Button1Click(Sender: TObject);
2731 begin
2832 {ahora escribe:} Button1.caption := 'Pulsa otra vez';
2933 {el editor siempre termina el procedimiento con}
3034 end;
3135```
3236
3337   Si pulsas `F12` aparecerá la ventana del formulario, al pulsar otra vez F12 volverás al Editor de Código.
3438
3539   Ahora edita las propiedades de *Button2*: pulsa sobre Button2 para mostrar sus propiedades en el Inspector de Objetos. Cambia su propiedad *Caption* 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:
3640
3741``` pascal
3842 procedure TForm1.Button2Click(Sender: TObject);
3943 begin
4044 {ahora escriba:} Close;
4145 {el editor siempre termina el procedimiento con}
4246 end;
4347```
4448
4549   Pulsa `F12` para ver la ventana *Form1*.
4650
4751   Es conveniente guardar ahora tu trabajo, seleccionando 'Proyecto \> Guardar proyecto' (que al no haber guardado nuúnca funciona exactamente igual 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 de compilar las últimas modificaciones. Es importante guardar por tu cuenta los estados 'estables' del proyecto.
4852
4953   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.
5054
5155   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.
5256
5357   Pulsa el botón etiquetado 'Pulsa'. Verás que cambia a 'Pulsa otra vez'. Si lo pulsas otra vez, seguirá diciendo ¡¡'Pulse otra vez'!!
5458
5559   Ahora hazlo con el botón marcado 'Cerrar'. La ventana se cierra, terminando la ejecución del programa. Retornamos a Lazarus, con el formulario *form1* para poder continuar el proceso de edición del mismo y del código asociado.
5660
5761### Segunda sesión
5862
5963   Reabre el proyecto guardado antes, si es que los has cerrado.
6064
6165   Selecciona *Button1* del *Form1* En la ventana *Form1*.
6266
6367   Selecciona la pestaña 'Eventos' en el Inspector de Objetos, Selecciona la casilla de *OnClick*, pulsa sobre los puntos suspensivos, para situarte el punto apropiado en el Editor de Código Fuente.
6468
6569   Edita el código para poner lo siguiente:
6670
6771``` pascal
6872 procedure TForm1.Button1Click(Sender: TObject);
6973 {Utilizaremos la propiedad Tag del botón, asignándole el valor 0 o 1}
7074 begin
7175 if Button1.tag =0 then
7276 begin
7377 Button1.caption := 'Pulsa otra vez';
7478 Button1.tag := 1
7579 end
7680 else
7781 begin
7882 Button1.caption := 'Pulsa';
7983 Button1.tag := 0
8084 end
8185 end;
8286```
8387
8488   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!
8589
8690   Si prefieres escribir programas en PASCAL para consola o basados en texto (por ejemplo si está siguiendo un curso de programación en PASCAL bá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 [[Console Mode Pascal/es|PASCAL en modo consola]].
8791
8892## El Entorno integrado de desarrollo (IDE) de Lazarus
8993
9094   Al ejecutar por primera vez Lazarus aparecen en el escritorio varias ventanas desconectadas separadas o 'flotantes'.
9195
9296### Ventana principal
9397
9498   La primera, en la parte superior derecha del escritorio, con el rótulo **Editor vXX.XX.XX de Lazarus - project1** (que posteriormente reflejará el nombre que pongas al proyecto). Ésta es la ventana principal que controla tu proyecto, y contiene el Menú Principal, la Paleta de Componentes y el panel de Botones Rápidos.
9599
96100![](/wiki-images/0/04/Lazarus_principal.png)
97101
98102   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, y con 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 del Menú Principal, y a la derecha está la Paleta de Componentes.
99103
100104### Otras ventanas del IDE
101105
102106   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 la derecha.
103107
104108![](/wiki-images/0/05/Lazarus_Inspector_de_Objetos.png)
105109
106110![](/wiki-images/b/b2/Lazarus_Editor_Codigo_Fuente.png)
107111
108112Puede 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 vista del 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, mientras que 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 se describe con detalle más adelante, junto con la Paleta de Componentes.
109113
110114   Cuando comience un nuevo proyecto (o cuando ejecute Lazarus por primera vez) se construirá un formulario predefinido, que se compone de una caja en la que hay una rejilla de puntos para ayudarle a colocar los diversos componentes del formulario, y una
111115
112116![](/wiki-images/e/e7/Lazarus_Inspector_del_Proyecto.png)
113117
114118barra a lo largo de la parte superior que contiene los botones habituales **Minimizar**, **Maximizar** y **Cerrar**. 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 lado izquierdo del escritorio.
115119
116120   Otras ventanas que pueden llegar a ser visibles durante su trabajo: **Inspector del Proyecto**, que contiene los detalles de los archivos incluidos en su proyecto, y permite que agregar archivos o eliminar archivos de su proyecto; la ventana **Mensajes**, que muestra mensajes del compilador, errores o informes sobre el progreso de su proyecto; si Lazarus fuese ejecutado desde una ventana de terminal, el terminal original seguiría siendo visible y los mensajes detallados del compilador también se mostrarían allí.    Por último, también puede ver una ventana de mensajes en la parte inferior de la pantalla: ésta es utilizada por Lazarus para mostrar los resultados al programador, por ejemplo, al compilar un programa.
117121
118122### El Menú Principal
119123
120124   La línea del menú principal contiene las siguientes entradas: Archivo Editar Buscar Ver Proyecto Ejecutar Componentes (Paquete en la versión 0.9.26.2) Herramientas Entorno Ventanas Ayuda
121125
122126   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 para completar un ciclo del foco a través de varias ventanas hasta que la ventana deseada tenga su barra de título resaltada).
123127
124128   Para obtener más detalles, consulte [[Main menu/es]].
125129
126130### Panel de botones rápidos
127131
128132![](/wiki-images/c/c4/Lazarus_Botones_Rapidos.png)
129133
130134   Un pequeño panel de herramientas a la izquierda en la ventana principal, justo debajo del Menú Principal y a la izquierda de la Paleta de Componentes, contiene un conjunto de botones de acceso a las opciones de uso más frecuente del menú principal:
131135
132136
133137**![](/wiki-images/d/d5/Lazarus_Boton_Rapido_Nueva_Unidad.png) Nueva unidad**, **![](/wiki-images/a/a5/Lazarus_Boton_Rapido_Abrir.png) Abrir**, **![](/wiki-images/d/d9/Lazarus_Boton_Rapido_Recientes.png) Recientes**, **![](/wiki-images/2/21/Lazarus_Boton_Rapido_Guardar.png) Guardar**, **![](/wiki-images/1/15/Lazarus_Boton_Rapido_Guardar_Todo.png) Guardar todo**, **![](/wiki-images/8/80/Lazarus_Boton_Rapido_Nuevo_Formulario.png) Nuevo formulario**,
134138
135139**![](/wiki-images/5/52/Lazarus_Boton_Rapido_Ver_Form_o_Unidad.png) Ver formulario/unidad (F12)**, **![](/wiki-images/4/42/Lazarus_Boton_Rapido_Ver_Unidades.png) Ver unidades**, **![](/wiki-images/c/c7/Lazarus_Boton_Rapido_Ver_Formularios.png) Ver formularios**,
136140
137141**![](/wiki-images/2/21/Lazarus_Boton_Rapido_Ejecutar.png) Ejecutar (F9)** (compila, enlaza y ejecuta en modo depuración), **![](/wiki-images/5/53/Lazarus_Boton_Rapido_Detener.png) Detener**, **![](/wiki-images/6/69/Lazarus_Boton_Rapido_Paso_F7.png) Paso a paso por instrucciones (F7)**, **![](/wiki-images/8/85/Lazarus_Boton_Rapido_Paso_F8.png) Paso a paso por funciones (F8)** (las cuatro últimas son funciones del depurador).
138142
139143## La Paleta de Componentes
140144
141145   Una barra de herramientas con pestañas que muestra un gran número de iconos que representan los componentes más utilizados para construir formularios.
142146
143147   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 a la izquierda en cada grupo es una flecha inclinada hacia la izquierda, llamada Herramienta de selección.
144148
145149   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 ese componente. Advierta que cada rótulo empieza por 'T' - esto significa 'Tipo' o más exactamente 'Clase' de un componente. Cuando selecciona un componente 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 del TForm1), 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 sea usado por el formulario o sus componentes (por ejemplo, procedimientos o funciones) será colocado en la parte **implementation** de la unidad.
146150
147151### Cómo utilizar la paleta
148152
149153   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 en el 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 que aparezca el componente. Cuando el componente aparezca se puede seleccionar haciendo clic en él con el ratón. Una vez seleccionado en el formulario, el objeto se encuentre seleccionado también en la ventana Inspector de Objetos, donde puedes editar sus propiedades y eventos.
150154
151155   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, o cambiando la propiedad correspondiente en el Editor de objetos para ese componente
152156
153157   Si instalas componentes adicionales, ya sean los que has escrito, o los vienen en un paquete de alguna otra fuente, los iconos correspondientes aparecerán en la paleta de componentes, en una de su pestañas o en una pestaña nueva adicional. Estos nuevos componentes se pueden seleccionar y utilizar en sus formularios de la misma forma que los suministrados por defecto
154158
155159   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 deseas obtener información sobre las propiedades de un componente en particular, a menudo merece la pena mirar en la herencia de ese componente e inspeccionar las propiedades del tipo base del que se deriva. Por ejemplo, para entender TMaskEdit también es útil examinar TCustomMaskEdit.
156160
157161### Pestañas de la Paleta de Componentes
158162
159163   Los nombres de las pestañas son bastante descriptivos de su contenido. Las imágenes y los componentes reseñados corresponden a los que vienen por defecto con la Versión 0.9.24 de Lazarus:
160164
161165#### * [Standard](http://lazarus-ccr.sourceforge.net/docs/lcl/stdctrls/index-4.html)
162166
163167(Ver [[Standard tab/es|Pestaña Standard]] para la descripción de los componentes)
164168
165169![](/wiki-images/f/f5/Lazarus_Paleta_Standard.png)
166170
167171
168172*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)
169173
170174#### * [Additional](http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/index-4.html)
171175
172176(Ver [[Additional tab/es]] para la descripción de los componentes)
173177
174178![](/wiki-images/2/23/Lazarus_Paleta_Adicional.png)
175179
176180
177181*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)
178182
179183#### * [Common Controls](http://lazarus-ccr.sourceforge.net/docs/lcl/comctrls/index-4.html)
180184
181185(Ver [[Common Controls tab/es]] para la descripción de los componentes)
182186
183187![](/wiki-images/8/89/Lazarus_Paleta_Comunes.png)
184188
185189
186190[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)
187191
188192#### * [Dialogs](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/index-4.html)
189193
190194(Ver [[Dialogs tab/es]] para la descripción de los componentes)
191195
192196![](/wiki-images/7/77/Lazarus_Paleta_Dialogos.png)
193197
194198
195199[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)
196200
197201   Algunos procedimientos y funciones útiles de **[[Dialog Examples/es|Dialogos]]** no aparecen en la Paleta, pero se pueden utilizar fácilmente mediante llamadas directas desde tu programa fuente.
198202
199203   Puede ver algunos buenos ejemplos de cómo usar los componentes en la subcarpeta \$LazarusPath/lazarus/examples de su instalación. Muchos programas muestran cómo usar diálogos y otros componentes directamente sin usar el IDE y la paleta de componentes o tienen un archivo de definición de formularios separado: todos los componentes están total y explícitamente definidos en el programa Pascal principal. Otros programas de ejemplo hacen un uso pleno del IDE.
200204
201205   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 los permisos adecuados.
202206
203207   Intente ejecutar el programa 'testall' para ver un menú de componentes disponibles junto con pequeños formularios ejemplo de prueba para la mayoría de ellos; después mire el código para ¡descubrir como funcionan!
204208
205209#### * **Misc**
206210
207211![](/wiki-images/6/67/Lazarus_Paleta_Misc.png)
208212
209213
210214[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), [[doc:lcl/shellctrls/tcustomshelltreeview.html|TCustomShellTreeView]], TIDEDialogLayoutStorage
211215
212216#### * [Data Controls](http://lazarus-ccr.sourceforge.net/docs/lcl/dbctrls/index-4.html)
213217
214218![](/wiki-images/d/d0/Lazarus_Paleta_Controles_Datos.png)
215219
216220
217221*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)
218222
219223#### * [[Data Access]]
220224
221225![](/wiki-images/5/54/Lazarus_Paleta_Acceso_Datos.png)
222226
223227
224228TDatasource, TMemDataset, TSdfDataSet, TFixedFormatDataSet, TDbf
225229
226230#### * [[System]]
227231
228232![](/wiki-images/4/46/Lazarus_Paleta_Sistema.png)
229233
230234
231235[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), [[doc:fcl/process/tprocess.html|TProcess]], [[doc:fcl/simpleipc/tsimpleipcclient.html|TSimpleIPCClient]], [[doc:fcl/simpleipc/tsimpleipcserver.html|TSimpleIPCServer]], [[doc:lcl/xmlpropstorage/txmlconfigstorage.html|TXMLConfig]], [[doc:fcl/eventlog/teventlog.html|TEventLog]]
232236
233237#### * [[SynEdit]]
234238
235239![](/wiki-images/a/aa/Lazarus_Paleta_SynEdit.png)
236240
237241
238242TSynEdit, TSynAutoComplete, TSynExporterHTML, TSynMacroRecorder, TSynMemo, TSynPasSyn, TSynFreePascalSyn, TSynCppSyn, TSynJavaSyn, TSynPerlSyn, TSynHTMLSyn, TSynXMLSyn, TSynLFMSyn, TSynUNIXShellScriptSyn, TSynCssSyn, TSynPHPSyn, TSynTeXSyn, TSynSQLSyn, TSynPhytonSyn, TSynAnySyn, TSynMultiSyn
239243
240244
241245   *Un grupo de componentes para ayudar a interactuar con otros lenguajes y herramientas de software. SynEdit es un control de edición multilínea avanzado, disponible también para Borland Delphi, Kylix y C++Builder. Soporta resaltado de sintaxis y terminación de código, e incluye filtros de exportación para html, tex y rtf. Son controles desarrollados enteramente con VCL/CLX , lo que significa que no son un envoltorio para controles de M\$Windows, y por tanto no precisa de ninguna librería de tiempo de ejecución; esto hace a SynEdit un componente de plataforma cruzada. La compatibilidad con FreePascal está también planeada, y SynEdit es el componente de edición en el IDE de Lazarus.* Ver [SynEdit](http://wiki.freepascal.org/SynEdit/es).
242246
243247#### * **IPro**
244248
245249![](/wiki-images/e/ee/Lazarus_Paleta_IPro.png)
246250
247251
248252TIpFileDataProvider, TIpHtmlPanel
249253
250254#### * **SQLdb**
251255
252256![](/wiki-images/2/25/Lazarus_Paleta_SQLdb.png)
253257
254258
255259TSQLQuery, TSQLTransaction, TSQLScript, TSQLConnector, TPQConnection, TOracleConnection, TODBCConnection, TMySQL40Connection, TMySQL41Connection, TSQLite3Connection, TMySQL50Connection, TIBConnection
256260
257261#### * **RTTI**
258262
259263![](/wiki-images/3/3f/Lazarus_Paleta_RTTI.png)
260264
261265
262266TTIEdit, TTIComboBox, TTIButton, TTICheckBox, TTILabel, TTIGroupBox, TTIRadioGroup, TTICheckGroup, TTICheckListBox, TTIListBox, TTIMemo, TTICalendar, TTIImage, TTIFloatSpinEdit, TTISpinEdit, TTITrackBar, TTIProgressBar, TTIMaskEdit, TTIColorButton, TMultiPropertyLink
263267
264268## Como utilizar los controles estándar, comunes y extendidos
265269
266270   Las unidades *StdCtrls*, *ComCtrls* y *ExtCtrls* contienen definiciones y descripciones de algunos de los controles más comunmente utilizados en la contrucción de formularios (Forms) y otros objetos de las aplicaciones generadas con Lazarus.
267271
268272   Algunos de los controles finales que el desarrollador utiliza, tales como *TButton*, *TMemo*, *TScrollBar* etc, tienen su correspondiente clase ancestro tal como *TCustomButton*, *TCustomMemo* o *TCustomScrollBar*. Algunas de las propiedades y métodos relevantes para el control final se definen (y se explican) más en profundidad en la clase *TCustomXXX* , y son **heredados** por el control final.
269273
270274   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 creado automáticamente por el IDE junto con el formulario (form) e igualmente destruido al tiempo que el formulario se destruye.
271275
272276   De igual forma, si creas un componente por tí mismo, no debes olvidarte de liberar sus recursos cuando ya no sea necesario.
273277
274278   Si colocas un componente en el diseñador de formularios (Form Designer) y observas el Inspector de Objetos (Object Inspector), puedes ver como cambian las propiedades a medida que mueves el componente por el formulario.
275279
276280   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 los valores de las propiedades *Top* (arriba) y *Left* (izquierda) cambian en el Inspector de Objetos para reflejar la nueva posición. Igualmente si utilizas las barras de redimensionado para ajustar su tamaño, puedes observar como cambian los valores de las propiedades *Height* (altura) y *Width* (anchura).
277281
278282   Por otro lado, utilizando el inspector de objetos, puedes modificar el valor asociado con una determinada propiedad tal como la altura (*Height*) y dandole un nuevo valor (dentro del rango soportado); de esta forma puedes observar directamente como el tamaño del objeto seleccionado en el formulario (o el mismo formulario si es el seleccionado) cambia para reflejar el nuevo valor.
279283
280284   Puedes además cambiar explícitamente las propiedades del objeto mediante código tecleando (**en la sección de implementación apropiada** del editor de código fuente), por ejemplo
281285
282286``` pascal
283287 Formulario1.Boton1.Height := 48;
284288```
285289
286290   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 el botón en el formulario ha tomado el nuevo tamaño. El nuevo valor se mostrará también en el inspector de objetos.
287291
288292   En resumen, la mayor parte de las veces las propiedades de un objeto se pueden establecer de tres formas diferentes para lograr lo mismo:
289293
290294- Utilizando el ratón,
291295- Estableciendo los valores en el inspector de objetos,
292296- explícitamente escribiendo en el código fuente en la sección adecuada.
293297
294298> **Note:**    **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)
295299
296300   Los componentes definidos en estas unidades tienen varias propiedades que son comunes a la mayor parte de ellos, mientras que otras propiedades son específicas de componentes individuales. Aquí describiremos algunos de los más comunes. Las propiedades menos usuales o específicas de controles se describirán en la explicación de los controles individuales.
297301
298302   Siempre se puede obtener ayuda adicional seleccionando una propiedad o palabra, tanto en el inspector de objetos como en el editor de código fuente, 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ón disponible.
299303
300304   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.
301305
302306   Los **constructores** tales como ***Create*** reservan la memoria y otros recursos del sistema que necesita el objeto. También llama a los constructores de los objetos que componen la clase.
303307
304308   **Destructores:** eliminan el objeto y liberan la memoria y los otros recursos que pudiera haber tomado. Si se llama a ***Destroy*** de un objeto que todavía no se ha inicializado se produce un error. Siempre se debe utilizar el método *Free* para desalojar objetos porque comprueba cuando el valor del objeto no está establecido, es **nil**, antes de invocar a *Destroy*.
305309
306310   Hay que tomar las siguientes precauciones cuando alguien crea su propio método *Destroy*:
307311
308312- Declarar *Destroy* con la directiva **override** , porque es un método **virtual**.
309313- Llamar siempre **inherited Destroy;** como lo último en el código del destructor.
310314- Tener en cuenta que se puede generar una excepción (*exception*) por parte del *constructor* en el caso de que no exista suficiente memoria para crear 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 fueron realmente asignados antes de liberarlos.
311315- Recuerda llamar a *Free* para todos los objetos del constructor.
312316
313-**Algunas propiedades habitualmente listadas:**
317+```text
318+ <caption>Algunas propiedades habitualmente listadas:</caption>
319+```
314320
315321**Propiedad**
316322
317323**Significado**
318324
319325Action
320326
321327La acción principal o el evento asociado con el objeto. Por ejemplo, seleccionando un botón 'Salir' debería causar la acción 'Cerrar'
322328
323329Align
324330
325331Define la manera en la que un objeto se alinea con el objeto padre. Los posibles valores son alTop (situado arriba del todo y utilizando 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 cercanos alineándolo hacia arriba, abajo, izquierda y derecha)
326332
327333Anchor
328334
329335Utilizado para mantener un control a una cierta distancia de los bordes definidos del control padre, cuando este último es redimensionado. Por ejemplo **\[akBottom, akRight\]** mantendrá el control a una distancia fija de la esquina inferior derecha.
330336
331337AutoSelect
332338
333339Cuando 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).
334340
335341AutoSelected
336342
337343Verdadero (True) indica que el control edit o combobox ya han realizado una operación AutoSelect por lo que los subsecuentes clicks de ratón y pulsaciones de tecla proceden con normalidad sin seleccionar texto.
338344
339345BorderSpacing
340346
341347El tipo y el espacio alrededor del borde entre un control anclado (*Anchored*) y su padre.
342348
343349Caption
344350
345351El 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ón debería sustituirlo por uno con mayor significado para la aplicación, en lugar de dejar el valor dado automáticamente.
346352
347353CharCase
348354
349355Indica como se muestra el texto en un control de edición: Normal (reteniendo el tipo de letra (mayúsculas/minúsculas) tecleada por el usuario), convertido a mayúsculas (uppercase), o convertido a minúsculas (lowercase)
350356
351357Constraints
352358
353359Establecen el tamaño mínimo y máximo para un control. Si un control se redimensiona, las nuevas dimensiones estarán siempre comprendidas dentro del rango definido aquí. Se debe tener especial cuidado cuando se establecen estas opciones para que no entren en conflicto con las configuraciones de ancho y alineado.
354360
355361Color
356362
357363El color a usar para dibujar el control o para escribir texto que contiene.
358364
359365Enabled
360366
361367Propiedad booleana para determinar cuando o no un control es capaz de ser seleccionado y realizar una accción. Si no se encuentra habilitado *(Enabled)*, entonces se presenta con un color grisaceo **(Grayed)** fuera en el formulario.
362368
363369Font
364370
365371Fuente que se utilizará para escribir el texto asociado con el control - tampoco caption o label, o las cadenas de texto contenidas en el control. La entrada en el inspector de objetos habitualmente tiene un cuadro (+) a la izquierda, y seleccionándolo muestra más opciones tales como el juego de caracteres, color y tamaño.
366372
367373Hint
368374
369375Un trozo corto de texto informativo emergente (pop-up) que aparece si se deja el cursor del ratón sobre el control por un breve espacio de tiempo.
370376
371377Items
372378
373379El 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 de acciones en un actionlist, etc
374380
375381Lines
376382
377383Una matriz de cadenas de texto, conteniendo datos textuales en controles con más de una sola línea de datos, tal como un Edit-Box o un Combo-Box. La matriz tiene un índice con base cero, eg las líneas están numeradas \[0..numLines-1\]
378384
379385Name
380386
381387El identificador por el que el control es conocido en el programa. El IDE( Entorno Integrado de Desarrollo) le asigna un nombre por defecto basándose en su tipo subyacente, por ejemplo, sucesivas instancias de TBitButton se deberían nombrar Form1.BitBitton1 y Form1.BitButton2; depende ya del programador de la aplicación darle un nombre con más significado tal como ExitButton o OKButton. Por defecto el nombre del control se aplica a Caption, pero el texto de Caption puede ser cambiado por separado.
382388
383389PopUpMenu
384390
385391Una ventana conteniendo un menú de información sensitivo al contexto que emerge (pop-up) cuando se acciona el pulsador derecho del ratón en el objeto.
386392
387393Position (or Top, Left)
388394
389395Determina donde se ubica el control en el formulario o ventana padre/td\>
390396
391397ReadOnly
392398
393399Propiedad booleana que si está establecida a verdadero (True), significa que el contenido del control puede ser leido por el usuario o la rutina llamante, pero que no puede ser escrita o cambiada.
394400
395401ShowHint
396402
397403Permite una pequeña ventana (bocadillo) conteniendo ayuda sensible al u otra descripción que deba mostrarse cuando el cursor se sitúa sobre el objeto.
398404
399405Size (or Height and Width)
400406
401407Las dimensiones del control
402408
403409Style
404410
405411Las opciones disponibles para estilo (Style) dependen del tipo de control que se vaya a considerar: por ejemplo el estilo puede ser definido para TFormStyle, TBorderStyle, TButtonStyle etc.
406412
407413TabOrder
408414
409415Entero que sirve para definir en que solapa se encuentra (dentro de un objeto) del listado total de las disponibles
410416
411417TabStop
412418
413419Propiedad booleana que si se establece a verdadero (True)sitúa este control en la secuencia de objetos que el usuario puede alcanzar pulsando sucesivamente la tecla de tabulación (TAB)
414420
415421Text
416422
417423Cadena de texto que representa el dato actual que contiene el control. Se aplica particularmente a los tipos de objeto Text, Memo y StringLis. La mayor parte de las operaciones de edición (tales como *Select*, *Clear*, *Cut*, *Copy*) se realizan en esta parte del objeto, que mantiene la cadena actual que va a ser editada. Si el control contiene más de una sola línea de texto, por ejemplo *TMemo* o *TComboBox*, entonces los elementos textuales se organizan como una matriz de cadenas (con base cero, ie numeradas desde \[0..numLines-1\]) en *Líneas*.
418424
419425Visible
420426
421427Si su valor es verdadero (True), el objeto se puede ver en el formulario; si es falso (False), el objeto permanece oculto
422428
423429WordWrap
424430
425431Flag (bandera o señalizador) para mostrar si el desplazamiento de palabra está habilitado o no. eg si una palabra está cercana al final de una línea y va a ser demasiado larga para contener en ella, entonces se la emplaza abajo en la siguiente línea.
426432
427433   Algunas acciones se listan comunmente en la solapa 'Eventos' del inspector de objetos. Seleccionando una entrada del listado aparece un ComboBox con un listado leleccionable (DropDown list)mostrando las acciones que tiene definidas, y permitiendo escoger una para asociarla a este evento. Alternativamente se puede seleccionar la elipsis (tres puntos ...) que nos llevará a un área del editor de código fuente donde se puede empezar a teclear nuestras propias instrucciones de acción para el evento seleccionado.
428434
429435   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 entra en 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 de enventos para 'OnChange' o 'OnScroll', dependiendo de la naturaleza de un control particular con el que se esté tratando.
430436
431437   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 primer elemento: 'Create default event' y seleccionando esta opción tendremos el mismo efecto que seleccionando la elipsis en el inspector de objetos para el evento por defectot, usualmente OnClick: esto nos lleva al área de implementación del editor de código fuente donde podemos escribir el código para el manejador del evento.
432438
433439   Una estrategia habitual en la programación orientada a objetos es aportar un listado de acciones *(ActionList)* con la facilidad de entrar, eliminar o editar un determinado número de acciones predefinidas desde las que poder seleccionar las más apropiadas para un determinado propósito.\
434440
435-**Algunas acciones listadas habitualmente**
441+```text
442+ <caption>Algunas acciones listadas habitualmente</caption>
443+```
436444
437445**Acción**
438446
439447**Significado**
440448
441449OnChange
442450
443451Acció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 de una imagen, etc)
444452
445453OnClick
446454
447455Acción a realizar cuando se acciona el pulsador izquierdo del ratón. Esta es habitualmente la acción principal o por defecto del control; por ejemplo, accionando un pulsador en un checkbox inicia la acción asociada con el checkbox. Esto puede iniciar alternativamente 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).
448456
449457Click
450458
451459Un método para emular mediante código el efecto de accionar en un control. Este método se encuentra frecuentemente en controles del tipo Button(TButton, TBitBtn, TSpeedButton etc). Se puede escribir un procedimiento que llame el mismo código que la acción OnClick. Esta facilidad puede ser particularmente útil si la activación del control por accionamiento produce una cascada de 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 que hacer click explícitamente en gran cantidad de controles.
452460
453461OnDragDrop
454462
455463Acción a realizar durante un Drag-Drop manoeuvres, ie cuando el ratón se utiliza para capturar 'capture' un elemento o algún texto etc y lo mueve hacia alguna alguna ubicación nueva en la pantalla.
456464
457465OnEditingDone
458466
459467Acción a realizar cuando el usuario ha terminado todas las ediciones / modificaciones al control. Esto a menudo se utiliza para validar el contenido del control (por ejemplo, comprobar si un texto escrito es una dirección IP válida)
460468
461469OnEntry
462470
463471Acción a realizar cuando el cursor del ratón entra en el área ocupada por el objeto, usualmente transfiriendo el foco al objeto. Esto puede incluir cambios en el aspecto del objeto tales como luminosidad o la aparición de un borde emergente.
464472
465473OnExit
466474
467475Acción a realizar cuando el ratón se mueve fuera del área del objeto, habitualmente transfiriendo el foco fuera del objeto.
468476
469477OnKeyPress
470478
471479Acción a realizar ante la pulsación de cualquier tecla. Sutilmente diferente de OnKeyDown, la cual cual simplemente responde a una tecla, independientemente de si ya estaba pulsada cuando se obtuvo el foco por parte del control. OnKeyPress requiere que una tecla sea pulsada mientras el control tiene el foco.
472480
473481OnKeyDown
474482
475483Acción a realizar si se pulsa una tecla mientras el control tiene el foco. Sutilmente diferente de OnKeyPress - por ejemplo la tecla debe haberse presionado con el foco ya obtenido por el control, mientras que OnKeyPress requiere que la tecla sea pulsada mientras el foco está en el control.
476484
477485On Key Up
478486
479487Acción a realizar si la tecla no está pulsada (eg no presionada) mientras el control tiene el foco.
480488
481489OnMouseMove
482490
483491On Mouse Down - Acción a ser realizada si el cursor del ratón se mueve mientras el control tiene el foco.
484492
485493OnMouseDown
486494
487495Acción a realizar si el pulsador del ratón está accionado mientras el control mantiene el foco (está seleccionado).
488496
489497OnMouseUp
490498
491499Acción a realizar si el pulsador del ratón no está presionado mientras el cursor está sobre el control. Implica que el pulsador del ratón fué previamente accionado y posteriormente soltado. El caso en el que el cursor entra en el control, pero el pulsador del ratón no ha sido todavía presionado es tratado por OnEntry o OnMouseEnter.
492500
493501OnResize
494502
495503Acción a realizar cuando el control es redimensionado. Puede requerir realineación del texto o selección de un tipo de tamaño de fuente diferente etc.
496504
497505## Cómo utilizar menús en nuestros programas
498506
499507   El componente de tipo *TMainMenu* es responsable de crear el menú principal que aparece en la parte superior de muchos formularios; los diseñadores pueden personalizarlo eligiendo itens para el menú. El componente de tipo *TPopupMenu* creará un menú en una ventana emergente, con opciones pertinentes según el contexto, normalmente aparece al pulsar el botón derecho del ratón sobre cierto control.
500508
501509   TMainMenu es un componente *invisible*: el icono que representa al componente no aparece en tiempo de ejecución, lo que aparece es el menú que hemos definido mendiante el Editor de Menú. Lo mismo sucede con los componentes TPopupMenu que insertemos en nuestros formularios.
502510
503511   Para acceder al ([Editor de Menú](http://wiki.lazarus.freepascal.org/Image:IDE_Editor_Menu.png)) hacemos doble clic sobre el icono del componente en el formulario; aprecerá una ventana donde podremos definir los elementos que compondrán el menú. Al aparecer por primera vez la ventana 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 con las opciones posibles que podemos ralizar: añadir un nuevo elemento (después o antes), borrar el elemento, crear un submenú, y otras.
504512
505513   Las propiedades del elemento seleccionado, como su etiqueta, nombre o comportamiento, pueden ser editadas en el Inspector de Objetos.
506514
507515   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 se realiza con con la opción del menú ("Abrir archivo", "Salir", etc.).
508516
509517   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á al ejecutar el programa como Archivo. Al pulsar esa letra (A, en este ejemplo) junto con Alt activará la opción correspondiente del menú. También podemos 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.
510518
511519   Es provechoso utilizar los controles de menú en el conjucción con un *ActionList* que contenga una serie de acciones (*Actions*) estándar o personalizadas. Los items de menú se pueden enlazar en el Inspector de Objetos a las acciones en la lista, y estas mismas acciones se pueden enlazar a Botones, Barras de Botones (*ToolBar Buttons*), Botonés rápidos (*SpeedButtons*), etc.Economizaremos esfuerzos al reutilizar el mismo código para responder a varios acontecimientos, en vez de escribir código para el evento *OnClick* de cada control individual.
512520
513521   De forma predeterminada ciertas acciones normales se cargan en *StdActns* o, si son controles de Datos (*DataAware*) en *DBActns* y estas se pueden seleccionar mediante el editor de *ActionList* que aparece al hacer bole clic sobre el icono del componente en el formulario.
514522
515523## El Depurador
516524
517525
518526*Todavía está por escribir?*. esta linea se deja por respeto al autor(a)
519527
520528[[solucion depurador]]
521529
522530
523531En version 0.9.26 menú 'Entorno'-\>'Options ...' -\> 'Debugger' elegir 'GNU debugger (gdb)' y buscar ubicación (en ubuntu /debian es '/usr/bin/gdb').
524532
525533   Nota1: gdb (sin extensión), es el archivo ejecutable linux del depurador.
526534
527535## Los archivos de Lazarus
528536
529-`   (Gracias a Kevin Whitefoot.)`\
530-`   (Añadidos de Giuseppe Ridinò, `Usuario:Kirkpatc` y Tom Lisjac)`
537+```text
538+ (Gracias a Kevin Whitefoot.)
539+ (Añadidos de Giuseppe Ridinò, Usuario:Kirkpatc y Tom Lisjac)
540+```
531541
532542   Al guardar se graban dos archivos:
533543
534544``` pascal
535545 xxx.pas
536546 yyy.lpr
537547```
538548
539549   (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 el mismo nombre porque amablemente Lazarus renombrará la unidad (dentro del código fuente) con el mismo que el del archivo unidad y el programa con el mismo del archivo proyecto (es necesario hacer esto, porque si no el compilador probablemente no sea capaz de encontrar la unidad, más tarde, cuando se refiera a ella en el archivo proyecto). Claro, para ser coherente cambia siempre unit1 por xxx.
540550
541551   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 el programa son iguales, con lo que se produce un error de duplicación de nombre.    A continuación, lo que obtuve:
542552
543553``` pascal
544554 e:/lazarus/kj/lazhello:
545555 total 4740 free 76500
546556 -rwxrwxrwx 1 kjwh root 4618697 Mar 24 11:19 again.exe
547557 -rw-rw-rw- 1 kjwh root 3002 Mar 24 11:21 again.lpi
548558 -rw-rw-rw- 1 kjwh root 190 Mar 24 11:18 again.lpr
549559 -rw-rw-rw- 1 kjwh root 506 Mar 24 11:08 againu.lfm
550560 -rw-rw-rw- 1 kjwh root 679 Mar 24 11:08 againu.lrs
551561 -rw-rw-rw- 1 kjwh root 677 Mar 24 11:08 againu.pas
552562 -rw-rw-rw- 1 kjwh root 2124 Mar 24 11:08 againu.ppu
553563 -rwxrwxrwx 1 kjwh root 335 Mar 24 11:07 ppas.bat
554564```
555565
556566   Observe que hay más de los dos archivos que pensé que estaba guardando.
557567
558568   A continuación, una breve nota sobre cada archivo:
559569
560570   **again.exe:** El programa principal ejecutable binario. Win32 añade una extensión "exe". En Linux no tiene ninguna. Este archivo será enorme en Linux 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.
561571
562572   **again.lpi:** Este es el archivo principal del proyecto Lazarus (Lazarus Project Information); el archivo principal de una aplicación equivalente en Delphi será .dpr. Se almacena en formato XML.
563573
564574   **again.lpr:** El archivo fuente del programa principal. A pesar de su extensión específica de Lazarus es en realidad un archivo fuente totalmente normal de Pascal. Tiene una cláusula de usos que permite al compilador encontrar las unidades que necesita. Nótese que la declaración del programa no tiene que ponerle el mismo nombre al programa que al archivo.
565575
566576   **againu.lfm:** Aquí es donde Lazarus almacena el diseño del formulario. Lazarus utiliza esto para generar un archivo fuente que está incluido en la secció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 mediante Herramientas-\>Convertir archivo DFM A LFM.
567577
568578   **again.lrs:** Este es el archivo fuente generado. Adviértase que no es un archivo fuente de Windows.
569579
570580   **againu.pas:** La unidad que contiene el código del formulario.
571581
572582   **again.ppu:** La unidad compilada.
573583
574584   **ppas.bat:** Un script sencillo que enlaza el programa para crear el ejecutable: Si la compilación tiene éxito, lo borra el compilador.
575585
576586### [[Lazarus IDE Tools/es|Herramientas del IDE de Lazarus]]
577587
578588## Colaboradores iniciales y cambios
579589
580590   Esta página se ha importado desde el epiwiki [version](http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusTutorial).
581591
582592- Created initial page and template. T. Lisjac - 11/04/2003 VlxAdmin
583593- Inserted a note containing instructions for writing your first Lazarus Program. Suggest an administrator places it in the appropriate place on the Tutorial menu. 3/09/2004 User:Kirkpatc
584594- Per above, moved Chris's writeup to the main body of the tutorial VlxAdmin
585595- Began to insert text describing the Lazarus Editor - more to follow! 24 Mar 2004 User:Kirkpatc
586596- Added some more to Lazarus Editor section of Tutorial. 25 Mar 2004 User:Kirkpatc
587597- Added screenshots and revised some of the page formatting VlxAdmin 3/25/2004
588598- Moved some of kwhitefoot's comments into Tutorial section. Formatting not quite right, but have to go to bed now! 26 Mar 2004 User:Kirkpatc
589599- Formatted, added credits and comments. Removed original notes. VlxAdmin 3/26/2004
590600- More material added to Editor section of tutorial. 26 Mar 2004 User:Kirkpatc
591601- More material added describing the Main Menu. Renamed 'Hello World' to 'Getting Started' and moved it to nearer the top. 31 March 2004 User:Kirkpatc
592602- Inserted section on Run sub-menu. Some general editing (eg ended each entry with a period to ensure consistency). 9 Apr 2004 User:Kirkpatc
593603- Inserted a new section on How to get started with MySQL in FPC/Lazarus. 13 Apr 2004 User:Kirkpatc
594604- Deleted the section on MySQL from here: it has been copied to Lazarus Database section of tutorial. 14 Apr 2004 User:Kirkpatc
595605- Added some more to the description of the Editor Main Menu. 18 Apr 2004 User:Kirkpatc
596606- Added section on Environment sub-menu. 19 Apr 2004 User:Kirkpatc
597607- Added section on Components sub-menu. 4 May 2004 User:Kirkpatc
598608- Adding Tools sub-menu description (incomplete). 7 May 2004 User:Kirkpatc
599609- Added some screenshots to Menu descriptions. 9 May 2004 User:Kirkpatc
600610- Fixed a bit in Environment Options - thanks VincentSnijders. 14 May 2004 User:Kirkpatc
601611- More additions to Tools sub-menu. 19 May 2004 User:Kirkpatc
602612- Added a section on the Button Bar and started work on The Component Palette. 20 May 2004 User:Kirkpatc
603613- Posted a description file for the StdCtrls unit of the LCL, in the hope that people will add comments. 26 May 2004 User:Kirkpatc
604614- Edited the StdCtrls file, removing a lot of repetitive material and doing some formatting. It is still far too long. 28 May 2004 User:Kirkpatc
605615- Expanding on the Components Palette. 5 June 2004 User:Kirkpatc
606616- Added a lot to the DialogExamples page. 10 June 2004 User:Kirkpatc
607617- Considerable revision of the StdCtrls page, hopefully making it clearer and encouraging people to contribute - particularly in the 'Description' sections. 14 June 2004 User:Kirkpatc
608618- Added pages for Menus and Dialogs units (linked to Component Palette description) - please feel free to add to these pages. 14 June 2004 User:Kirkpatc
609619- Added page for Common Controls (linked to Component Palette). 16 June 2004 User:Kirkpatc
610620- Added MaskEdit page (linked to Component Palette). 17 June 2004 User:Kirkpatc
611621- Added Buttons, ExtCtrls pages (linked to Component Palette). 17 June 2004 User:Kirkpatc
612622- Edited MainMenu component description page. 23 June 2004 User:Kirkpatc
613623- Some additions to Common Controls. 28 June 2004 User:Kirkpatc
614624- A new tutorial on Text-mode Pascal programming has been added. 5 July 2004 User:Kirkpatc
615625- Minor changes to ComCtrls, ExtCtrls, Environment Menu. 10 July User:Kirkpatc
616626- Added FormsTxt, component description page for Component Palette. 20 July 2004 User:Kirkpatc
617627- Some corrections to ConsoleModePascal. 21 July 2004 User:Kirkpatc
618628- Some small changes to ComponentPalette. 22 July 2004 User:Kirkpatc
619629- Some edits and additions to the Lazarus Component section. 23th Jan 2009 User: Miyatake
620630- Ilustración gráfica (casi) completa y actualizada a la versión 0.9.26.2 de Lazarus. 17 junio 2009. User:Iskraelectrica
621631
622632---
623633*From the Free Pascal wiki, page "Lazarus Tutorial/es", as it stood on 2021-12-08 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history