Dialog Examples/es: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: Dialog Examples/es
| Old | New | Line | |
|---|---|---|---|
| 1 | + | # Algunos diálogos útiles | |
| 2 | + | ||
| 3 | + | Aquí tenemos algunos diálogos útiles, que no aparecen en la Paleta de Componentes: | |
| 4 | + | ||
| 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) | |
| 11 | + | ||
| 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. | |
| 14 | + | ||
| 15 | + | ## Diálogos con mensaje | |
| 16 | + | ||
| 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) | |
| 20 | + | ||
| 21 | + | ``` pascal | |
| 22 | + | Procedure ShowMessage (const Msg: string); | |
| 23 | + | {el procedimiento está definido en la unidad ''Dialogs.pp''} | |
| 24 | + | ``` | |
| 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ó. | |
| 28 | + | ||
| 29 | + | Ejemplo: | |
| 30 | + | ||
| 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. | |
| 39 | + | ``` | |
| 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í) | |
| 42 | + | ||
| 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> | |
| 51 | + | ||
| 52 | + | ### [MessageBox](http://lazarus-ccr.sourceforge.net/docs/lcl/forms/tapplication.messagebox.html) | |
| 53 | + | ||
| 54 | + | ``` pascal | |
| 55 | + | Function Application.MessageBox (Mensaje, Titulo: PChar; Marcadores: longint) : Integer; | |
| 56 | + | ``` | |
| 57 | + | ||
| 58 | + | 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 | + | ||
| 60 | + | Sus parámetros: | |
| 61 | + | ||
| 62 | + | - Mensaje: El texto del mensaje que queremos mostrar al usuario; | |
| 63 | + | - Titulo: El título de la ventana del cuadro de diálogo; | |
| 64 | + | - 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. | |
| 65 | + | ||
| 66 | + | 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\] | |
| 67 | + | ||
| 68 | + | 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: | |
| 69 | + | ||
| 70 | + | Ejemplo: | |
| 71 | + | ||
| 72 | + | ``` pascal | |
| 73 | + | Uses Forms, Dialogs, LCLType; | |
| 74 | + | ||
| 75 | + | Procedure MuestraMessageBox; | |
| 76 | + | var resp, estilo: integer; | |
| 77 | + | texto: pchar; | |
| 78 | + | begin | |
| 79 | + | with application do | |
| 80 | + | begin | |
| 81 | + | estilo := MB_ABORTRETRYIGNORE + MB_ICONQUESTION; | |
| 82 | + | resp := MessageBox ('Pulsa un botón', 'Ejemplo de MessageBox', estilo); //recogemos el valor de la función | |
| 83 | + | case resp of | |
| 84 | + | IDABORT: texto := 'Abortar'; | |
| 85 | + | IDRETRY: texto := 'Reintentar'; | |
| 86 | + | IDIGNORE: texto := 'Ignorar'; | |
| 87 | + | else texto := 'Has cerrado el cuadro con el aspa: '; | |
| 88 | + | end; //case | |
| 89 | + | MessageBox (texto, 'Respuesta', MB_ICONHAND); // no recogemos el valor devuelto por MessageBox | |
| 90 | + | end; //with | |
| 91 | + | end; //procedmiento | |
| 92 | + | ``` | |
| 93 | + | ||
| 94 | + | <center> | |
| 95 | + | ||
| 96 | + |   <http://lazarus-ccr.sourceforge.net/kbdata/MessageBoxDemo.png> <http://lazarus-ccr.sourceforge.net/kbdata/ReplyYes.png> | |
| 97 | + | ||
| 98 | + | </center> | |
| 99 | + | ||
| 100 | + | ### [MessageDlg](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/messagedlg.html) | |
| 101 | + | ||
| 102 | + | ``` pascal | |
| 103 | + | function MessageDlg(const aMsg:String; DlgType:TMsgDlgType; Buttons:TMsgDlgButtons; HelpCtx:LongInt):Integer; | |
| 104 | + | function MessageDlg(const aCaption:String; const aMsg:String; DlgType:TMsgDlgType; | |
| 105 | + | Buttons:TMsgDlgButtons; HelpCtx:longInt):Integer; | |
| 106 | + | function MessageDlg(const aCaption:String; const aMsg:String; DlgType:TMsgDlgType; | |
| 107 | + | Buttons:TMsgDlgButtons; HelpCtx:LongInt; DefaultButton:TMsgDlgBtn):Integer; | |
| 108 | + | function MessageDlg(const aCaption:String; const aMsg:String; DlgType:TMsgDlgType; | |
| 109 | + | Buttons:TMsgDlgButtons; const HelpKeyword: String):Integer; | |
| 110 | + | ``` | |
| 111 | + | ||
| 112 | + | ||
| 113 | + | 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¿¡!?) | |
| 114 | + | ||
| 115 | + | 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*. | |
| 116 | + | ||
| 117 | + | Es el más completo y elaborado de las ventanas de diálogo, y permite al programador un considerable control sobre su aspecto. | |
| 118 | + | ||
| 119 | + | 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\]. | |
| 120 | + | ||
| 121 | + | *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. | |
| 122 | + | ||
| 123 | + | 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\]). | |
| 124 | + | ||
| 125 | + | ||
| 126 | + | Ejemplo: | |
| 127 | + | ||
| 128 | + | ``` pascal | |
| 129 | + | Uses forms, dialogs, lcltype, controls; | |
| 130 | + | ||
| 131 | + | procedure EstoSiQueEsUnMensaje; | |
| 132 | + | var tipo: TMsgDlgType; | |
| 133 | + | botones: TMsgDlgButtons; | |
| 134 | + | begin | |
| 135 | + | tipo := mtWarning; | |
| 136 | + | botones:= [mbYesToAll, mbNoToAll]; | |
| 137 | + | MessageDlg ('Cosas para no olvidar', 'las personas son las que dan sentido,'#13+ | |
| 138 | + | 'coherencia y lógica a las cosas', tipo, botones,0); | |
| 139 | + | end; | |
| 140 | + | ``` | |
| 141 | + | ||
| 142 | + | <center> | |
| 143 | + | ||
| 144 | + | <http://lazarus-ccr.sourceforge.net/kbdata/Question.png>\ | |
| 145 | + | ||
| 146 | + |  | |
| 147 | + | ||
| 148 | + | </center> | |
| 149 | + | ||
| 150 | + | ### El diálogo **'QuestionDlg**' | |
| 151 | + | ||
| 152 | + | El diálogo **'QuestionDlg**' permite cambiar los rótulos de los botones y determinar los botones predetermindo y de cancelar. Ejemplo: | |
| 153 | + | ||
| 154 | + | ``` pascal | |
| 155 | + | case QuestionDlg ('Este es el Título','Este es el Mensaje',mtCustom,[mrYes,'Positivo', mrNo, 'Negativo', mrCancel,'Predetermindado'],'La ayuda') of | |
| 156 | + | mrYes: QuestionDlg ('Este es el Título','Has elegido "Positivo"',mtCustom,[mrOK,'¡Muy bien!'],''); | |
| 157 | + | mrNo: QuestionDlg ('Este es el Título','¡Oh! has elegido "Negativo"',mtCustom,[mrOK,'Exacto'],''); | |
| 158 | + | mrCancel: QuestionDlg ('Título','Has cancelado el diálogo con ESC o el botón "Predetermindado".',mtCustom,[mrOK,'Correcto'],''); | |
| 159 | + | end; | |
| 160 | + | ``` | |
| 161 | + | ||
| 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> | |
| 170 | + | ||
| 171 | + | Ejemplos avanzados con botones (tomados de promptdialog.inc) | |
| 172 | + | ||
| 173 | + | ``` pascal | |
| 174 | + | [mrOk, '¡Vale!',mrCancel,'Cancela Ahora',mrIgnore, 'Ignorar',300,'¡Hazlo!','IsDefault'] | |
| 175 | + | ``` | |
| 176 | + | ||
| 177 | + | Se muestran cuatro botones: | |
| 178 | + | ||
| 179 | + | - '¡Vale' que devuelve *mrOk* | |
| 180 | + | - 'Cancela Ahora' que devuelve *mrCancel* | |
| 181 | + | - 'Ignorar' que devuelve *mrIgnore* | |
| 182 | + | - '¡Hazlo!' que devuelve *300*. Este es el botón predeterminado (con el foco) | |
| 183 | + | ||
| 184 | + | 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: | |
| 185 | + | ||
| 186 | + | ``` pascal | |
| 187 | + | case QuestionDlg ('Este es el Título','Este es el Mensaje',mtCustom,[20,'Positivo', 21, 'Negativo',22,'No lo sé','IsDefault'],'') of | |
| 188 | + | 20: QuestionDlg ('Este es el Título','Has dicho „Sí“',mtCustom,[20,'Eso está bien'],''); | |
| 189 | + | 21: QuestionDlg ('Este es el Título','¡Oh, has dicho „No“',mtCustom,[21,'Correcto'],''); | |
| 190 | + | 22: QuestionDlg ('Este es el Título','¡Entonces, averigüalo!',mtCustom,[22,'Tal vez'],''); | |
| 191 | + | end; | |
| 192 | + | ``` | |
| 193 | + | ||
| 194 | + | Con el fin de facilitar el trabajo, definiremos constantes. Por ejemplo: | |
| 195 | + | ||
| 196 | + | ``` pascal | |
| 197 | + | const | |
| 198 | + | mrNoneNI= 20; | |
| 199 | + | mrOkNI= mrNoneNI+1; | |
| 200 | + | mrCancelNI= mrNoneNI+2; | |
| 201 | + | mrAbortNI= mrNoneNI+3; | |
| 202 | + | mrRetryNI= mrNoneNI+4; | |
| 203 | + | mrIgnoreNI= mrNoneNI+5; | |
| 204 | + | mrYesNI= mrNoneNI+6; | |
| 205 | + | mrNoNI= mrNoneNI+7; | |
| 206 | + | mrAllNI= mrNoneNI+8; | |
| 207 | + | mrYesToAllNI= mrNoneNI+10; | |
| 208 | + | mrCloseNI= mrNoneNI+11; | |
| 209 | + | mrLastNI= mrCloseNI; | |
| 210 | + | begin | |
| 211 | + | case QuestionDlg ('Este es el Título','Este es el Mensaje',mtCustom,[mrYesN,'Positivo', mrNoNI, 'Negativo',22,'No lo sé','IsDefault'],'') of | |
| 212 | + | 20: QuestionDlg ('Este es el Título','Has dicho „Sí“',mtCustom,[mrYesNI,'Eso está bien'],''); | |
| 213 | + | 21: QuestionDlg ('Este es el Título','¡Oh, has dicho „No“',mtCustom,[mrNoNI,'Correcto'],''); | |
| 214 | + | 22: QuestionDlg ('Este es el Título','¡Entonces, averigüalo!',mtCustom,[mrCancelNI,'Tal vez'],''); | |
| 215 | + | end;//case | |
| 216 | + | end; | |
| 217 | + | ``` | |
| 218 | + | ||
| 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> | |
| 227 | + | ||
| 228 | + | ## Diálogos de entrada de texto | |
| 229 | + | ||
| 230 | + | ### [InputBox](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputbox.html) | |
| 231 | + | ||
| 232 | + | 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. | |
| 233 | + | ||
| 234 | + | ``` pascal | |
| 235 | + | Function InputBox(const ATitulo, ACursor, ADefecto : String) : String; | |
| 236 | + | ``` | |
| 237 | + | ||
| 238 | + | 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) | |
| 239 | + | ||
| 240 | + | Ejemplo: | |
| 241 | + | ||
| 242 | + | ``` pascal | |
| 243 | + | Uses forms, lcltype, dialogs, controls; | |
| 244 | + | ||
| 245 | + | procedure VentanaEntradaTexto; | |
| 246 | + | var textoUsuario: string; | |
| 247 | + | begin | |
| 248 | + | textoUsuario := InputBox ('Introducción de texto por el usuario', | |
| 249 | + | 'Por favor, escribe algo aquí:', | |
| 250 | + | 'Si no quieres escribir, este es el texto que se devolverá'); | |
| 251 | + | ShowMessage (textoUsuario); | |
| 252 | + | end | |
| 253 | + | ``` | |
| 254 | + | ||
| 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> | |
| 263 | + | ||
| 264 | + | (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-) | |
| 265 | + | ||
| 266 | + | ### [InputQuery](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputquery.html) | |
| 267 | + | ||
| 268 | + | ``` pascal | |
| 269 | + | Function InputQuery(const ATitulo, ACursor : String; Enmascarar : Boolean; var TextoUsuario : String) : Boolean; | |
| 270 | + | Function InputQuery(const ATitulo, ACursor : String; var TextoUsuario : String) : Boolean; | |
| 271 | + | ``` | |
| 272 | + | ||
| 273 | + | 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). | |
| 274 | + | ||
| 275 | + | Ejemplo: | |
| 276 | + | ||
| 277 | + | ``` pascal | |
| 278 | + | Uses forms, lcltype, dialogs, controls; | |
| 279 | + | ||
| 280 | + | procedure TryInputQuery; | |
| 281 | + | var respuesta: boolean; | |
| 282 | + | TextoUsuario: string; | |
| 283 | + | begin | |
| 284 | + | respuesta := InputQuery ('Una cuestión de geografía', '¿Capital de Nicaragua?', true, TextoUsuario); | |
| 285 | + | if respuesta {= true} and (TextoUsuario = 'Managua') then | |
| 286 | + | ShowMessage ('Efectivamente ' + TextoUsuario + ' es la capital de Nicaragua') | |
| 287 | + | else | |
| 288 | + | begin | |
| 289 | + | InputQuery ('Prueba de nuevo', 'No has pulsado ''OK'' o tu respuesta (' + TextoUsuario | |
| 290 | + | + ') no es la capital de Nicaragua', TextoUsuario); | |
| 291 | + | ShowMessage (' Tu respuesta ha sido: ' + TextoUsuario); | |
| 292 | + | end; | |
| 293 | + | end; | |
| 294 | + | ``` | |
| 295 | + | ||
| 296 | + | <center> | |
| 297 | + | ||
| 298 | + |   | |
| 299 | + | ||
| 300 | + | </center> | |
| 301 | + | ||
| 302 | + | 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) | |
| 303 | + | ||
| 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> | |
| 314 | + | ||
| 315 | + | <http://lazarus-ccr.sourceforge.net/kbdata/MessageDlgQuestion.png> | |
| 316 | + | ||
| 317 | + | </center> | |
| 318 | + | ||
| 319 | + | <center> | |
| 320 | + | ||
| 321 | + | <http://lazarus-ccr.sourceforge.net/kbdata/DontBeSillly.png> | |
| 322 | + | ||
| 323 | + | </center> | |
| 324 | + | ||
| 325 | + | ### [PasswordBox](http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/passwordbox.html) | |
| 326 | + | ||
| 327 | + | ``` pascal | |
| 328 | + | Function PasswordBox(const ACaption, APrompt : String) : String; | |
| 329 | + | ``` | |
| 330 | + | ||
| 331 | + | 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. | |
| 332 | + | ||
| 333 | + | ## Constantes y tipos usados en los cuadros de diálogo | |
| 334 | + | ||
| 335 | + | Constantes y tipos importantes que se utilizan en estos diálogos y que están predefinidas en la biblioteca LCL: | |
| 336 | + | ||
| 337 | + | Constantes enteras para definir tipos de botones e iconos que se muestran en MessageBox, definidos en la unidad ***LCLType.pp***: | |
| 338 | + | ||
| 339 | + | ``` pascal | |
| 340 | + | //Botones | |
| 341 | + | MB_OK = $00000000; | |
| 342 | + | MB_OKCANCEL = $00000001; | |
| 343 | + | MB_ABORTRETRYIGNORE = $00000002; | |
| 344 | + | MB_YESNOCANCEL = $00000003; | |
| 345 | + | MB_YESNO = $00000004; | |
| 346 | + | MB_RETRYCANCEL = $00000005; | |
| 347 | + | //Iconos | |
| 348 | + | MB_ICONHAND = $00000010; | |
| 349 | + | MB_ICONQUESTION = $00000020; | |
| 350 | + | MB_ICONEXCLAMATION = $00000030; | |
| 351 | + | MB_ICONASTERICK = $00000040; | |
| 352 | + | MB_ICONWARNING = MB_ICONEXCLAMATION; | |
| 353 | + | MB_ICONERROR = MB_ICONHAND; | |
| 354 | + | MB_ICONINFORMATION = MB_ICONASTERICK; | |
| 355 | + | ``` | |
| 356 | + | ||
| 357 | + | Constantes enteras que definen el valor devuelto desde MessageBox según el botón que se presione: | |
| 358 | + | ||
| 359 | + | ``` pascal | |
| 360 | + | IDOK = 1; ID_OK = IDOK; | |
| 361 | + | IDCANCEL = 2; ID_CANCEL = IDCANCEL; | |
| 362 | + | IDABORT = 3; ID_ABORT = IDABORT; | |
| 363 | + | IDRETRY = 4; ID_RETRY = IDRETRY; | |
| 364 | + | IDIGNORE = 5; ID_IGNORE = IDIGNORE; | |
| 365 | + | IDYES = 6; ID_YES = IDYES; | |
| 366 | + | IDNO = 7; ID_NO = IDNO; | |
| 367 | + | IDCLOSE = 8; ID_CLOSE = IDCLOSE; | |
| 368 | + | IDHELP = 9; ID_HELP = IDHELP; | |
| 369 | + | ``` | |
| 370 | + | ||
| 371 | + | Definen si el botón por omisión es el primero, el segundo o el tercero: | |
| 372 | + | ||
| 373 | + | ``` pascal | |
| 374 | + | MB_DEFBUTTON1 = $00000000; | |
| 375 | + | MB_DEFBUTTON2 = $00000100; | |
| 376 | + | MB_DEFBUTTON3 = $00000200; | |
| 377 | + | MB_DEFBUTTON4 = $00000300; | |
| 378 | + | ``` | |
| 379 | + | ||
| 380 | + | 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\] | |
| 381 | + | ||
| 382 | + | Los tipos que se utilizan en MessageDlg, los cuales necesitan parámetros AType de TMsgDlgType y AButtons de TMSgDlgButtons: | |
| 383 | + | ||
| 384 | + | ``` pascal | |
| 385 | + | { Definido en Dialogs.pp } | |
| 386 | + | type | |
| 387 | + | TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation, mtCustom); | |
| 388 | + | TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose); | |
| 389 | + | TMsgDlgButtons = set of TMsgDlgBtn; | |
| 390 | + | ||
| 391 | + | const | |
| 392 | + | mbYesNoCancel = [mbYes, mbNo, mbCancel]; | |
| 393 | + | mbOKCancel = [mbOK, mbCancel]; | |
| 394 | + | mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore]; | |
| 395 | + | ||
| 396 | + | MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry, | |
| 397 | + | bkIgnore, bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose); | |
| 398 | + | ||
| 399 | + | BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo, mbClose, | |
| 400 | + | mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll); | |
| 401 | + | ||
| 402 | + | { Definido en Controls.pp } | |
| 403 | + | const | |
| 404 | + | mrNone = 0; | |
| 405 | + | mrOK = mrNone + 1; | |
| 406 | + | mrCancel = mrNone + 2; | |
| 407 | + | mrAbort = mrNone + 3; | |
| 408 | + | mrRetry = mrNone + 4; | |
| 409 | + | mrIgnore = mrNone + 5; | |
| 410 | + | mrYes = mrNone + 6; | |
| 411 | + | mrNo = mrNone + 7; | |
| 412 | + | mrAll = mrNone + 8; | |
| 413 | + | mrNoToAll = mrNone + 9; | |
| 414 | + | mrYesToAll = mrNone + 10; | |
| 415 | + | mrLast = mrYesToAll; | |
| 416 | + | ``` | |
| 417 | + | ||
| 418 | + | 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) | |
| 419 | + | ||
| 420 | + | --- | |
| 421 | + | *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).* | |
| 422 | + | Category: Castellano | |
| 423 | + | Category: Español | |
| 424 | + | Category: GUI/es | |
| 425 | + | Category: LCL/es |
