Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Repetir varias funciones y salir (https://www.clubdelphi.com/foros/showthread.php?t=81323)

mosco 03-11-2012 12:42:56

Repetir varias funciones y salir
 
Esta puede ser una pregunta basica pero yo no se como resolverla. Llevo poco tiempo con DELPHI. La cuestion es que quiero hacer que se ejecuten varias funciones dentro de un procedimiento y salir cuando pulse otro boton:

procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Clear;
BorraBuffer;
EnviaDatos();
RecibeDatos;
end;

He probado con repeat...until pero no lo he conseguido.

Casimiro Notevi 03-11-2012 15:26:58

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

mosco 03-11-2012 16:58:25

Disculpas por no pegar el codigo correctamente. No llevo mucho tiempo por aquí, ya lo pego a continuacion para ir practicando:

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
  begin
       Memo1.Clear;
      BorraBuffer;
      EnviaDatos();
      RecibeDatos;
   end;

Ahora si....

Gracias.

ecfisa 03-11-2012 17:30:53

Hola mosco.

Una posibilidad es:
Código Delphi [-]
...
procedure TForm1.btnComenzarClick(Sender: TObject);
begin
  repeat
    Memo1.Clear;
    BorraBuffer;
    EnviaDatos();
    RecibeDatos;
    Application.ProcessMessages;
  until btnTerminar.Tag = -1;
  btnTerminar.Tag := 0;
end;

procedure TForm1.btnTerminarClick(Sender: TObject);
begin
  btnTerminar.Tag:= -1;
end;
...

Saludos.

nlsgarcia 03-11-2012 17:43:13

mosco,

Cita:

Empezado por mosco (Mensaje 448597)
quiero hacer que se ejecuten varias funciones dentro de un procedimiento y salir cuando pulse otro boton:

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  // Declara los procedimientos y funciones a ejecutar
 
  Procedure Procedimiento1();
  Procedure Procedimiento2();
  Function Funcion1(Param1 : Integer) : Integer;
  Function Funcion2(Param2 : Integer) : Integer;

var
  Form1: TForm1;
  CancelLoop : Boolean;

implementation

{$R *.dfm}

// Implementa los procedimientos y funciones a ejecutar

Procedure Procedimiento1();
begin
   // Codigo a ejecutar
end;

Procedure Procedimiento2();
begin
   // Codigo a ejecutar
end;

Function Funcion1(Param1 : Integer) : Integer;
begin
   // Codigo a ejecutar
   Result := Param1; // Devuelves el valor que calculastes en el código
end;

Function Funcion2(Param2 : Integer) : Integer;
begin
   // Codigo a ejecutar
   Result := Param2; // Devuelves el valor que calculastes en el código
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   F1 : Integer;
   F2 : Integer;
   Param1 : Integer;
   Param2 : Integer;

begin

   CancelLoop := False;

   // Carga los paramtros de inicio de las funciones de ejemplo
   Param1 := StrToInt(Edit1.text);
   Param2 := StrToInt(Edit1.text);

   // El Ciclo se repite hasta que la variable CancelLoop sea true
   repeat

      // Lee eventos externos al loop para permitir su cancelación
      Application.ProcessMessages;

      // Ejescuta varias funciones y procedimientos
      Procedimiento1;
      Procedimiento2;
      F1 := Funcion1(Param1);
      F2 := Funcion2(Param2);

   until CancelLoop;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   // Cambia el valor de la variable CancelLoop a True y cancela el loop repeat
   CancelLoop := True;
end;

end.
El código anterior se explica por si mismo.

Espero sea útil :)

Nelson.

mosco 03-11-2012 20:52:57

Gracias ecfisa y Nelson. Funciona perfecto. Sin vuestra ayuda no se lo que hubiera tardado en implementarlo.

Saludos.


La franja horaria es GMT +2. Ahora son las 11:45:56.

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