Sign in Join
Wiki copytemporary

Dialog Examples/es: what changed

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

OldNewLine
1+## Contents
2+
3+ * 1 Algunos diálogos útiles
4+ * 1.1 Diálogos con mensaje
5+ * 1.1.1 ShowMessage
6+ * 1.1.2 MessageBox
7+ * 1.1.3 MessageDlg
8+ * 1.1.4 El diálogo '**QuestionDlg'**
9+ * 1.2 Diálogos de entrada de texto
10+ * 1.2.1 InputBox
11+ * 1.2.2 InputQuery
12+ * 1.2.3 PasswordBox
13+ * 1.3 Constantes y tipos usados en los cuadros de diálogo
14+
115# Algunos diálogos útiles
216
3-   Aquí tenemos algunos diálogos útiles, que no aparecen en la Paleta de Componentes:
17+Aquí tenemos algunos diálogos útiles, que no aparecen en la Paleta de Componentes:
418
5-- procedimiento [ShowMessage (const Msg: string);](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/showmessage.html)
6-- función [MessageBox (Text, Caption : PChar; Flags: Word): Integer;](http://lazarus-ccr.sourceforge.net/docs/lcl/forms/tapplication.messagebox.html)
7-- función [MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/messagedlg.html)
8-- función [InputBox (const ACaption, APrompt, ADefault: string); string;](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputbox.html)
9-- función [InputQuery (const ACaption, APrompt: string; var Value: string): Boolean;](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputquery.html)
10-- función [PasswordBox(const ACaption, APrompt : String): String;](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/passwordbox.html)
19+ * procedimiento [ShowMessage (const Msg: string);](<http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/showmessage.html>)
20+ * función [MessageBox (Text, Caption : PChar; Flags: Word): Integer;](<http://lazarus-ccr.sourceforge.net/docs/lcl/forms/tapplication.messagebox.html>)
21+ * función [MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;](<http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/messagedlg.html>)
22+ * función [InputBox (const ACaption, APrompt, ADefault: string); string;](<http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputbox.html>)
23+ * función [InputQuery (const ACaption, APrompt: string; var Value: string): Boolean;](<http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputquery.html>)
24+ * función [PasswordBox(const ACaption, APrompt : String): String;](<http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/passwordbox.html>)
1125
12-   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.\
13-   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.
26+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.
27+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.
1428
1529## Diálogos con mensaje
1630
17-   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.
18-
19-### [ShowMessage](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/showmessage.html)
31+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.
2032
21-``` pascal
22- Procedure ShowMessage (const Msg: string);
23-{el procedimiento está definido en la unidad ''Dialogs.pp''}
33+### [ShowMessage](<http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/showmessage.html>)
2434```
25-
26-   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.\
27-  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ó.
35+Procedure ShowMessage (const Msg: string);
36+ {el procedimiento está definido en la unidad ''Dialogs.pp''}
37+```
2838
29-Ejemplo:
39+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.
40+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ó.
3041
31-``` pascal
32- Program UnMensajeConLazarus;
33- Uses Dialogs;
34- var mi_mensaje: string;
35- begin
36- mi_mensaje:= 'Este es un texto que se extiende a lo largo de'#13'de dos líneas';
37- ShowMessage (mi_mensaje);
38- end.
42+Ejemplo:
3943```
40-
41-   (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í)
44+Program UnMensajeConLazarus;
45+ Uses Dialogs;
46+ var mi_mensaje: string;
47+ begin
48+ mi_mensaje:= 'Este es un texto que se extiende a lo largo de'#13'de dos líneas';
49+ ShowMessage (mi_mensaje);
50+ end.
51+```
4252
43-![](/wiki-images/9/9b/Lazarus_ShowMessage.png)
53+(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í)
4454
45-### [MessageBox](http://lazarus-ccr.sourceforge.net/docs/lcl/forms/tapplication.messagebox.html)
55+[![Lazarus ShowMessage.png](/wiki-images/9/9b/Lazarus_ShowMessage.png)](</File:Lazarus_ShowMessage.png>)
4656
47-``` pascal
48- Function Application.MessageBox (Mensaje, Titulo: PChar; Marcadores: longint) : Integer;
57+### [MessageBox](<http://lazarus-ccr.sourceforge.net/docs/lcl/forms/tapplication.messagebox.html>)
4958```
50-
51-   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 ...'\].
59+Function Application.MessageBox (Mensaje, Titulo: PChar; Marcadores: longint) : Integer;
60+```
5261
53-   Sus parámetros:
62+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 ...'].
5463
55-- Mensaje: El texto del mensaje que queremos mostrar al usuario;
56-- Titulo: El título de la ventana del cuadro de diálogo;
57-- 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.
64+Sus parámetros:
5865
59-   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\]
66+ * Mensaje: El texto del mensaje que queremos mostrar al usuario;
67+ * Titulo: El título de la ventana del cuadro de diálogo;
68+ * 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.
6069
61-  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:
70+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]
6271
63-   Ejemplo:
72+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:
6473
65-``` pascal
66- Uses Forms, Dialogs, LCLType;
67-
68- Procedure MuestraMessageBox;
69- var resp, estilo: integer;
70- texto: pchar;
71- begin
72- with application do
74+Ejemplo:
75+```
76+Uses Forms, Dialogs, LCLType;
77+
78+ Procedure MuestraMessageBox;
79+ var resp, estilo: integer;
80+ texto: pchar;
7381 begin
74- estilo := MB_ABORTRETRYIGNORE + MB_ICONQUESTION;
75- resp := MessageBox ('Pulsa un botón', 'Ejemplo de MessageBox', estilo); //recogemos el valor de la función
76- case resp of
77- IDABORT: texto := 'Abortar';
78- IDRETRY: texto := 'Reintentar';
79- IDIGNORE: texto := 'Ignorar';
80- else texto := 'Has cerrado el cuadro con el aspa: ';
81- end; //case
82- MessageBox (texto, 'Respuesta', MB_ICONHAND); // no recogemos el valor devuelto por MessageBox
83- end; //with
84- end; //procedmiento
82+ with application do
83+ begin
84+ estilo := MB_ABORTRETRYIGNORE + MB_ICONQUESTION;
85+ resp := MessageBox ('Pulsa un botón', 'Ejemplo de MessageBox', estilo); //recogemos el valor de la función
86+ case resp of
87+ IDABORT: texto := 'Abortar';
88+ IDRETRY: texto := 'Reintentar';
89+ IDIGNORE: texto := 'Ignorar';
90+ else texto := 'Has cerrado el cuadro con el aspa: ';
91+ end; //case
92+ MessageBox (texto, 'Respuesta', MB_ICONHAND); // no recogemos el valor devuelto por MessageBox
93+ end; //with
94+ end; //procedmiento
8595```
8696
87-![](/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>
88-
89-### [MessageDlg](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/messagedlg.html)
97+[![Lazarus MessageBox.png](/wiki-images/1/1a/Lazarus_MessageBox.png)](</File:Lazarus_MessageBox.png>) [![Lazarus MessageBoxRespuesta.png](/wiki-images/6/67/Lazarus_MessageBoxRespuesta.png)](</File:Lazarus_MessageBoxRespuesta.png>)
9098
91-``` pascal
99+### [MessageDlg](<http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/messagedlg.html>)
100+```
92101function MessageDlg(const aMsg:String; DlgType:TMsgDlgType; Buttons:TMsgDlgButtons; HelpCtx:LongInt):Integer;
93-function MessageDlg(const aCaption:String; const aMsg:String; DlgType:TMsgDlgType;
94- Buttons:TMsgDlgButtons; HelpCtx:longInt):Integer;
95-function MessageDlg(const aCaption:String; const aMsg:String; DlgType:TMsgDlgType;
96- Buttons:TMsgDlgButtons; HelpCtx:LongInt; DefaultButton:TMsgDlgBtn):Integer;
97-function MessageDlg(const aCaption:String; const aMsg:String; DlgType:TMsgDlgType;
98- Buttons:TMsgDlgButtons; const HelpKeyword: String):Integer;
102+ function MessageDlg(const aCaption:String; const aMsg:String; DlgType:TMsgDlgType;
103+ Buttons:TMsgDlgButtons; HelpCtx:longInt):Integer;
104+ function MessageDlg(const aCaption:String; const aMsg:String; DlgType:TMsgDlgType;
105+ Buttons:TMsgDlgButtons; HelpCtx:LongInt; DefaultButton:TMsgDlgBtn):Integer;
106+ function MessageDlg(const aCaption:String; const aMsg:String; DlgType:TMsgDlgType;
107+ Buttons:TMsgDlgButtons; const HelpKeyword: String):Integer;
99108```
100109
101-
102-Ver [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¿¡!?)
103-
104-   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*.
110+ Ver [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¿¡!?)
105111
106-   Es el más completo y elaborado de las ventanas de diálogo, y permite al programador un considerable control sobre su aspecto.
112+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_.
107113
108-   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\].
114+Es el más completo y elaborado de las ventanas de diálogo, y permite al programador un considerable control sobre su aspecto.
109115
110-   *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.
116+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].
111117
112-   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\]).
118+ _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.
113119
114-
115-Ejemplo:
120+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]).
116121
117-``` pascal
118- Uses forms, dialogs, lcltype, controls;
119-
120- procedure EstoSiQueEsUnMensaje;
121- var tipo: TMsgDlgType;
122- botones: TMsgDlgButtons;
123- begin
124- tipo := mtWarning;
125- botones:= [mbYesToAll, mbNoToAll];
126- MessageDlg ('Cosas para no olvidar', 'las personas son las que dan sentido,'#13+
127- 'coherencia y lógica a las cosas', tipo, botones,0);
128- end;
122+ Ejemplo:
129123```
130-
131-<http://lazarus-ccr.sourceforge.net/kbdata/Question.png>\
132-
133-![`Lazarus_MessageDlg.png`](/wiki-images/8/81/Lazarus_MessageDlg.png)
124+Uses forms, dialogs, lcltype, controls;
125+
126+ procedure EstoSiQueEsUnMensaje;
127+ var tipo: TMsgDlgType;
128+ botones: TMsgDlgButtons;
129+ begin
130+ tipo := mtWarning;
131+ botones:= [mbYesToAll, mbNoToAll];
132+ MessageDlg ('Cosas para no olvidar', 'las personas son las que dan sentido,'#13+
133+ 'coherencia y lógica a las cosas', tipo, botones,0);
134+ end;
135+```
134136
135-### El diálogo **'QuestionDlg**'
137+[![Lazarus MessageDlg.png](/wiki-images/8/81/Lazarus_MessageDlg.png)](</File:Lazarus_MessageDlg.png>)
136138
137-   El diálogo **'QuestionDlg**' permite cambiar los rótulos de los botones y determinar los botones predetermindo y de cancelar.    Ejemplo:
139+### El diálogo '**QuestionDlg'**
138140
139-``` pascal
140- case QuestionDlg ('Este es el Título','Este es el Mensaje',mtCustom,[mrYes,'Positivo', mrNo, 'Negativo', mrCancel,'Predetermindado'],'La ayuda') of
141- mrYes: QuestionDlg ('Este es el Título','Has elegido "Positivo"',mtCustom,[mrOK,'¡Muy bien!'],'');
142- mrNo: QuestionDlg ('Este es el Título','¡Oh! has elegido "Negativo"',mtCustom,[mrOK,'Exacto'],'');
143- mrCancel: QuestionDlg ('Título','Has cancelado el diálogo con ESC o el botón "Predetermindado".',mtCustom,[mrOK,'Correcto'],'');
144- end;
141+El diálogo '**QuestionDlg'** permite cambiar los rótulos de los botones y determinar los botones predetermindo y de cancelar. Ejemplo:
145142```
143+case QuestionDlg ('Este es el Título','Este es el Mensaje',mtCustom,[mrYes,'Positivo', mrNo, 'Negativo', mrCancel,'Predetermindado'],'La ayuda') of
144+ mrYes: QuestionDlg ('Este es el Título','Has elegido "Positivo"',mtCustom,[mrOK,'¡Muy bien!'],'');
145+ mrNo: QuestionDlg ('Este es el Título','¡Oh! has elegido "Negativo"',mtCustom,[mrOK,'Exacto'],'');
146+ mrCancel: QuestionDlg ('Título','Has cancelado el diálogo con ESC o el botón "Predetermindado".',mtCustom,[mrOK,'Correcto'],'');
147+ end;
148+```
146149
147-![](/wiki-images/4/41/QuestionDlg_es_linux_qt.png%E2%80%8E)
150+[![QuestionDlg es linux qt.png](/wiki-images/7/70/QuestionDlg_es_linux_qt.png)](</File:QuestionDlg_es_linux_qt.png>)
148151
149-   Ejemplos avanzados con botones (tomados de promptdialog.inc)
152+[![Note-icon.png](/wiki-images/b/be/Note-icon.png)](</File:Note-icon.png>)
150153
151-``` pascal
152- [mrOk, '¡Vale!',mrCancel,'Cancela Ahora',mrIgnore, 'Ignorar',300,'¡Hazlo!','IsDefault']
153-```
154+**Nota:** ¡Si el usuario cancela el diálogo y no hay un botón definido como 'IsCancel', mrCancel será devuelto! Si quieres redirigir ESC/cerrar a u botón concreto utiliza el parámetro 'IsCancel' tras el botón deseado . (_Nota del traductor_ , lo traduzco pero no consigo reproducir esta funcionalidad)
154155
155-   Se muestran cuatro botones:
156+Ejemplos avanzados con botones (tomados de promptdialog.inc)
157+```
158+[mrOk, '¡Vale!',mrCancel,'Cancela Ahora',mrIgnore, 'Ignorar',300,'¡Hazlo!','IsDefault']
159+```
156160
157-- '¡Vale' que devuelve *mrOk*
158-- 'Cancela Ahora' que devuelve *mrCancel*
159-- 'Ignorar' que devuelve *mrIgnore*
160-- '¡Hazlo!' que devuelve *300*. Este es el botón predeterminado (con el foco)
161+Se muestran cuatro botones:
161162
162-   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:
163+ * '¡Vale' que devuelve _mrOk_
164+ * 'Cancela Ahora' que devuelve _mrCancel_
165+ * 'Ignorar' que devuelve _mrIgnore_
166+ * '¡Hazlo!' que devuelve _300_. Este es el botón predeterminado (con el foco)
163167
164-``` pascal
165- case QuestionDlg ('Este es el Título','Este es el Mensaje',mtCustom,[20,'Positivo', 21, 'Negativo',22,'No lo sé','IsDefault'],'') of
166- 20: QuestionDlg ('Este es el Título','Has dicho „Sí“',mtCustom,[20,'Eso está bien'],'');
167- 21: QuestionDlg ('Este es el Título','¡Oh, has dicho „No“',mtCustom,[21,'Correcto'],'');
168- 22: QuestionDlg ('Este es el Título','¡Entonces, averigüalo!',mtCustom,[22,'Tal vez'],'');
169- end;
168+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:
170169```
171-
172-   Con el fin de facilitar el trabajo, definiremos constantes. Por ejemplo:
170+case QuestionDlg ('Este es el Título','Este es el Mensaje',mtCustom,[20,'Positivo', 21, 'Negativo',22,'No lo sé','IsDefault'],'') of
171+ 20: QuestionDlg ('Este es el Título','Has dicho „Sí“',mtCustom,[20,'Eso está bien'],'');
172+ 21: QuestionDlg ('Este es el Título','¡Oh, has dicho „No“',mtCustom,[21,'Correcto'],'');
173+ 22: QuestionDlg ('Este es el Título','¡Entonces, averigüalo!',mtCustom,[22,'Tal vez'],'');
174+ end;
175+```
173176
174-``` pascal
177+Con el fin de facilitar el trabajo, definiremos constantes. Por ejemplo:
178+```
175179const
176- mrNoneNI= 20;
177- mrOkNI= mrNoneNI+1;
178- mrCancelNI= mrNoneNI+2;
179- mrAbortNI= mrNoneNI+3;
180- mrRetryNI= mrNoneNI+4;
181- mrIgnoreNI= mrNoneNI+5;
182- mrYesNI= mrNoneNI+6;
183- mrNoNI= mrNoneNI+7;
184- mrAllNI= mrNoneNI+8;
185- mrYesToAllNI= mrNoneNI+10;
186- mrCloseNI= mrNoneNI+11;
187- mrLastNI= mrCloseNI;
188-begin
189- case QuestionDlg ('Este es el Título','Este es el Mensaje',mtCustom,[mrYesN,'Positivo', mrNoNI, 'Negativo',22,'No lo sé','IsDefault'],'') of
190- 20: QuestionDlg ('Este es el Título','Has dicho „Sí“',mtCustom,[mrYesNI,'Eso está bien'],'');
191- 21: QuestionDlg ('Este es el Título','¡Oh, has dicho „No“',mtCustom,[mrNoNI,'Correcto'],'');
192- 22: QuestionDlg ('Este es el Título','¡Entonces, averigüalo!',mtCustom,[mrCancelNI,'Tal vez'],'');
193- end;//case
194-end;
180+ mrNoneNI= 20;
181+ mrOkNI= mrNoneNI+1;
182+ mrCancelNI= mrNoneNI+2;
183+ mrAbortNI= mrNoneNI+3;
184+ mrRetryNI= mrNoneNI+4;
185+ mrIgnoreNI= mrNoneNI+5;
186+ mrYesNI= mrNoneNI+6;
187+ mrNoNI= mrNoneNI+7;
188+ mrAllNI= mrNoneNI+8;
189+ mrYesToAllNI= mrNoneNI+10;
190+ mrCloseNI= mrNoneNI+11;
191+ mrLastNI= mrCloseNI;
192+ begin
193+ case QuestionDlg ('Este es el Título','Este es el Mensaje',mtCustom,[mrYesN,'Positivo', mrNoNI, 'Negativo',22,'No lo sé','IsDefault'],'') of
194+ 20: QuestionDlg ('Este es el Título','Has dicho „Sí“',mtCustom,[mrYesNI,'Eso está bien'],'');
195+ 21: QuestionDlg ('Este es el Título','¡Oh, has dicho „No“',mtCustom,[mrNoNI,'Correcto'],'');
196+ 22: QuestionDlg ('Este es el Título','¡Entonces, averigüalo!',mtCustom,[mrCancelNI,'Tal vez'],'');
197+ end;//case
198+ end;
195199```
196200
197-![](/wiki-images/4/47/QuestionDlg_esp_002.png)
201+[![QuestionDlg esp 002.png](/wiki-images/4/47/QuestionDlg_esp_002.png)](</File:QuestionDlg_esp_002.png>)
198202
199203## Diálogos de entrada de texto
200204
201-### [InputBox](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputbox.html)
202-
203-   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.
205+### [InputBox](<http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputbox.html>)
204206
205-``` pascal
206- Function InputBox(const ATitulo, ACursor, ADefecto : String) : String;
207+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.
207208```
208-
209-   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)
209+Function InputBox(const ATitulo, ACursor, ADefecto : String) : String;
210+```
210211
211-   Ejemplo:
212+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)
212213
213-``` pascal
214- Uses forms, lcltype, dialogs, controls;
215-
216- procedure VentanaEntradaTexto;
217- var textoUsuario: string;
218- begin
219- textoUsuario := InputBox ('Introducción de texto por el usuario',
220- 'Por favor, escribe algo aquí:',
221- 'Si no quieres escribir, este es el texto que se devolverá');
222- ShowMessage (textoUsuario);
223- end
214+Ejemplo:
224215```
225-
226-![](/wiki-images/4/4b/Lazarus_InputBox.png)
216+Uses forms, lcltype, dialogs, controls;
217+
218+ procedure VentanaEntradaTexto;
219+ var textoUsuario: string;
220+ begin
221+ textoUsuario := InputBox ('Introducción de texto por el usuario',
222+ 'Por favor, escribe algo aquí:',
223+ 'Si no quieres escribir, este es el texto que se devolverá');
224+ ShowMessage (textoUsuario);
225+ end
226+```
227227
228-   (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-)
228+[![Lazarus InputBox.png](/wiki-images/4/4b/Lazarus_InputBox.png)](</File:Lazarus_InputBox.png>)
229229
230-### [InputQuery](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputquery.html)
230+(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-)
231231
232-``` pascal
233- Function InputQuery(const ATitulo, ACursor : String; Enmascarar : Boolean; var TextoUsuario : String) : Boolean;
234- Function InputQuery(const ATitulo, ACursor : String; var TextoUsuario : String) : Boolean;
232+### [InputQuery](<http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputquery.html>)
235233```
236-
237-   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).
234+Function InputQuery(const ATitulo, ACursor : String; Enmascarar : Boolean; var TextoUsuario : String) : Boolean;
235+ Function InputQuery(const ATitulo, ACursor : String; var TextoUsuario : String) : Boolean;
236+```
238237
239-   Ejemplo:
238+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).
240239
241-``` pascal
242- Uses forms, lcltype, dialogs, controls;
243-
244- procedure TryInputQuery;
245- var respuesta: boolean;
246- TextoUsuario: string;
247- begin
248- respuesta := InputQuery ('Una cuestión de geografía', '¿Capital de Nicaragua?', true, TextoUsuario);
249- if respuesta {= true} and (TextoUsuario = 'Managua') then
250- ShowMessage ('Efectivamente ' + TextoUsuario + ' es la capital de Nicaragua')
251- else
252- begin
253- InputQuery ('Prueba de nuevo', 'No has pulsado ''OK'' o tu respuesta (' + TextoUsuario
254- + ') no es la capital de Nicaragua', TextoUsuario);
255- ShowMessage (' Tu respuesta ha sido: ' + TextoUsuario);
240+Ejemplo:
241+```
242+Uses forms, lcltype, dialogs, controls;
243+
244+ procedure TryInputQuery;
245+ var respuesta: boolean;
246+ TextoUsuario: string;
247+ begin
248+ respuesta := InputQuery ('Una cuestión de geografía', '¿Capital de Nicaragua?', true, TextoUsuario);
249+ if respuesta {= true} and (TextoUsuario = 'Managua') then
250+ ShowMessage ('Efectivamente ' + TextoUsuario + ' es la capital de Nicaragua')
251+ else
252+ begin
253+ InputQuery ('Prueba de nuevo', 'No has pulsado ''OK'' o tu respuesta (' + TextoUsuario
254+ + ') no es la capital de Nicaragua', TextoUsuario);
255+ ShowMessage (' Tu respuesta ha sido: ' + TextoUsuario);
256+ end;
256257 end;
257- end;
258258```
259259
260-![](/wiki-images/7/7e/Lazarus_InputQuery.png)      ![](/wiki-images/4/43/Lazarus_InputQueryNoMascara.png)
261-
262-   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)
263-
264-![](/wiki-images/2/29/InputQuery_ES_Linux_LAZ_0.9.30-0_FPC-2.4.2.png)
265-
266-<http://lazarus-ccr.sourceforge.net/kbdata/MessageDlgQuestion.png>
260+[![Lazarus InputQuery.png](/wiki-images/7/7e/Lazarus_InputQuery.png)](</File:Lazarus_InputQuery.png>) [![Lazarus InputQueryNoMascara.png](/wiki-images/4/43/Lazarus_InputQueryNoMascara.png)](</File:Lazarus_InputQueryNoMascara.png>)
267261
268-<http://lazarus-ccr.sourceforge.net/kbdata/DontBeSillly.png>
262+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)
269263
270-### [PasswordBox](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/passwordbox.html)
264+[![InputQuery ES Linux LAZ 0.9.30-0 FPC-2.4.2.png](/wiki-images/2/29/InputQuery_ES_Linux_LAZ_0.9.30-0_FPC-2.4.2.png)](</File:InputQuery_ES_Linux_LAZ_0.9.30-0_FPC-2.4.2.png>)
271265
272-``` pascal
273- Function PasswordBox(const ACaption, APrompt : String) : String;
266+### [PasswordBox](<http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/passwordbox.html>)
274267```
268+Function PasswordBox(const ACaption, APrompt : String) : String;
269+```
275270
276-   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.
271+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.
277272
278273## Constantes y tipos usados en los cuadros de diálogo
279274
280-   Constantes y tipos importantes que se utilizan en estos diálogos y que están predefinidas en la biblioteca LCL:
281-
282-   Constantes enteras para definir tipos de botones e iconos que se muestran en MessageBox, definidos en la unidad ***LCLType.pp***:
275+Constantes y tipos importantes que se utilizan en estos diálogos y que están predefinidas en la biblioteca LCL:
283276
284-``` pascal
285- //Botones
286- MB_OK = $00000000;
287- MB_OKCANCEL = $00000001;
288- MB_ABORTRETRYIGNORE = $00000002;
289- MB_YESNOCANCEL = $00000003;
290- MB_YESNO = $00000004;
291- MB_RETRYCANCEL = $00000005;
292- //Iconos
293- MB_ICONHAND = $00000010;
294- MB_ICONQUESTION = $00000020;
295- MB_ICONEXCLAMATION = $00000030;
296- MB_ICONASTERICK = $00000040;
297- MB_ICONWARNING = MB_ICONEXCLAMATION;
298- MB_ICONERROR = MB_ICONHAND;
299- MB_ICONINFORMATION = MB_ICONASTERICK;
277+Constantes enteras para definir tipos de botones e iconos que se muestran en MessageBox, definidos en la unidad _**LCLType.pp**_ :
300278```
301-
302-   Constantes enteras que definen el valor devuelto desde MessageBox según el botón que se presione:
303-
304-``` pascal
305- IDOK = 1; ID_OK = IDOK;
306- IDCANCEL = 2; ID_CANCEL = IDCANCEL;
307- IDABORT = 3; ID_ABORT = IDABORT;
308- IDRETRY = 4; ID_RETRY = IDRETRY;
309- IDIGNORE = 5; ID_IGNORE = IDIGNORE;
310- IDYES = 6; ID_YES = IDYES;
311- IDNO = 7; ID_NO = IDNO;
312- IDCLOSE = 8; ID_CLOSE = IDCLOSE;
313- IDHELP = 9; ID_HELP = IDHELP;
279+//Botones
280+ MB_OK = $00000000;
281+ MB_OKCANCEL = $00000001;
282+ MB_ABORTRETRYIGNORE = $00000002;
283+ MB_YESNOCANCEL = $00000003;
284+ MB_YESNO = $00000004;
285+ MB_RETRYCANCEL = $00000005;
286+ //Iconos
287+ MB_ICONHAND = $00000010;
288+ MB_ICONQUESTION = $00000020;
289+ MB_ICONEXCLAMATION = $00000030;
290+ MB_ICONASTERICK = $00000040;
291+ MB_ICONWARNING = MB_ICONEXCLAMATION;
292+ MB_ICONERROR = MB_ICONHAND;
293+ MB_ICONINFORMATION = MB_ICONASTERICK;
314294```
315295
316-   Definen si el botón por omisión es el primero, el segundo o el tercero:
317-
318-``` pascal
319- MB_DEFBUTTON1 = $00000000;
320- MB_DEFBUTTON2 = $00000100;
321- MB_DEFBUTTON3 = $00000200;
322- MB_DEFBUTTON4 = $00000300;
296+Constantes enteras que definen el valor devuelto desde MessageBox según el botón que se presione:
323297```
298+IDOK = 1; ID_OK = IDOK;
299+ IDCANCEL = 2; ID_CANCEL = IDCANCEL;
300+ IDABORT = 3; ID_ABORT = IDABORT;
301+ IDRETRY = 4; ID_RETRY = IDRETRY;
302+ IDIGNORE = 5; ID_IGNORE = IDIGNORE;
303+ IDYES = 6; ID_YES = IDYES;
304+ IDNO = 7; ID_NO = IDNO;
305+ IDCLOSE = 8; ID_CLOSE = IDCLOSE;
306+ IDHELP = 9; ID_HELP = IDHELP;
307+```
324308
325-   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\]
309+Definen si el botón por omisión es el primero, el segundo o el tercero:
310+```
311+MB_DEFBUTTON1 = $00000000;
312+ MB_DEFBUTTON2 = $00000100;
313+ MB_DEFBUTTON3 = $00000200;
314+ MB_DEFBUTTON4 = $00000300;
315+```
326316
327-   Los tipos que se utilizan en MessageDlg, los cuales necesitan parámetros AType de TMsgDlgType y AButtons de TMSgDlgButtons:
317+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]
328318
329-``` pascal
330- { Definido en Dialogs.pp }
331- type
332- TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation, mtCustom);
333- TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);
334- TMsgDlgButtons = set of TMsgDlgBtn;
335-
336- const
337- mbYesNoCancel = [mbYes, mbNo, mbCancel];
338- mbOKCancel = [mbOK, mbCancel];
339- mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
340-
341- MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry,
342- bkIgnore, bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose);
343-
344- BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo, mbClose,
345- mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll);
346-
347- { Definido en Controls.pp }
348- const
349- mrNone = 0;
350- mrOK = mrNone + 1;
351- mrCancel = mrNone + 2;
352- mrAbort = mrNone + 3;
353- mrRetry = mrNone + 4;
354- mrIgnore = mrNone + 5;
355- mrYes = mrNone + 6;
356- mrNo = mrNone + 7;
357- mrAll = mrNone + 8;
358- mrNoToAll = mrNone + 9;
359- mrYesToAll = mrNone + 10;
360- mrLast = mrYesToAll;
319+Los tipos que se utilizan en MessageDlg, los cuales necesitan parámetros AType de TMsgDlgType y AButtons de TMSgDlgButtons:
361320```
321+{ Definido en Dialogs.pp }
322+ type
323+ TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation, mtCustom);
324+ TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);
325+ TMsgDlgButtons = set of TMsgDlgBtn;
326+
327+ const
328+ mbYesNoCancel = [mbYes, mbNo, mbCancel];
329+ mbOKCancel = [mbOK, mbCancel];
330+ mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
331+
332+ MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry,
333+ bkIgnore, bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose);
334+
335+ BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo, mbClose,
336+ mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll);
337+
338+ { Definido en Controls.pp }
339+ const
340+ mrNone = 0;
341+ mrOK = mrNone + 1;
342+ mrCancel = mrNone + 2;
343+ mrAbort = mrNone + 3;
344+ mrRetry = mrNone + 4;
345+ mrIgnore = mrNone + 5;
346+ mrYes = mrNone + 6;
347+ mrNo = mrNone + 7;
348+ mrAll = mrNone + 8;
349+ mrNoToAll = mrNone + 9;
350+ mrYesToAll = mrNone + 10;
351+ mrLast = mrYesToAll;
352+```
362353
363-   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)
354+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>)
364355
365356---
366-*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).*
367-Category: Castellano
368-Category: Español
369-Category: GUI/es
370-Category: LCL/es
357+*From the Free Pascal wiki, page "Dialog Examples/es", as the Internet Archive kept it on 2025-01-18, last changed on 2024-12-05. 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