Sign in Join
Wiki copytemporary

Dialog Examples/es: what changed

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

OldNewLine
11# Algunos diálogos útiles
22
33   Aquí tenemos algunos diálogos útiles, que no aparecen en la Paleta de Componentes:
44
55- procedimiento [ShowMessage (const Msg: string);](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/showmessage.html)
66- función [MessageBox (Text, Caption : PChar; Flags: Word): Integer;](http://lazarus-ccr.sourceforge.net/docs/lcl/forms/tapplication.messagebox.html)
77- función [MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/messagedlg.html)
88- función [InputBox (const ACaption, APrompt, ADefault: string); string;](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputbox.html)
99- función [InputQuery (const ACaption, APrompt: string; var Value: string): Boolean;](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputquery.html)
1010- función [PasswordBox(const ACaption, APrompt : String): String;](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/passwordbox.html)
1111
1212   Cada uno de ellos da lugar a la aparición de una ventana emergente, que contiene cierta información y espera una respuesta del usuario: presionar un botón, introducir algún texto o ambas cosaa. Los programadores tienen poco control sobre el formato, tamaño o posición de estas ventanas, pero pueden cambiar su contenido textual.\
1313   La razón de que haya varias alternativas es permitir diferentes métodos de crear la ventana y de recibir datos de respuesta para procesar en nuestro código.
1414
1515## Diálogos con mensaje
1616
1717   Las ventanas de diálogo con mensaje muestran un mensaje y esperan que se salga de ellos mediante la pulsación de unos de los botones que muestran, o cerrando la ventana con cualquier otra opción disponible.
1818
1919### [ShowMessage](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/showmessage.html)
2020
2121``` pascal
2222 Procedure ShowMessage (const Msg: string);
2323{el procedimiento está definido en la unidad ''Dialogs.pp''}
2424```
2525
2626   Es la ventana de diálogo más simple: recibe una cadena como parámetro, y la muestra en una ventana predefinida, con un botón (OK o Aceptar) y un icono de Información. El diálogo se muestra hasta que se cierra con alguna de las opciones posibles: pulsar el único botón o el aspa de la barra de título.\
2727  La ventana del diálogo es modal, es decir, se muestra, toma el foco y no permite interacción con la aplicación que la originó.
2828
2929Ejemplo:
3030
3131``` pascal
3232 Program UnMensajeConLazarus;
3333 Uses Dialogs;
3434 var mi_mensaje: string;
3535 begin
3636 mi_mensaje:= 'Este es un texto que se extiende a lo largo de'#13'de dos líneas';
3737 ShowMessage (mi_mensaje);
3838 end.
3939```
4040
4141   (nota: cómo se puede ver en el ejemplo el *const* de la definición del procedimiento significa que no es necesaria una variable, aunque se puede utilizar una variable si lo queremos. Así mismo vemos que los mensajes los podemos dividir en las líneas que deseemos mediante *\#13*, *sLineBreak* o *LineEnding*, esto lo podemos usar en todos los cuadros de los que hablamos aquí)
4242
43-<center>
44-
45-<figure>
46-<img src="Lazarus_ShowMessage.png" title="Lazarus_ShowMessage.png" />
47-<figcaption>Lazarus_ShowMessage.png</figcaption>
48-</figure>
49-
50-</center>
43+![](/wiki-images/9/9b/Lazarus_ShowMessage.png)
5144
5245### [MessageBox](http://lazarus-ccr.sourceforge.net/docs/lcl/forms/tapplication.messagebox.html)
5346
5447``` pascal
5548 Function Application.MessageBox (Mensaje, Titulo: PChar; Marcadores: longint) : Integer;
5649```
5750
5851   Función definida en ***Forms.pp*** como parte de *TApplication*, de ahí que tengamos que usarla de esta forma: Application.Messagebox ( ); o bien utilizando la construcción 'With Application do ...'\].
5952
6053   Sus parámetros:
6154
6255- Mensaje: El texto del mensaje que queremos mostrar al usuario;
6356- Titulo: El título de la ventana del cuadro de diálogo;
6457- Marcadores: Un entero construido al sumar varias constantes (definidas en el módulo LCLType) que definen el icono y botones que mostrará el cuadro, por ejemplo *MB_ABORTRETRYIGNORE + MB_ICONQUESTION* hará que se muestre un signo de interrogación (?) y tres botones: Abortar, Reintentar e Ignorar.
6558
6659   La función devuelve un valor entero que corresponde al botón que se presionó; su valor se puede determinar por referencia a las constantes \[IDOK..IDHELP\]
6760
6861  Si no necesitamos el valor del botón pulsado la podemos invocar cómo un procedimiento, en Pascal no es obligatorio recoger el valor devuelto por una función - véase el ejemplo siguiente:
6962
7063   Ejemplo:
7164
7265``` pascal
7366 Uses Forms, Dialogs, LCLType;
7467
7568 Procedure MuestraMessageBox;
7669 var resp, estilo: integer;
7770 texto: pchar;
7871 begin
7972 with application do
8073 begin
8174 estilo := MB_ABORTRETRYIGNORE + MB_ICONQUESTION;
8275 resp := MessageBox ('Pulsa un botón', 'Ejemplo de MessageBox', estilo); //recogemos el valor de la función
8376 case resp of
8477 IDABORT: texto := 'Abortar';
8578 IDRETRY: texto := 'Reintentar';
8679 IDIGNORE: texto := 'Ignorar';
8780 else texto := 'Has cerrado el cuadro con el aspa: ';
8881 end; //case
8982 MessageBox (texto, 'Respuesta', MB_ICONHAND); // no recogemos el valor devuelto por MessageBox
9083 end; //with
9184 end; //procedmiento
9285```
9386
94-<center>
95-
9687![](/wiki-images/1/1a/Lazarus_MessageBox.png) ![](/wiki-images/6/67/Lazarus_MessageBoxRespuesta.png) <http://lazarus-ccr.sourceforge.net/kbdata/MessageBoxDemo.png> <http://lazarus-ccr.sourceforge.net/kbdata/ReplyYes.png>
9788
98-</center>
99-
10089### [MessageDlg](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/messagedlg.html)
10190
10291``` pascal
10392function MessageDlg(const aMsg:String; DlgType:TMsgDlgType; Buttons:TMsgDlgButtons; HelpCtx:LongInt):Integer;
10493function MessageDlg(const aCaption:String; const aMsg:String; DlgType:TMsgDlgType;
10594 Buttons:TMsgDlgButtons; HelpCtx:longInt):Integer;
10695function MessageDlg(const aCaption:String; const aMsg:String; DlgType:TMsgDlgType;
10796 Buttons:TMsgDlgButtons; HelpCtx:LongInt; DefaultButton:TMsgDlgBtn):Integer;
10897function MessageDlg(const aCaption:String; const aMsg:String; DlgType:TMsgDlgType;
10998 Buttons:TMsgDlgButtons; const HelpKeyword: String):Integer;
11099```
111100
112101
113102Ver [Tipos de mensaje(TMsgDlgType)](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/tmsgdlgtype.html), [Botones(TMsgDlgButtons)](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/tmsgdlgbuttons.html) [Botones(TMsgDlgBtn)](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/tmsgdlgbtn.html) Las dos clase de botones definen exactamente lo mismo¿¡!?)
114103
115104   Hay cuatro versiones de esta función, en la primera al omitir el título, se pondrá cómo título el identificador de la aplicación; en las demás podemos poner como título de la ventana el texto que nos convenga. En la tercera podemos especificar mediante el parámetro *DefaultButton* qué botón será el activo por defecto. En la cuarta podemos mostrar la ayuda especificada en *HelpKeyword*.
116105
117106   Es el más completo y elaborado de las ventanas de diálogo, y permite al programador un considerable control sobre su aspecto.
118107
119108   Los parámetros que definen el tipo de cuadro y el icono es un tipo enumerado, y los botones se pueden especificar como un conjunto entre corchetes, por ejemplo \[mbRetry, mbIgnore, mbAbort, mbCancel\].
120109
121110   *HelpCtx* se utiliza para especificar qué tema del archivo de ayuda debe ser demostrado, o cero para no mostrar nínguno. Si se utiliza HelpKeyword se mostrará la ayuda de esa palabra.
122111
123112   El valor devuelto por la función corresponde al botón presionado, expresado como un entero (ver más edelante las definiciones de \[mrNone..mrAll\]).
124113
125114
126115Ejemplo:
127116
128117``` pascal
129118 Uses forms, dialogs, lcltype, controls;
130119
131120 procedure EstoSiQueEsUnMensaje;
132121 var tipo: TMsgDlgType;
133122 botones: TMsgDlgButtons;
134123 begin
135124 tipo := mtWarning;
136125 botones:= [mbYesToAll, mbNoToAll];
137126 MessageDlg ('Cosas para no olvidar', 'las personas son las que dan sentido,'#13+
138127 'coherencia y lógica a las cosas', tipo, botones,0);
139128 end;
140129```
141130
142-<center>
143-
144131<http://lazarus-ccr.sourceforge.net/kbdata/Question.png>\
145132
146133![`Lazarus_MessageDlg.png`](/wiki-images/8/81/Lazarus_MessageDlg.png)
147134
148-</center>
149-
150135### El diálogo **'QuestionDlg**'
151136
152137   El diálogo **'QuestionDlg**' permite cambiar los rótulos de los botones y determinar los botones predetermindo y de cancelar.    Ejemplo:
153138
154139``` pascal
155140 case QuestionDlg ('Este es el Título','Este es el Mensaje',mtCustom,[mrYes,'Positivo', mrNo, 'Negativo', mrCancel,'Predetermindado'],'La ayuda') of
156141 mrYes: QuestionDlg ('Este es el Título','Has elegido "Positivo"',mtCustom,[mrOK,'¡Muy bien!'],'');
157142 mrNo: QuestionDlg ('Este es el Título','¡Oh! has elegido "Negativo"',mtCustom,[mrOK,'Exacto'],'');
158143 mrCancel: QuestionDlg ('Título','Has cancelado el diálogo con ESC o el botón "Predetermindado".',mtCustom,[mrOK,'Correcto'],'');
159144 end;
160145```
161146
162-<center>
163-
164-<figure>
165-<img src="QuestionDlg_es_linux_qt.png‎" title="QuestionDlg_es_linux_qt.png‎" />
166-<figcaption>QuestionDlg_es_linux_qt.png‎</figcaption>
167-</figure>
168-
169-</center>
147+![](/wiki-images/4/41/QuestionDlg_es_linux_qt.png%E2%80%8E)
170148
171149   Ejemplos avanzados con botones (tomados de promptdialog.inc)
172150
173151``` pascal
174152 [mrOk, '¡Vale!',mrCancel,'Cancela Ahora',mrIgnore, 'Ignorar',300,'¡Hazlo!','IsDefault']
175153```
176154
177155   Se muestran cuatro botones:
178156
179157- '¡Vale' que devuelve *mrOk*
180158- 'Cancela Ahora' que devuelve *mrCancel*
181159- 'Ignorar' que devuelve *mrIgnore*
182160- '¡Hazlo!' que devuelve *300*. Este es el botón predeterminado (con el foco)
183161
184162   Es habitual que los botones en los diálogos de Lazarus tengan iconos. Con el fin de evitar que los iconos se muestren, se pueden utilizar valores no normalizados como resultado de los mensajes. El valor normalizado má alto hasta hoy es 11. Por ejemplo:
185163
186164``` pascal
187165 case QuestionDlg ('Este es el Título','Este es el Mensaje',mtCustom,[20,'Positivo', 21, 'Negativo',22,'No lo sé','IsDefault'],'') of
188166 20: QuestionDlg ('Este es el Título','Has dicho „Sí“',mtCustom,[20,'Eso está bien'],'');
189167 21: QuestionDlg ('Este es el Título','¡Oh, has dicho „No“',mtCustom,[21,'Correcto'],'');
190168 22: QuestionDlg ('Este es el Título','¡Entonces, averigüalo!',mtCustom,[22,'Tal vez'],'');
191169 end;
192170```
193171
194172   Con el fin de facilitar el trabajo, definiremos constantes. Por ejemplo:
195173
196174``` pascal
197175const
198176 mrNoneNI= 20;
199177 mrOkNI= mrNoneNI+1;
200178 mrCancelNI= mrNoneNI+2;
201179 mrAbortNI= mrNoneNI+3;
202180 mrRetryNI= mrNoneNI+4;
203181 mrIgnoreNI= mrNoneNI+5;
204182 mrYesNI= mrNoneNI+6;
205183 mrNoNI= mrNoneNI+7;
206184 mrAllNI= mrNoneNI+8;
207185 mrYesToAllNI= mrNoneNI+10;
208186 mrCloseNI= mrNoneNI+11;
209187 mrLastNI= mrCloseNI;
210188begin
211189 case QuestionDlg ('Este es el Título','Este es el Mensaje',mtCustom,[mrYesN,'Positivo', mrNoNI, 'Negativo',22,'No lo sé','IsDefault'],'') of
212190 20: QuestionDlg ('Este es el Título','Has dicho „Sí“',mtCustom,[mrYesNI,'Eso está bien'],'');
213191 21: QuestionDlg ('Este es el Título','¡Oh, has dicho „No“',mtCustom,[mrNoNI,'Correcto'],'');
214192 22: QuestionDlg ('Este es el Título','¡Entonces, averigüalo!',mtCustom,[mrCancelNI,'Tal vez'],'');
215193 end;//case
216194end;
217195```
218196
219-<center>
220-
221-<figure>
222-<img src="QuestionDlg_esp_002.png" title="QuestionDlg_esp_002.png" />
223-<figcaption>QuestionDlg_esp_002.png</figcaption>
224-</figure>
225-
226-</center>
197+![](/wiki-images/4/47/QuestionDlg_esp_002.png)
227198
228199## Diálogos de entrada de texto
229200
230201### [InputBox](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputbox.html)
231202
232203   Junto con el mensaje muestra una caja de edición para que el usuario pueda escribir un texto que será pasado a la aplicación.
233204
234205``` pascal
235206 Function InputBox(const ATitulo, ACursor, ADefecto : String) : String;
236207```
237208
238209   Se puede especificar el título de la Ventana (ATitulo), el mensaje que indicará al usuario que tipo de entrada de texto se espera que realice (ACursor) e incluso un texto ya predefinido (ADefecto). El texto escrito por el usuario o el proporcionado es devuelto a la aplicación como resultado de la función. La vnta muestr loa botones mbOK y mbCancel)
239210
240211   Ejemplo:
241212
242213``` pascal
243214 Uses forms, lcltype, dialogs, controls;
244215
245216 procedure VentanaEntradaTexto;
246217 var textoUsuario: string;
247218 begin
248219 textoUsuario := InputBox ('Introducción de texto por el usuario',
249220 'Por favor, escribe algo aquí:',
250221 'Si no quieres escribir, este es el texto que se devolverá');
251222 ShowMessage (textoUsuario);
252223 end
253224```
254225
255-<center>
256-
257-<figure>
258-<img src="Lazarus_InputBox.png" title="Lazarus_InputBox.png" />
259-<figcaption>Lazarus_InputBox.png</figcaption>
260-</figure>
261-
262-</center>
226+![](/wiki-images/4/4b/Lazarus_InputBox.png)
263227
264228   (nota: ojo con esta ventana, el texto de *ACursor* tiene un límite de longitud visible, ya que la ventana tiene un ancho y un alto limitado y fijo, y mostrará el texto en una única línea -al menos a día de hoy-)
265229
266230### [InputQuery](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputquery.html)
267231
268232``` pascal
269233 Function InputQuery(const ATitulo, ACursor : String; Enmascarar : Boolean; var TextoUsuario : String) : Boolean;
270234 Function InputQuery(const ATitulo, ACursor : String; var TextoUsuario : String) : Boolean;
271235```
272236
273237   La función [***InputQuery***](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputquery.html), que como [[Dialog Examples|InputBox]], permite al usuario introducir texto, tiene dos versiones; en la primera se utiliza el parámetro *Enmascarar* que indica si el texto que escribe el usuario se sustituye por asteriscos (valor *true*) o no (*false*), como para escribir una contraseña; en la segunda se omite este parámetro, lo que equivale a darle el valor *false*. El texto introducido por el usuario se devuelve en el parámetro *TextoUsuario* (por eso es variable); la función devuelve *true* si se presionó el botón *Aceptar*, o *falso* si se cerró la ventana de cualquier otra forma (por ejemplo, pulsando el icono 'X' de la barra de título).
274238
275239   Ejemplo:
276240
277241``` pascal
278242 Uses forms, lcltype, dialogs, controls;
279243
280244 procedure TryInputQuery;
281245 var respuesta: boolean;
282246 TextoUsuario: string;
283247 begin
284248 respuesta := InputQuery ('Una cuestión de geografía', '¿Capital de Nicaragua?', true, TextoUsuario);
285249 if respuesta {= true} and (TextoUsuario = 'Managua') then
286250 ShowMessage ('Efectivamente ' + TextoUsuario + ' es la capital de Nicaragua')
287251 else
288252 begin
289253 InputQuery ('Prueba de nuevo', 'No has pulsado ''OK'' o tu respuesta (' + TextoUsuario
290254 + ') no es la capital de Nicaragua', TextoUsuario);
291255 ShowMessage (' Tu respuesta ha sido: ' + TextoUsuario);
292256 end;
293257 end;
294258```
295259
296-<center>
297-
298260![](/wiki-images/7/7e/Lazarus_InputQuery.png)      ![](/wiki-images/4/43/Lazarus_InputQueryNoMascara.png)
299261
300-</center>
301-
302262   Nota: en la segunda imagen apreciamos que *InputQuery* padece el mismo defecto que *InputBox* respecto del texto que puede mostrar por la limitación de las dimensiones de la ventana. En Linux, con Lazarus 0.09.30-0 y FPC 2.4.2 este defecto no aparece y la ventana se expande; además se pueden crear nuevas líneas con \#13)
303263
304-<center>
305-
306-<figure>
307-<img src="InputQuery_ES_Linux_LAZ_0.9.30-0_FPC-2.4.2.png" title="InputQuery_ES_Linux_LAZ_0.9.30-0_FPC-2.4.2.png" />
308-<figcaption>InputQuery_ES_Linux_LAZ_0.9.30-0_FPC-2.4.2.png</figcaption>
309-</figure>
310-
311-</center>
312-
313-<center>
264+![](/wiki-images/2/29/InputQuery_ES_Linux_LAZ_0.9.30-0_FPC-2.4.2.png)
314265
315266<http://lazarus-ccr.sourceforge.net/kbdata/MessageDlgQuestion.png>
316267
317-</center>
318-
319-<center>
320-
321268<http://lazarus-ccr.sourceforge.net/kbdata/DontBeSillly.png>
322-
323-</center>
324269
325270### [PasswordBox](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/passwordbox.html)
326271
327272``` pascal
328273 Function PasswordBox(const ACaption, APrompt : String) : String;
329274```
330275
331276   Su comportamiento es parecido a [[Dialog Examples|InputBox]], consistiendo las diferencias en que no hay texto por defecto y el texto que el usuario escribe se enmascara.
332277
333278## Constantes y tipos usados en los cuadros de diálogo
334279
335280   Constantes y tipos importantes que se utilizan en estos diálogos y que están predefinidas en la biblioteca LCL:
336281
337282   Constantes enteras para definir tipos de botones e iconos que se muestran en MessageBox, definidos en la unidad ***LCLType.pp***:
338283
339284``` pascal
340285 //Botones
341286 MB_OK = $00000000;
342287 MB_OKCANCEL = $00000001;
343288 MB_ABORTRETRYIGNORE = $00000002;
344289 MB_YESNOCANCEL = $00000003;
345290 MB_YESNO = $00000004;
346291 MB_RETRYCANCEL = $00000005;
347292 //Iconos
348293 MB_ICONHAND = $00000010;
349294 MB_ICONQUESTION = $00000020;
350295 MB_ICONEXCLAMATION = $00000030;
351296 MB_ICONASTERICK = $00000040;
352297 MB_ICONWARNING = MB_ICONEXCLAMATION;
353298 MB_ICONERROR = MB_ICONHAND;
354299 MB_ICONINFORMATION = MB_ICONASTERICK;
355300```
356301
357302   Constantes enteras que definen el valor devuelto desde MessageBox según el botón que se presione:
358303
359304``` pascal
360305 IDOK = 1; ID_OK = IDOK;
361306 IDCANCEL = 2; ID_CANCEL = IDCANCEL;
362307 IDABORT = 3; ID_ABORT = IDABORT;
363308 IDRETRY = 4; ID_RETRY = IDRETRY;
364309 IDIGNORE = 5; ID_IGNORE = IDIGNORE;
365310 IDYES = 6; ID_YES = IDYES;
366311 IDNO = 7; ID_NO = IDNO;
367312 IDCLOSE = 8; ID_CLOSE = IDCLOSE;
368313 IDHELP = 9; ID_HELP = IDHELP;
369314```
370315
371316   Definen si el botón por omisión es el primero, el segundo o el tercero:
372317
373318``` pascal
374319 MB_DEFBUTTON1 = $00000000;
375320 MB_DEFBUTTON2 = $00000100;
376321 MB_DEFBUTTON3 = $00000200;
377322 MB_DEFBUTTON4 = $00000300;
378323```
379324
380325   El valor del parámetro Marcadores de *MessageBox* se forma al añadir una constante botón \[MB_OK..MB_RETRYCANCEL\], una constante icono \[MB_ICONHAND..MB_ICONINFORMATION\] y una constante opcional, de botón por defecto \[MB_DEFBUTTON1..MB_DEFBUTTON3\]
381326
382327   Los tipos que se utilizan en MessageDlg, los cuales necesitan parámetros AType de TMsgDlgType y AButtons de TMSgDlgButtons:
383328
384329``` pascal
385330 { Definido en Dialogs.pp }
386331 type
387332 TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation, mtCustom);
388333 TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);
389334 TMsgDlgButtons = set of TMsgDlgBtn;
390335
391336 const
392337 mbYesNoCancel = [mbYes, mbNo, mbCancel];
393338 mbOKCancel = [mbOK, mbCancel];
394339 mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
395340
396341 MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry,
397342 bkIgnore, bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose);
398343
399344 BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo, mbClose,
400345 mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll);
401346
402347 { Definido en Controls.pp }
403348 const
404349 mrNone = 0;
405350 mrOK = mrNone + 1;
406351 mrCancel = mrNone + 2;
407352 mrAbort = mrNone + 3;
408353 mrRetry = mrNone + 4;
409354 mrIgnore = mrNone + 5;
410355 mrYes = mrNone + 6;
411356 mrNo = mrNone + 7;
412357 mrAll = mrNone + 8;
413358 mrNoToAll = mrNone + 9;
414359 mrYesToAll = mrNone + 10;
415360 mrLast = mrYesToAll;
416361```
417362
418363   Sobre las ventanas de diálogo: [Referencia de la unidad ***Dialogs***: Procedimientos y funciones](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/index-5.html)
419364
420365---
421366*From the Free Pascal wiki, page "Dialog Examples/es", as it stood on 2020-02-13 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).*
422367Category: Castellano
423368Category: Español
424369Category: GUI/es
425370Category: LCL/es

Back to history