Ver Mensaje Individual
  #8  
Antiguo 29-07-2007
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 608
Reputación: 21
mRoman Va por buen camino
Crear botones en ejecucion

Cita:
Empezado por Caral
Hola
No se si sera esto lo que preguntas, pero para saber que boton presionaste es solo cuestion de definir el nombre de la variable, algo asi:
Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure OnButton1Click(Sender: TObject);
    procedure OnButton2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Button1,Button2: TButton;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
    Button1:= TButton.Create(Self);
    Button1.Parent := Self;
    Button1.Caption := 'Botón';
    Button1.Left:= 20;
    Button1.Top:= 10;
    Button1.OnClick := OnButton1Click;

    Button2:= TButton.Create(Self);
    Button2.Parent := Self;
    Button2.Caption := 'Botón';
    Button2.Left:= 100;
    Button2.Top:= 10;
    Button2.OnClick := OnButton2Click;
end;

procedure TForm1.OnButton1Click(Sender: TObject);
begin
  ShowMessage('Presionaste el boton 1!');
end;

procedure TForm1.OnButton2Click(Sender: TObject);
begin
  ShowMessage('Presionaste el boton 2!');
end;

end.
Como veras, aqui estan el boton 1 y el dos declarados y tienen un diferente evento OnClick.
Espero que te sirva.
Saludos
Si, Gracias CARAL por tu ayuda....pero ya lo resolvi, resulta q no sabia utilizar el SENDER del procedimiento....te comento q estoy creando botones en tiempo de ejecucion, por cada SERVICIO de lavanderia que registre el usuario es un boton, la solucion q me propones, y la cual se agradece, no me podria servir de mucho, ya que necesito dejar abierto la cantidad de botones, habra tantos de ellos como servicios haya creado el usuario.

En si lo servicios no pasaran de 10....pongo la forma en como lo solucione, para ti -si en algo te ayuda- y todos los q consultan este club.

GRACIAS !
Solucion:
Código Delphi [-]
procedure TfrmRegServicios.FormShow(Sender: TObject);
Var
PosY:Integer;
begin
   gBoxTipoServicio.Caption:='';
   qryServicios.Close;
   qryServicios.Open;
   PosY:=100;
   n:=1;
   While not qryServicios.Eof do
   begin
      Botones[n]:=TButton.Create(Self);
      with Botones[n] do
      begin
          Caption:=qryServicios.fieldbyname('DESCRIPCION').AsString;
          Parent:=self;
          Height:=71;
          Top:=PosY;
          PosY:=PosY+Height+10;
          Left:=16;
          Width:=97;
          OnClick:=OnButtonClick;
          Name:='btn'+IntToStr(n);
          Tag:=qryServicios.fieldbyname('CLAVE_SERVICIO').AsInteger;
      end;
      qryServicios.Next;
      inc(n);
   end;

end;

procedure TfrmRegServicios.OnButtonClick(Sender:TObject);
var
nServicio:Integer;
begin
    with Sender as tButton do begin
       nServicio:=(Sender as tButton).Tag;
       gBoxTipoServicio.Caption:=(Sender as tButton).Caption;
    end;    
    qryPrenda.Close;
    qryPrenda.ParamByName('SERVICIO').AsInteger:=nServicio;
    qryPrenda.Open;
    qryPrenda.FetchAll;
end;

procedure TfrmRegServicios.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   Action:=caFree;
end;

Lo resaltado con rojo es lo q andaba buscando !....SALUDOS !
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 29-07-2007 a las 03:36:27.
Responder Con Cita