Ver Mensaje Individual
  #9  
Antiguo 27-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Reputación: 22
andres1569 Va por buen camino
Hola:

Puedes hacer varias cosas, como asignar el nombre del botón, nada más crearlo, o bien asignarle a su propiedad tag (que para este tipo de trucos está), el número de botón:
Código:
var 
  boton : Array [0..x valor] of TBooton;
  n : Integer;
begin
  n := n+1;
  Boton[n] := TButton.create;
  Boton[n].parent := Self
  Boton[n].onclick := otro procedimiento;
// esto puede ser peligroso si ya hay otro con el mismo nombre
// aunque normalmente Delphi omite la T inicial del nombre
// de la clase y en nuestro caso la dejamos tal cual
  Boton[n].Name := TButton.ClassName + IntToStr(n); 
// este truco es mejor, y más inmediato para identificarlo luego
  Boton[n].Tag := n + 1; // para que numere a partir de 1
end;

// cuando se hace click a un botón, si hemos usado Tag
procedure OtroProcedimiento (Sender: TObject);
begin
  Case TButton(Sender).Tag of
    1 : HazEsto;
    2 : HazLoOtro;
    ...
    end;
end;

ó bien

// cuando se hace click a un botón, si hemos usado Name
procedure OtroProcedimiento (Sender: TObject);
var
  s : String;
  N : Integer;
begin
  s := TButton(Sender).Name;              // Ej: s = 'TButton12'
  Delete (s, 1, Length(TButton.ClassName));  // Ej: s = '12'
  N := StrToInt(s);                       // Ej: N = 12
  Case N of
    0 : HazEsto;
    1 : HazLoOtro;
    ...
    end;
end;
Yo usaría la propiedad tag; lo de numerarla a partir de 1 es porque todos los componentes tienen tag = 0 por defecto, así lo diferenciamos, aunque es más bien una manía seguramente innecesaria, supongo que sólo los botones que crees en tiempo de ejecución accederán a ese procedimiento.
__________________
Guía de Estilo

Última edición por andres1569 fecha: 27-07-2003 a las 07:50:39.
Responder Con Cita