PDA

Ver la Versión Completa : Repetir varias funciones y salir


mosco
03-11-2012, 12:42:56
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:

http://www.clubdelphi.com/images/UtilizarTAGs.png

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:

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:

...
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,


quiero hacer que se ejecuten varias funciones dentro de un procedimiento y salir cuando pulse otro boton:

Revisa este código:

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.