Tema: TopenDialogs
Ver Mensaje Individual
  #6  
Antiguo 15-01-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Reputación: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El componente "TOpenDialog" es los llamados "no visuales" porque no aparece en el formulario donde lo sitúas, así como aparecen otros componentes como "TEdit", "TButton", etc. Estos últimos los sitúas en un formulario y puedes verlos tanto en tiempo de diseño como en tiempo de ejecución de tu programa. Los componentes "no visuales" aparecen como una especie de "icono" en el formulario en tiempo de diseño y no aparecen en tiempo de ejecución.

Bien. Los componentes "no visuales", con todo y no aparecer en el formulario en tiempo de ejecución tienen su utilidad y un ejemplo puede ser el componente "TOpenDialog" del que venimos hablando. Este componente en concreto se utiliza para dar la posibilidad al usuario de seleccionar un archivo (o varios) utilizando el diálogo estándar de Windows para estos menesteres.

¿Cómo se utiliza este componente? Básicamente tienes que ajustar ciertas propiedades relativas a sus opciones y posibilidades antes de utilizarlo. A continuación ejecutar el método "Execute", que se encarga de todo: mostrando al usuario el diálogo estándar de que hablamos permitiéndole seleccionar uno o más archivos.

El método "Execute" es un una función que devolverá "True" o "False". En el primer caso significará que el usuario ha elegido un archivo, y en el segundo caso significará que el usuario ha "cancelado" el diálogo para elegir archivos, es decir, ha preferido no elegir ningún archivo, dejarlo para más tarde,... como lo quieras ver. El caso es que en caso de que el método "Execute" del componente "TOpenDialog" retorne "True" significa que puedes recurrir a la propiedad "FileName" del componente, que contendrá la ruta del archivo seleccionado por el usuario.

Ahora bien. ¿Dónde tienes que utilizar el método "Execute" del componente "TOpenDialog"? ¡Pues donde lo necesites! Puedes tener en el formulario una casilla, un componente "TEdit" en el que quieres que el usuario escriba la ruta de un archivo que luego utilizarás para lo que sea menester. Para ayudar al usuario puedes situar al lado de la casilla un botón ("TButton") y en el evento "OnClick" de este botón codificar las instrucciones para mostrar el componente "TOpenDialog" en acción.

Es decir:

Código Delphi [-]
procedure TForm1.Button1OnClick(Sender: TObject);
var
  dlg: TOpenDialog;
begin
  // Instanciamos el componente "TOpenDialog"
  dlg := TOpenDialog.Create(Self);
  try
    // E invocamos a su método "Execute", es decir, mostramos el
    // cuadro de diálogo para que el usuario pueda elegir un archivo
    if dlg.Execute then
    begin
      // Llegados aquí ("Execute" retornó "True) contamos con la ruta
      // del archivo seleccionado por el usuario: en la variable "FileName"
      ShowMessage('Elegiste el archivo: ' + dlg.FileName);
    end;
  finally
    // Liberamos la instancia del "TOpenDialog"
    dlg.Free;
  end;
end;

Como ves utilizamos el evento "OnClick" para crear una instancia del componente "TOpenDialog" que utilizamos a continuación. Se entiende que en nuestro formulario "Form1" no situamos ningún componente "TOpenDialog", puesto que estamos declarando una variable, instanciando la clase, etc., en el propio evento "OnClick" del botón de marras.

También podías haber situado en el formulario el componente "TOpenDialog", de manera que pudieras aprovecharte del Inspector de Objetos de Delphi para configurarlo, esto es, para asignar los valores que te interesen a las propiedades del componente. En este caso el código anterior podría reducirse a lo siguiente, puesto que usaríamos directamente la instancia del componente situado en tiempo de diseño en el formulario:

Código Delphi [-]
procedure TForm1.Button1OnClick(Sender: TObject);
begin
  // Invocamos a su método "Execute", es decir, mostramos el
  // cuadro de diálogo para que el usuario pueda elegir un archivo
  if openDialog1.Execute then
  begin
    // Llegados aquí ("Execute" retornó "True) contamos con la ruta
    // del archivo seleccionado por el usuario: en la variable "FileName"
    ShowMessage('Elegiste el archivo: ' + dlg.FileName);
  end;
end;

No se me ocurren más que decirte ahora mismo, porque tampoco quiero darle a esto demasiadas vueltas: verás que no las tiene en cuanto te hagas con "el truco" y no tardarás mucho, estoy seguro.

Aún así si quieres hacer algún comentario ya sabes dónde estamos.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita