lo mismo, solo que un poco mas simplificado ...
Código Delphi
[-]
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin;
type
TForm1 = class(TForm)
cbFunciones: TComboBox;
btnAdd: TButton;
btnEjecutar: TButton;
spin: TSpinEdit;
ListBox1: TListBox;
procedure btnAddClick(Sender: TObject);
procedure btnEjecutarClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
public
origen : array [0..5] of procedure of object;
lista : array [0..100] of procedure of object;
procedure funcion0;
procedure funcion1;
procedure funcion2;
procedure funcion3;
procedure funcion4;
procedure funcion5;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnAddClick(Sender: TObject);
begin
if cbFunciones.Text <> '' then
begin
ListBox1.Items.Add(cbFunciones.Text);
lista[spin.value] := Origen[cbFunciones.ItemIndex];
spin.value := ListBox1.Items.Count;
btnEjecutar.Enabled := true;
end;
end;
procedure TForm1.FormActivate(sender : TObject);
begin
Origen[0] := funcion0;
Origen[1] := funcion1;
Origen[2] := funcion2;
Origen[3] := funcion3;
Origen[4] := funcion4;
Origen[5] := funcion5;
end;
procedure TForm1.btnEjecutarClick(Sender: TObject);
var
i : integer;
begin
cbFunciones.Enabled := false;
btnEjecutar.Enabled := false;
for i := 0 to spin.Value - 1 do Lista[i];
ListBox1.Clear;
Spin.Value := 0;
btnAdd.Enabled := true;
cbFunciones.Enabled := true;
end;
procedure TForm1.funcion0;
begin
ShowMessage('Ejecutando la función 0');
end;
procedure TForm1.funcion1;
begin
ShowMessage('Ejecutando la función 1');
end;
procedure TForm1.funcion2;
begin
ShowMessage('Ejecutando la función 2');
end;
procedure TForm1.funcion3;
begin
ShowMessage('Ejecutando la función 3');
end;
procedure TForm1.funcion4;
begin
ShowMessage('Ejecutando la función 4');
end;
procedure TForm1.funcion5;
begin
ShowMessage('Ejecutando la función 5');
end;
end.
;
saludos
PD : seguro que hay tambien alguna manera de hacer
Código Delphi
[-]
...
for i := 0 to max_ori do
Origen[i] := GetFunctionByName('funcion'+inttostr(i));
...
para ya rizar el rizo
