Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   TopenDialogs (https://www.clubdelphi.com/foros/showthread.php?t=39241)

fasthorse 14-01-2007 16:12:47

TopenDialogs
 
Cuando creo en c++builder un TopenDialogs, a la hora de ejecutar el programa no me aparece, ¿por qué? ¿qué debo de hacer para que me aparezca?
Gracias.

dec 14-01-2007 17:01:01

Hola,

El componente que mencionas es de tipo "no visual". Ahora bien, puedes utilizar el método "Execute" con que cuenta dicho componente para mostrar al usuario el diálogo de marras. La cosa es más o menos así en Delphi, y, en C++ Builder similar, salvando las diferencias de sintaxis de los lenguajes:

Código Delphi [-]
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;

fasthorse 15-01-2007 16:36:07

Hola, pero...¿dónde tengo que escribir ese código? es que en un Tbutton por ej, si lo pincho se me abre como su código para escribir, pero en este caso me sale como para abrir un archivo, es decir, la función que debe de hacer, y entonces no se donde ponerlo.
Gracias

roman 15-01-2007 18:03:00

El código debes colocarlo desde donde quieras que el usuario abra el cuadro de diálogo. Por ejemplo, colocas un Button en el formulario y en su evento OnClick (doble clic sobre el botón) escribes el código de dec.

// Saludos

fasthorse 15-01-2007 19:52:12

Hola, siento si soy pesada, pero es que no me aclaro,a ver yo quiero crear un TopenDialogs y se que es no visible para el usuario y quiero que lo sea. Para ello debo de escribir el código que me habéis puesto( bueno pero en c++builder) mi duda es que donde lo escribía... porque es que creo o al menos no se cómo, que el TopenDialogs no tiene la opción de escribir código cuando el usuario teclee el botón, como en un Tbottom, no?
Y digo bueno, pues creo un boton normal con Tbottom en vez de un TopenDialogs y escribo el código, pero ese código hace referencia al TopenDialogs...¿Qué haría entonces?? Creo que estoy un poco liada... y no con certeza si está bien todo lo que he dicho, si no es así aclararme y decidme como es por favor.
Gracias.
Saludos...

dec 15-01-2007 20:32:33

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.

fasthorse 16-01-2007 00:38:34

ok, muchas gracias, ya tengo las cosas claras, lo entiendo, me voy a poner a hacerlo a ver si me sale algo.
Muchas gracias...
Un saludo


La franja horaria es GMT +2. Ahora son las 11:20:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi