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
dlg := TOpenDialog.Create(Self);
try
if dlg.Execute then
begin
ShowMessage('Elegiste el archivo: ' + dlg.FileName);
end;
finally
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
if openDialog1.Execute then
begin
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.