Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-03-2010
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
ButtonGroup Onclic en Ejecucion

Hola.

Quisiera saber si es posible al momento de adicionar nuevos botones al componente ButtonGroup asignarle el proceso que debe realizar cuando le den clic, todo esto en tiempo de ejecución, hasta ahora creo el botón pero no se como agregarle el evento onclic.

Código Delphi [-]
BtnGroup.Items.Add.Caption := Form2.Caption;
BtnGroup.Items[BtnGroup.Items.Count-1].OnClick(); //Aqui es donde quisiera que abriera o activara una ventana

Agradezco el tiempo....
Responder Con Cita
  #2  
Antiguo 18-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Hola subzero.
Lo que vos necesitás es asignarle un evento al botón.
Te doy un pequeño ejemplo para que entiendas.
Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure FormActivate(Sender: TObject);
    {Importantísimo agregarlo como un evento perteneciente al formulario}
    procedure ClickDelBoton(Sender:TObject);
    {Si lo hacés como un procedimiento normal, da error por el tipo}
    {Un evento es TNotifyEvent y un procedimiento no es más que un procedure}
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ClickDelBoton(Sender:TObject);
begin
  ShowMessage('El botón que me llamó dice '+TButton(Sender).Caption+' en su Caption.');
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  Button1.OnClick:=ClickDelBoton;
  Button2.OnClick:=ClickDelBoton;
  Button3.OnClick:=ClickDelBoton;
end;

end.

Saludos!
Responder Con Cita
  #3  
Antiguo 18-03-2010
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
BrunoBsso, te agradezco tu aporte estuve analizando el ejemplo que me enviaste pero el comportamiento del componente ButtonGroup es diferente pués como te puedes dar cuenta es un contenedor de botones en el cual se crean como si fuese in listbox, y yo los estoy creando en tiempo de ejecución. Este comoponente no posee la caracteristica para colocarle el nombre al botón los adiciona como un item. Voy a seguir revisando y cualquier otra idea que se te ocurra seria de mucha ayuda.
Responder Con Cita
  #4  
Antiguo 18-03-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Con la respuesta de BrunoBsso tienes el 98% resuelto. Ya sólo fíjate que cada ítem del ButtonGroup también tiene su evento OnClick.

// Saludos
Responder Con Cita
  #5  
Antiguo 18-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Es que para utilizarlo con un ButtonGroup tenés que hacer un casting con los items del grupo.
GrupoBotones.Items[X].OnCLick:=ClickDelBoton;
Es exactamente lo mismo porque cada item del grupo es de tipo TButton.
Saludos.
Responder Con Cita
  #6  
Antiguo 18-03-2010
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
no fucniona pués lo que recibe el sender no es un TButton sino un TGroupButton.... en el mensaje no me muestra el caption del componente.
Responder Con Cita
  #7  
Antiguo 18-03-2010
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Revisando un poco el componente TButtonGroup tiene un método llamado ButtonClicked el cual tiene un parámetro llamado Index el cual es de mucha utilidad pues de esta manera se puede conocer que botón esta siendo presionado, ahora solo me queda entender como eliminar los botones en tiempo de ejecucion.....
Responder Con Cita
  #8  
Antiguo 18-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Bueno, corrijo todo lo que dije antes.
Vamos desde cero.
Hola subzero, acá traigo tu respuesta.
Código Delphi [-]
type
  TForm1 = class(TForm)
    Grupo: TButtonGroup;
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ClickBoton(Sender: TObject); //Declarar un evento para los botones
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ClickBoton(Sender: TObject); //Implementar ese evento
begin
  ShowMessage('Yo soy un botón');
end;

procedure TForm1.FormActivate(Sender: TObject);
var
  I:Integer;
begin
  for I := 0 to Grupo.Items.Count-1 do
    Grupo.Items[i].OnClick:=ClickBoton; //Asignarselo a los botones
end;
Intenté usar las propiedades del Sender en ClickBoton, pero siempre tira error o muestra la propiedad vacía(ojo, estuve haciendo casting de tipo TGrpButtonItem(Sender) así que eso está bien).
Por ejemplo, si querés mostrar el caption en ese evento, te lo muestra vacío.
Es raro, se me acabaron las ideas hasta que vuelva a mi casa.
Pero por lo menos ahí tenés como asignarle un evento en tiempo de ejecucíon.
Es lo mismo que como te lo había dicho antes, pero sin hacer casting
Nos vemos.
Responder Con Cita
  #9  
Antiguo 18-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Cita:
Empezado por subzero Ver Mensaje
Revisando un poco el componente TButtonGroup tiene un método llamado ButtonClicked el cual tiene un parámetro llamado Index el cual es de mucha utilidad pues de esta manera se puede conocer que botón esta siendo presionado, ahora solo me queda entender como eliminar los botones en tiempo de ejecucion.....
Depende de con qué criterio los elimines.
Podés borrar el clickeado de esta forma:
Código Delphi [-]
procedure TForm1.GrupoButtonClicked(Sender: TObject; Index: Integer);
begin
  ShowMessage('¡Me van a borrar!');
  Grupo.Items.Delete(Index);
end;
Responder Con Cita
  #10  
Antiguo 18-03-2010
pabloloustau pabloloustau is offline
Miembro
 
Registrado: dic 2009
Posts: 56
Poder: 15
pabloloustau Va por buen camino
en vez de eliminarlos ponelos invisibles.
visible en false.
Responder Con Cita
  #11  
Antiguo 18-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Los TGrpButtonItem no tiene esa propiedad.
En tu ButtonGroup agregá una botón (en diseño), seleccioná ese botón y fijate las propiedades que tiene.
No podés trabajar con propiedades que no existen. No es lo mismo un TGrpButtonGroup que un TButton.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con ejecución de DTS grotero76 Conexión con bases de datos 4 20-09-2007 20:05:07
ejecucion en DOS nazly Varios 6 27-01-2006 17:34:43
Problema de ejecucion. zugazua2001 Varios 0 07-07-2005 04:45:52
Ejecución de Sql jzk Conexión con bases de datos 1 12-11-2004 16:30:20
Ejecucion de un programa en una PC silviodp Varios 3 23-01-2004 01:53:09


La franja horaria es GMT +2. Ahora son las 17:14:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi