Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-12-2007
Avatar de linuz
linuz linuz is offline
Miembro
 
Registrado: sep 2004
Posts: 88
Poder: 20
linuz Va por buen camino
Datos objeto

Hola a todos,

Estoy creando una aplicación donde creo paneles en tiempo de ejecución.

Código Delphi [-]
 
{public declarations}
 boton:TPanel;
.....
procedure TForm1.FormCreate(Sender: TObject);
var
i,j,k: integer;
  i := 0;
  j:= 1;
  k:= 0;
  while i <12 do
    begin
      i := i +1;
      boton := TPanel.Create(Self);
      boton.parent := Panel2;
      boton.left := 61;
      boton.Left := boton.Left* i;
      boton.Width := 60;
      boton.top :=  1;
      boton.Caption:= inttostr(i) + ':00';
      boton.OnClick := Clic;
end;
end;

procedure TForm1.clic(Sender: TObject);
begin
...
end;


Tengo una duda, y es que los objetos los crea bien, pero no se como poder hacer que cuando se haga clic sobre un objeto sepa que objeto ha sido, es decir, conocer su nombre, su caption, etc...


Muchas gracias.

Un saludo.
Responder Con Cita
  #2  
Antiguo 07-12-2007
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola linuz, cuando creas cada panel puedes asignar la propiedad Tag a cada TPanel asi podras identificar sobre cual se hizo click y seria bueno que le dieras un nombre a cada Panel.

Código Delphi [-]

  while i <12 do
    begin
      i := i +1;
      boton := TPanel.Create(Self);
      boton.parent := Panel2;
      boton.Name := 'Boton'+IntToStr(i);
      boton.left := 61;
      boton.Left := boton.Left* i;
      boton.Width := 60;
      boton.top :=  1;
      boton.Caption:= inttostr(i) + ':00';
      boton.Tag := i;
      boton.OnClick := Clic;
     end;

.........

procedure TForm1.clic(Sender: TObject);
begin
 case TPanel(Sender).Tag of
  1: showmessage('Se ha presionado en '+TPanel(Sender).Name);
  2: showmessage('Se ha presionado en '+TPanel(Sender).Name);
  3: showmessage('Se ha presionado en '+TPanel(Sender).Name);
  4: showmessage('Se ha presionado en '+TPanel(Sender).Name);
  5: showmessage('Se ha presionado en '+TPanel(Sender).Name);
  ....
  ..... 
 end;
end;

saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 07-12-2007 a las 14:01:52.
Responder Con Cita
  #3  
Antiguo 07-12-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
El nombre no se lo estas aignando pero el caption si:

Código Delphi [-]
procedure TForm1.clic(Sender: TObject);
begin
if Sender is TPanel then
   ShowMessage(TPanel(Sender).Caption);
end;

Me gano CARO en velocidad
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela

Última edición por eduarcol fecha: 07-12-2007 a las 13:59:52.
Responder Con Cita
  #4  
Antiguo 07-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Código Delphi [-]

procedure TForm1.clic(Sender: TObject);
begin
with TPanel(Sender) do 
 showmessage('Se ha presionado en '+TPanel(Sender).Name);
end;

En realidad no hace falta el .Tag, ya que el "Sender" es el propio botón donde se ha hecho clic.

Es un método ampliamente usado en Delphi. Si tienes un TEdit, en su evento OnClick el Sender es ese Edit en Cuestión, Si tienes un Form, en el evento OnClick, el parámetro Sender es ese Form.

Como en Delphi todo se basa en la Clase TObject (casi todo hereda de TObject), se puede pasar cualquier instancia de objeto (Tedit, Tbutton, Tpanel, TForm, etc) camuflado en el parámetro Sender.

Por definición: el Sender es el objeto que ha lanzado el evento.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 07-12-2007
Avatar de linuz
linuz linuz is offline
Miembro
 
Registrado: sep 2004
Posts: 88
Poder: 20
linuz Va por buen camino
Muchas gracias a todos por vuestra ayuda, ha funcionado a la perfección.
Os debo una cerveza o un vinito así que pasaros por la taberna que esta vez invito yo a una ronda.


Un saludo.
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
Objeto Ole omy Varios 0 03-02-2006 21:40:32
Intalacion y uso de objeto COM hunabku Providers 0 03-02-2006 20:43:08
Duplicar un Objeto Fita SQL 5 01-05-2005 15:14:33
objeto ole omy Varios 6 05-11-2003 18:15:54
Crear un objeto? danytorres Varios 1 28-07-2003 19:39:12


La franja horaria es GMT +2. Ahora son las 15:03:12.


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