Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Llamar de una función a otra (https://www.clubdelphi.com/foros/showthread.php?t=44390)

jorgegetafe 05-06-2007 15:18:28

Llamar de una función a otra
 
Saludos, tengo este procedimiento que es para guardar un archivo:



Código Delphi [-]
PROCEDURE TForm1.Guardar1Click(Sender: TObject);                                // guardar
  VAR
    rutaArchivo: STRING;
    Res: integer;
    CanClose: Boolean;
  BEGIN
    WITH TSaveDialog.Create(NIL) DO
      BEGIN
        TRY
          IF Execute THEN
            rutaArchivo := FileName;
          FINALLY
            Free;
        END;
      END;
      IF FILEEXISTS (rutaArchivo) THEN
        BEGIN
          Res := MessageBox(0, '¿Desea reemplazar el archivo?', 'Advertencia', MB_ICONINFORMATION or MB_YESNOCANCEL);
          case Res of
            IDYES:
              begin
                CanClose := True;                           // sobreescribir
                guardar (rutaArchivo,Pantalla);
              end;
            IDNO:
              begin
                CanClose := False;                         // no sobreescribir
                TForm1.Guardar1Click(Sender);        // DA ERROR!!!!!!
              end;
            IDCANCEL:
              begin
                CanClose := False;                        // cancelado
            end;
          END;
        end
      ELSE
        guardar (rutaArchivo,Pantalla);
  end;





Lo que pasa es que me aparece un error, en la linea en la que tengo puesto:


TForm1.Guardar1Click(Sender);

me dice: "This form of method call only alloweb for class methods"

¿Como puedo llamar a dicho procedimiento? Gracias.

Neftali [Germán.Estévez] 05-06-2007 15:32:49

Código Delphi [-]
  TForm1.Guardar1Click(Sender);

TForm1 es una clase, no una instancia.

Cambialo por

Código Delphi [-]
  Self.Guardar1Click(Sender);

o símplemente por:

Código Delphi [-]
  Guardar1Click(Sender);

Supongo que problema del Copy&Paste... ;)

jorgegetafe 05-06-2007 15:33:43

Ok muchas gracias.

fdelamo 05-06-2007 15:34:11

Hola,

no se debe poner TForm1.Guardar1Click(), ya que TForm1 es una clase, debes poner el nombre del objeto, en tu caso seguramente form1, y tu caso específico, no hace falta que pongas nada delante del Guardar1Click, ya que lo estás llamando desde dentro del objeto.

Espero que te aclare algo esto ...

jorgegetafe 05-06-2007 15:34:59

Si, ya me ha quedado claro. Gracias a ti tambien.

dec 05-06-2007 15:51:57

Hola,

Por otro lado podías mirar en las opciones del diálogo para guardar archivos. Existe una opción que hará que el propio sistema se encargue de preguntar al usuario si quiere sobrescribir un archivo existente. No tendrás que codificar nada en absoluto, por tanto.

Lo que veo raro es que creo que esta opción viene dada por defecto, así que no entiendo cómo no te topaste con ella...

PD. Revisa la propiedad "Options" del componente "TSaveDialog".

jorgegetafe 05-06-2007 15:53:19

Tal y como esta el codigo pasa olimpicamente de si el archivo esiste o no, lo he tenido que poner yo a mano.


La franja horaria es GMT +2. Ahora son las 15:28:54.

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