Difference between revisions of "Dialog Examples/es"

From Lazarus wiki
Jump to navigationJump to search
Line 5: Line 5:
  
 
* procedimiento ShowMessage (const Msg: string);
 
* procedimiento ShowMessage (const Msg: string);
* función MessageBox (Text, Caption : PChar; Flags: Word): Integer;
+
* función [http://lazarus-ccr.sourceforge.net/docs/lcl/forms/tapplication.messagebox.html MessageBox (Text, Caption : PChar; Flags: Word): Integer;]
 
* función MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;
 
* función MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;
 
* función InputBox (const ACaption, APrompt, ADefault: string); string;
 
* función InputBox (const ACaption, APrompt, ADefault: string); string;
Line 13: Line 13:
 
Cada uno de esos componentes da lugar a la aparición de un pequeño cuadro emergente, que contiene cierta información y pide una respuesta del usuario: presionar un botón, introducir algún texto o ambos. Los programadores tienen poco control sobre el formato, tamaño o posición de esos cuadros emergentes, pero pueden cambiar su contenido textual.<br>
 
Cada uno de esos componentes da lugar a la aparición de un pequeño cuadro emergente, que contiene cierta información y pide una respuesta del usuario: presionar un botón, introducir algún texto o ambos. Los programadores tienen poco control sobre el formato, tamaño o posición de esos cuadros emergentes, pero pueden cambiar su contenido textual.<br>
 
La razón de que a menudo haya varias alternativas parecidas es permitir diferentes métodos de llamar al componente y recibir datos de respuesta desde el procedimiento o la función.
 
La razón de que a menudo haya varias alternativas parecidas es permitir diferentes métodos de llamar al componente y recibir datos de respuesta desde el procedimiento o la función.
 
+
</delphi>
 
==Diálogos con mensaje==
 
==Diálogos con mensaje==
 
Los diálogos con mensaje muestran un mensaje y esperan que se presione una tecla o se haga clic con el ratón.
 
Los diálogos con mensaje muestran un mensaje y esperan que se presione una tecla o se haga clic con el ratón.
  
 
===ShowMessage===
 
===ShowMessage===
 +
</delphi>
 
  Procedure ShowMessage (const Msg: string);
 
  Procedure ShowMessage (const Msg: string);
+
<delphi>
 
  { Definido en Dialogs.pp }
 
  { Definido en Dialogs.pp }
  
Line 26: Line 27:
  
 
Ejemplo:
 
Ejemplo:
 
+
<delphi>
 
  Program LazMessage;
 
  Program LazMessage;
 
  Uses Dialogs;
 
  Uses Dialogs;
Line 32: Line 33:
 
   ShowMessage ('This is a message from Lazarus')
 
   ShowMessage ('This is a message from Lazarus')
 
  end.
 
  end.
 
+
</delphi>
 
===MessageBox===
 
===MessageBox===
 
<delphi>
 
<delphi>
Line 75: Line 76:
  
 
===MessageDLG===
 
===MessageDLG===
 +
<delphi>
 
  function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;  
 
  function MessageDlg(const aMsg: string; DlgType: TMsgDlgType;  
 
                     Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
 
                     Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
 
  function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType;  
 
  function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType;  
 
                     Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
 
                     Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
 
+
</delphi>
 
Hay dos versiones de esta función, por ejemplo, primero el parámetro 'Caption'; si se omite, se pierde la etiqueta del cuadro.
 
Hay dos versiones de esta función, por ejemplo, primero el parámetro 'Caption'; si se omite, se pierde la etiqueta del cuadro.
  
Line 88: Line 90:
  
 
Ejemplo:
 
Ejemplo:
 
+
<delphi>
 
  Uses forms, dialogs, lcltype, controls;
 
  Uses forms, dialogs, lcltype, controls;
 
   
 
   
Line 98: Line 100:
 
   end;
 
   end;
  
 
+
</delphi>
 
<center> http://lazarus-ccr.sourceforge.net/kbdata/Question.png  
 
<center> http://lazarus-ccr.sourceforge.net/kbdata/Question.png  
 
  </center>
 
  </center>
Line 105: Line 107:
 
===InputBox===
 
===InputBox===
 
Diáogos de entrada de texto: muestran un mensaje y esperan que el usuario introduzca un texto.
 
Diáogos de entrada de texto: muestran un mensaje y esperan que el usuario introduzca un texto.
 
+
<delphi>
 
  Function InputBox(const ACaption, APrompt, ADefault : String) : String;
 
  Function InputBox(const ACaption, APrompt, ADefault : String) : String;
 
+
</delphi>
 
Muestran un cuadro con un título y una indicación definido y esperan que el usuario introduzca un texto. Opcionalmente, se puede mostrar una cadena por omisión en el cuadro de texto. Lo introducido por el usuario o la cadena por omisión se devuelve como el resultado de la función.
 
Muestran un cuadro con un título y una indicación definido y esperan que el usuario introduzca un texto. Opcionalmente, se puede mostrar una cadena por omisión en el cuadro de texto. Lo introducido por el usuario o la cadena por omisión se devuelve como el resultado de la función.
  
 
Ejemplo:
 
Ejemplo:
 
+
</delphi>
 
  Uses forms, lcltype, dialogs, controls;
 
  Uses forms, lcltype, dialogs, controls;
 
   
 
   
Line 127: Line 129:
 
  Function InputQuery(const ACaption, APrompt : String;
 
  Function InputQuery(const ACaption, APrompt : String;
 
                     var Value : String) : Boolean;
 
                     var Value : String) : Boolean;
 
+
</delphi>
 
Existen dos versiones de esta función que muestra una indicación y espera que el usuario introduzca los datos en forma de texto. La primera incluye un parámetro booleano MaskInput que determina si lo introducido por el usuario se sustituye por asteriscos en el cuadro de entrada de texto (como cuando se escribe una contraseña), mientras que la segunda omite esta propiedad. El texto introducido por el usuario se devuelve en el parámetro variable 'Value'; el resultado de la función es un booleano que devuelve TRUE si se presionó el botón ACEPTAR, o FALSE si el cuadro se cerró de otra forma (por ejemplo, pulsando el icono 'Cerrar' de la barra de título). Omitir el parámetro MaskInput equivale a asignarle FALSE.
 
Existen dos versiones de esta función que muestra una indicación y espera que el usuario introduzca los datos en forma de texto. La primera incluye un parámetro booleano MaskInput que determina si lo introducido por el usuario se sustituye por asteriscos en el cuadro de entrada de texto (como cuando se escribe una contraseña), mientras que la segunda omite esta propiedad. El texto introducido por el usuario se devuelve en el parámetro variable 'Value'; el resultado de la función es un booleano que devuelve TRUE si se presionó el botón ACEPTAR, o FALSE si el cuadro se cerró de otra forma (por ejemplo, pulsando el icono 'Cerrar' de la barra de título). Omitir el parámetro MaskInput equivale a asignarle FALSE.
  
 
Ejemplo:
 
Ejemplo:
 
+
<delphi>
 
  Uses forms, lcltype, dialogs, controls;
 
  Uses forms, lcltype, dialogs, controls;
 
   
 
   
Line 146: Line 148:
 
   end
 
   end
 
  end;
 
  end;
 
+
</delphi>
 
<center> http://lazarus-ccr.sourceforge.net/kbdata/MessageDlgQuestion.png  </center>
 
<center> http://lazarus-ccr.sourceforge.net/kbdata/MessageDlgQuestion.png  </center>
  
Line 152: Line 154:
  
 
===PasswordBox===
 
===PasswordBox===
 +
<delphi>
 
  Function PasswordBox(const ACaption, APrompt : String) : String;
 
  Function PasswordBox(const ACaption, APrompt : String) : String;
 
+
</delphi>
 
Se comporta de forma parecida a la función InputQuery con MaskInput = TRUE; la diferencia es que la contraseña que se escriba se devolverá como el resultado de la función (como InputBox).
 
Se comporta de forma parecida a la función InputQuery con MaskInput = TRUE; la diferencia es que la contraseña que se escriba se devolverá como el resultado de la función (como InputBox).
  
Line 163: Line 166:
  
 
Constantes enteras para definir tipos de botones e iconos que se muestran en MessageBox:
 
Constantes enteras para definir tipos de botones e iconos que se muestran en MessageBox:
 
+
<delphi>
 
  MB_OK = $00000000;
 
  MB_OK = $00000000;
 
  MB_OKCANCEL = $00000001;
 
  MB_OKCANCEL = $00000001;
Line 179: Line 182:
 
  MB_ICONERROR = MB_ICONHAND;
 
  MB_ICONERROR = MB_ICONHAND;
 
  MB_ICONINFORMATION = MB_ICONASTERICK;
 
  MB_ICONINFORMATION = MB_ICONASTERICK;
 
+
</delphi>
 
Constantes enteras que definen el valor devuelto desde MessageBox según el botón que se presione:
 
Constantes enteras que definen el valor devuelto desde MessageBox según el botón que se presione:
 
+
</delphi>
 
  IDOK = 1; ID_OK = IDOK;
 
  IDOK = 1; ID_OK = IDOK;
 
  IDCANCEL = 2; ID_CANCEL = IDCANCEL;
 
  IDCANCEL = 2; ID_CANCEL = IDCANCEL;
Line 191: Line 194:
 
  IDCLOSE = 8; ID_CLOSE = IDCLOSE;
 
  IDCLOSE = 8; ID_CLOSE = IDCLOSE;
 
  IDHELP = 9; ID_HELP = IDHELP;
 
  IDHELP = 9; ID_HELP = IDHELP;
 
+
</delphi>
 
Definen si el botón por omisión es el primero, el segundo o el tercero:
 
Definen si el botón por omisión es el primero, el segundo o el tercero:
 
+
<delphi>
 
  MB_DEFBUTTON1 = $00000000;
 
  MB_DEFBUTTON1 = $00000000;
 
  MB_DEFBUTTON2 = $00000100;
 
  MB_DEFBUTTON2 = $00000100;
 
  MB_DEFBUTTON3 = $00000200;
 
  MB_DEFBUTTON3 = $00000200;
 
  MB_DEFBUTTON4 = $00000300;
 
  MB_DEFBUTTON4 = $00000300;
 
+
</delphi>
 
El parámetro Flags de MessageBox está construido al añadir una constante botón [MB_OK..MB_RETRYCANCEL],
 
El parámetro Flags de MessageBox está construido al añadir una constante botón [MB_OK..MB_RETRYCANCEL],
 
una constante icono [MB_ICONHAND..MB_ICONINFORMATION]
 
una constante icono [MB_ICONHAND..MB_ICONINFORMATION]
Line 208: Line 211:
  
 
  { Definido en Dialogs.pp }
 
  { Definido en Dialogs.pp }
 
+
<delphi>
 
  type
 
  type
 
   TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,
 
   TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,
Line 249: Line 252:
 
   mrYesToAll = mrNone + 10;
 
   mrYesToAll = mrNone + 10;
 
   mrLast = mrYesToAll;
 
   mrLast = mrYesToAll;
 
+
</delphi>
 
----
 
----
 
Esta página se ha importado desde el epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=DialogExamples version].
 
Esta página se ha importado desde el epikwiki [http://lazarus-ccr.sourceforge.net/index.php?wiki=DialogExamples version].

Revision as of 01:34, 14 June 2008

Deutsch (de) English (en) español (es) suomi (fi) français (fr) 日本語 (ja) polski (pl) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN)

Algunos diálogos útiles

Aquí tenemos algunos diálogos útiles, que no aparecen en la Paleta de Componentes:

  • procedimiento ShowMessage (const Msg: string);
  • función MessageBox (Text, Caption : PChar; Flags: Word): Integer;
  • función MessageDlg (const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: LongInt): Word;
  • función InputBox (const ACaption, APrompt, ADefault: string); string;
  • función InputQuery (const ACaption, APrompt: string; var Value: string): Boolean;
  • función PasswordBox(const ACaption, APrompt : String) : String;

Cada uno de esos componentes da lugar a la aparición de un pequeño cuadro emergente, que contiene cierta información y pide una respuesta del usuario: presionar un botón, introducir algún texto o ambos. Los programadores tienen poco control sobre el formato, tamaño o posición de esos cuadros emergentes, pero pueden cambiar su contenido textual.
La razón de que a menudo haya varias alternativas parecidas es permitir diferentes métodos de llamar al componente y recibir datos de respuesta desde el procedimiento o la función. </delphi>

Diálogos con mensaje

Los diálogos con mensaje muestran un mensaje y esperan que se presione una tecla o se haga clic con el ratón.

ShowMessage

</delphi>

Procedure ShowMessage (const Msg: string);

<delphi>

{ Definido en Dialogs.pp }

Es el cuadro de diálogo más simple: lleva una cadena sencilla como parámetro, lo muestra en una caja predefinida, y espera un clic de ratón o la pulsación de una tecla antes de volver a la rutina o programa que lo llamó.
Esta ventana es modal, es decir, se muestra el cuadro de diálogo, recibe el foco y no lo pierde hasta que se pulsa Aceptar u otra tecla.

Ejemplo: <delphi>

Program LazMessage;
Uses Dialogs;
begin
  ShowMessage ('This is a message from Lazarus')
end.

</delphi>

MessageBox

<delphi>

Function Application.MessageBox (Mensaje, Titulo: PChar; Marcadores: longint) : Integer;

</delphi> Definido en Forms.pp como parte de TApplication; de ahí que deba ser llamado como Application.Messagebox ( ) o utilizando el constructor 'With Application do ...'.

Sus parámetros:

  • Mensaje: El texto del mensaje que quermos mostrar al usuario;
  • Titulo: El título de la ventana de diálogo;
  • 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.

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]

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:

Ejemplo: <delphi>

Uses Forms, Dialogs, LCLType;

Procedure MuestraMessageBox;
 var resp, estilo: integer;
   texto: pchar;
begin
    with application do
      begin
        estilo :=  MB_ABORTRETRYIGNORE + MB_ICONQUESTION;
        resp :=  MessageBox ('Pulsa un botón', 'Ejemplo de MessageBox', estilo); //recogemos el valor de la función
        case resp of
          IDABORT: texto := 'Abortar';
          IDRETRY: texto :=  'Reintentar';
          IDIGNORE: texto := 'Ignorar';
          else texto := 'Has cerrado el cuadro con el aspa: ';
        end; //case
        MessageBox (texto, 'Respuesta', MB_ICONHAND); // no recogemos el valor devuelto por MessageBox
      end; //with   
end; //procedmiento

</delphi>

http://lazarus-ccr.sourceforge.net/kbdata/MessageBoxDemo.png http://lazarus-ccr.sourceforge.net/kbdata/ReplyYes.png

MessageDLG

<delphi>

function MessageDlg(const aMsg: string; DlgType: TMsgDlgType; 
                   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
function MessageDlg(const aCaption, aMsg: string; DlgType: TMsgDlgType; 
                   Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;

</delphi> Hay dos versiones de esta función, por ejemplo, primero el parámetro 'Caption'; si se omite, se pierde la etiqueta del cuadro.

Es el más completo y elaborado de los cuadros de diálogo, y permite al programador un considerable control sobre su aspecto. Los parámetros que definen el tipo de cuadro y su icono son tipos, más que constantes enteras, y los botones se pueden especificar como un conjunto entre corchetes, por ejemplo [mbRetry, mbIgnore, mbAbort, mbCancel]. El parámetro HelpCtx no está implementado actualmente y se le debe asignar el valor cero. El valor devuelto por la función es idéntico al botón presionado, expresado como un entero (véanse las definiciones siguientes, [mrNone..mrAll]).

Ejemplo: <delphi>

Uses forms, dialogs, lcltype, controls;

procedure TryMessageDlg;
begin
  if MessageDlg ('Question', 'Do you wish to Execute?', mtConfirmation, 
                 [mbYes, mbNo, mbIgnore],0) = mrYes
  then { Execute rest of Program };
 end;

</delphi>

http://lazarus-ccr.sourceforge.net/kbdata/Question.png

Diálogos de entrada de texto

InputBox

Diáogos de entrada de texto: muestran un mensaje y esperan que el usuario introduzca un texto. <delphi>

Function InputBox(const ACaption, APrompt, ADefault : String) : String;

</delphi> Muestran un cuadro con un título y una indicación definido y esperan que el usuario introduzca un texto. Opcionalmente, se puede mostrar una cadena por omisión en el cuadro de texto. Lo introducido por el usuario o la cadena por omisión se devuelve como el resultado de la función.

Ejemplo: </delphi>

Uses forms, lcltype, dialogs, controls;

procedure TryInputBox;
var userstring: string;
begin
  userstring := InputBox ('Get some text input', 
                         'Please type in some   information', 'Some sample text');
  ShowMessage (userstring)
end;

InputQuery

Function InputQuery(const ACaption, APrompt : String;
                    MaskInput : Boolean; var Value : String) : Boolean;
Function InputQuery(const ACaption, APrompt : String;
                    var Value : String) : Boolean;

</delphi> Existen dos versiones de esta función que muestra una indicación y espera que el usuario introduzca los datos en forma de texto. La primera incluye un parámetro booleano MaskInput que determina si lo introducido por el usuario se sustituye por asteriscos en el cuadro de entrada de texto (como cuando se escribe una contraseña), mientras que la segunda omite esta propiedad. El texto introducido por el usuario se devuelve en el parámetro variable 'Value'; el resultado de la función es un booleano que devuelve TRUE si se presionó el botón ACEPTAR, o FALSE si el cuadro se cerró de otra forma (por ejemplo, pulsando el icono 'Cerrar' de la barra de título). Omitir el parámetro MaskInput equivale a asignarle FALSE.

Ejemplo: <delphi>

Uses forms, lcltype, dialogs, controls;

procedure TryInputQuery;
var QueryResult: boolean;
  userstring: string;
begin
  if InputQuery ('Question', 'Type in some data', TRUE, userstring)
  then ShowMessage (userstring)
  else 
  begin
    InputQuery ('Dont be silly', 'Please try again', userstring);
    ShowMessage (userstring)
  end
end;

</delphi>

http://lazarus-ccr.sourceforge.net/kbdata/MessageDlgQuestion.png
http://lazarus-ccr.sourceforge.net/kbdata/DontBeSillly.png

PasswordBox

<delphi>

Function PasswordBox(const ACaption, APrompt : String) : String;

</delphi> Se comporta de forma parecida a la función InputQuery con MaskInput = TRUE; la diferencia es que la contraseña que se escriba se devolverá como el resultado de la función (como InputBox).

Varias constantes y tipos importantes que se usan en los cuadros de diálogo están predefinidas en la biblioteca LCL:

const { Definida en LCLType.pp }

Constantes enteras para definir tipos de botones e iconos que se muestran en MessageBox: <delphi>

MB_OK = $00000000;
MB_OKCANCEL = $00000001;
MB_ABORTRETRYIGNORE = $00000002;
MB_YESNOCANCEL = $00000003;
MB_YESNO = $00000004;
MB_RETRYCANCEL = $00000005;


MB_ICONHAND = $00000010;
MB_ICONQUESTION = $00000020;
MB_ICONEXCLAMATION = $00000030;
MB_ICONASTERICK = $00000040;
MB_ICONWARNING = MB_ICONEXCLAMATION;
MB_ICONERROR = MB_ICONHAND;
MB_ICONINFORMATION = MB_ICONASTERICK;

</delphi> Constantes enteras que definen el valor devuelto desde MessageBox según el botón que se presione: </delphi>

IDOK = 1; 	ID_OK = IDOK;
IDCANCEL = 2;	ID_CANCEL = IDCANCEL;
IDABORT = 3;	ID_ABORT = IDABORT;
IDRETRY = 4;	ID_RETRY = IDRETRY;
IDIGNORE = 5;	ID_IGNORE = IDIGNORE;
IDYES = 6;	ID_YES = IDYES;
IDNO = 7;	ID_NO = IDNO;
IDCLOSE = 8;	ID_CLOSE = IDCLOSE;
IDHELP = 9;	ID_HELP = IDHELP;

</delphi> Definen si el botón por omisión es el primero, el segundo o el tercero: <delphi>

MB_DEFBUTTON1 = $00000000;
MB_DEFBUTTON2 = $00000100;
MB_DEFBUTTON3 = $00000200;
MB_DEFBUTTON4 = $00000300;

</delphi> El parámetro Flags de MessageBox está construido al añadir una constante botón [MB_OK..MB_RETRYCANCEL], una constante icono [MB_ICONHAND..MB_ICONINFORMATION] y una constante opcional, botón por defecto [MB_DEFBUTTON1..MB_DEFBUTTON3]

Los tipos que se utilizan en MessageDlg, los cuales necesitan parámetros AType de TMsgDlgType y AButtons de TMSgDlgButtons:


{ Definido en Dialogs.pp }

<delphi>

type
 TMsgDlgType    = (mtWarning, mtError, mtInformation,  mtConfirmation,
                   mtCustom);
 TMsgDlgBtn     = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,
                  mbAll, mbNoToAll, mbYesToAll, mbHelp, mbClose);
 TMsgDlgButtons = set of TMsgDlgBtn;
 

const
 mbYesNoCancel = [mbYes, mbNo, mbCancel];
 mbOKCancel = [mbOK, mbCancel];
 mbAbortRetryIgnore = [mbAbort, mbRetry, mbIgnore];
 

 MsgDlgBtnToBitBtnKind: array[TMsgDlgBtn] of TBitBtnKind = (
  bkYes, bkNo, bkOK, bkCancel, bkAbort, bkRetry, bkIgnore,
   bkAll, bkNoToAll, bkYesToAll, bkHelp, bkClose
  );


 BitBtnKindToMsgDlgBtn: array[TBitBtnKind] of TMsgDlgBtn = (
   mbOk, mbOK, mbCancel, mbHelp, mbYes, mbNo,
   mbClose, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToALl, mbYesToAll
   );


{ Definido en Controls.pp }
const
 mrNone = 0;
 mrOK = mrNone + 1;
 mrCancel = mrNone + 2;
 mrAbort = mrNone + 3;
 mrRetry = mrNone + 4;
 mrIgnore = mrNone + 5;
 mrYes = mrNone + 6;
 mrNo = mrNone + 7;
 mrAll = mrNone + 8;
 mrNoToAll = mrNone + 9;
 mrYesToAll = mrNone + 10;
 mrLast = mrYesToAll;

</delphi>


Esta página se ha importado desde el epikwiki version.