Ver Mensaje Individual
  #7  
Antiguo 21-06-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Reputación: 0
coso Va por buen camino
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
    { Private declarations }
  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

Última edición por coso fecha: 21-06-2008 a las 16:44:00.
Responder Con Cita