Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Una mano con este procedure (https://www.clubdelphi.com/foros/showthread.php?t=75541)

Ledian_Fdez 31-08-2011 22:35:54

Una mano con este procedure
 
Hola estoy intentando hacer un procedimiento donde voy a utilizar un TOpenDialog, solo que quisiera llamar al procedimiento sin tener que insertarlo en mi formulario, lo intente con algo como esto pero no resultó. Les muestro:
:confused:

Código Delphi [-]
procedure ProcedimientoX();
 var
  OpenDialog : TOpenDialog;
begin
 OpenDialog.Create(nil);
 OpenDialog.Title := 'Guardar Salva.';
 OpenDialog.Execute;
 {
  .
  .
  .
 }
end;

Si alguien me pudiera dar una mano se lo agradeceria de igual forma.

oscarac 31-08-2011 22:39:36

dejame ver si entendi...
tener el procedimiento pero no incrustado en el form?

y si lo escribes en un fichero de procedimientos? tipo una libreria

cloayza 31-08-2011 23:00:24

Variante 1:
Código Delphi [-]
procedure ProcedimientoX();
 begin
     with TOpenDialog.Create(Nil) do
     begin
          Title:='OpenDialogo';
          Execute;
          Free;
     end;
end;

Variante 2:
Código Delphi [-]
procedure ProcedimientoX();
 var
  OpenDialog : TOpenDialog;
begin
 OpenDialog:=TOpenDialog.Create(nil);
 OpenDialog.Title := 'Guardar Salva.';
 OpenDialog.Execute;
 OpenDialog.Free;
end;
Saludos

Casimiro Notevi 31-08-2011 23:51:39

Por favor, Ledian_Fdez, recuerda poner títulos descriptivos a tus preguntas, gracias.

Chris 31-08-2011 23:56:10

A cómo ya te han dicho, tienes que declarar el procedimiento en una unidad aparte (opcionalmente). Por ejemplo:

Código Delphi [-]
unit mis_procedimientos

interface

procedure ProcedimientoX;

implementation

procedure ProcedimientoX;
var
    OpenDialog : TOpenDialog;
begin
    with OpenDialog.Create(nil) do
    try
        Title := 'Guardar Salva.';
        Execute;
        { . . . }
    finally
        Free;
    end;
end;

Luego, tienes que declarar, en la unidad dónde implementas el formulario, que utilice los procedimientos y demás cosas declaradas en la unidad mis_procedimientos. Esto se hace agregando el nombre de la unidad que quieres utilizar a la sección de "uses" de la unidad desde dónde deseas llamar a los procedimientos en mis_procedimeintos. Por ejemplo:

Código Delphi [-]
unit mi_formulario

uses Windows....

type
    TForm1 = Class(TForm)
        ...
    end;

implementation

uses mis_procedimientos; // <= aquí declaras que necesitas los procedimientos declarados en esta unidad.

    ...
    ...

end.

Espero que hallas entendido mi intento de explicación :)

Saludos,
Chris

Ledian_Fdez 01-09-2011 13:21:53

Problema resuelto!!!
 
Ok amigos mil grasias por su ayuda. Al sutituir esta linea:

Código Delphi [-]
OpenDialog.Create(nil);

Por esta otra:

Código Delphi [-]
OpenDialog.Create(nil);

me pincho !!!

Mil grasias

dec 01-09-2011 13:49:10

Cita:

Empezado por Ledian_Fdez (Mensaje 410571)
Ok amigos mil grasias por su ayuda. Al sutituir esta linea:

Código Delphi [-]
OpenDialog.Create(nil);

Por esta otra:

Código Delphi [-]
OpenDialog.Create(nil);

me pincho !!!

Mil grasias

Esto es como lo que suelen decir: ¡Si funciona no lo toques! :D

ElDioni 01-09-2011 14:23:31

Código Delphi [-]
if 'OpenDialog.Create(nil);'='OpenDialog.Create(nil);' then
  showmessage('normal que ahora funcione');

Saludos.

DarKraZY 01-09-2011 14:41:22

Cita:

Empezado por Ledian_Fdez (Mensaje 410571)
Al sutituir esta linea:

Código Delphi [-]
OpenDialog.Create(nil);

Por esta otra:

Código Delphi [-]
OpenDialog.Create(nil);

me pincho !!!

Mil grasias

Yo juraría que es la misma línea, ¿no?

Lo que estaba mal al principio es
Código Delphi [-]
procedure ProcedimientoX();
 var
  OpenDialog : TOpenDialog;
begin
 OpenDialog := TOpenDialog.Create(nil);
 OpenDialog.Title := 'Guardar Salva.';
 OpenDialog.Execute;
 {
  .
  .
  .
 }
end;

Ledian_Fdez 01-09-2011 16:14:06

Rectificando
 
Estas en lo cierto disculpa:

era de este:
Código Delphi [-]
OpenDialog.Create(nil);

por este:
Código Delphi [-]
OpenDialog := TOpenDialog.Create(nil);


salu2

ecfisa 01-09-2011 16:34:32

Hola Ledian_Fdez.

Siempre se debe llamar a un constructor desde la clase y no desde el objeto ya que este aún no ha sido creado.
Código Delphi [-]
var
  OpenDialog: TOpenDialog;
  Edit: TEdit;
begin
  with OpenDialog.Create(nil) do   // Error !!!
  with TOpenDialog.Create(nil) do  // Es correcto
  with Edit.Create(nil) do         // Error !!!
  with TEdit.Create(nil) do        // Es correcto
  ...
end;

Un saludo.


La franja horaria es GMT +2. Ahora son las 04:08:16.

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