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 11-07-2011
gersonmaba gersonmaba is offline
Miembro
 
Registrado: may 2008
Posts: 34
Poder: 0
gersonmaba Va por buen camino
Hola Al González,

Muchisimas Gracias, por tu respuesta tan completa.

Y mil Gracias por la correccion de ortografia, la verdad tengo serios problemas con eso, lo tendre muy encuenta.

Gracias.
Responder Con Cita
  #2  
Antiguo 11-07-2011
gersonmaba gersonmaba is offline
Miembro
 
Registrado: may 2008
Posts: 34
Poder: 0
gersonmaba Va por buen camino
Muchachos de nuevamente los saludo,

Debido a la forma en la que estoy creando objetos en tiempo de ejecución nacieron dos nuevas preguntas.
Como hago referencia a un objeto creado en tiempo de ejecución? , Es decir que cuando presionen un botón yo vaya y tome el valor que está en un objeto que cree en tiempo de ejecución..

Y la otra pregunta es, Como manejo o le asigno eventos a un objeto creado en tiempo de ejecicion, por ejemplo un onexit o un onchange.
Les agradezco cualquier tipo de colaboración.

Gracias
Responder Con Cita
  #3  
Antiguo 11-07-2011
gersonmaba gersonmaba is offline
Miembro
 
Registrado: may 2008
Posts: 34
Poder: 0
gersonmaba Va por buen camino
Hola Muchahos, ya e avanzado un poco un la segunda pregunta, cuando estoy creado el objeto le asigno el evento.


TextDinamico.OnExit:= ComponentesOnExit();


Y obviamente creo el procedimiento previamente


procedure ComponentesOnExit(Sender: TObject);


Pero mi gran pregunta ahora es, como hacer referencia a las propiedades, del objeto del que envie el evento por ejemplo al name..o alguna otra propiedad.

procedure TFrm1.ComponentesOnExit(Sender: TObject);
begin
// aquí como hago referencia a las propiedades..por ejemplo al name, o al text o a cualquer otro
end;


Gracias
Responder Con Cita
  #4  
Antiguo 11-07-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Te pongo un ejemplo sencillo de como podés manejar los objetos creados en ejecución.
Código Delphi [-]
...
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Contnrs;

type
  TForm1 = class(TForm)
    btnLlama: TButton;
    procedure FormShow(Sender: TObject);
    procedure btnLlamaClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    FObjLst: TObjectList;
    function GetCmpt(AName: string): TComponent;
    procedure EditEnter(Sender: TObject);
    procedure EditExit(Sender: TObject);
  public
  end;

var
  Form1: TForm1;

implementation {$R *.dfm}

procedure TForm1.EditEnter(Sender: TObject);
begin
  ShowMessage('Edit Enter');
end;

procedure TForm1.EditExit(Sender: TObject);
begin
  ShowMessage('Edit Exit');
end;

{ Devuelve el componente dado el nombre }
function TForm1.GetCmpt(AName: string): TComponent; 
var
  i: Integer;
begin
  Result:= nil;
  for i:= 0 to FObjLst.Count -1 do
    if TEdit(FObjLst.Items[i]).Name = AName then
      Result:= TComponent(FObjLst.Items[i]);
end;

procedure TForm1.FormShow(Sender: TObject);
var
  TE: TEdit;
  i: Integer;
begin
  FObjLst:= TObjectList.Create;
  for i:= 1 to 5 do  // Crear 5 Edits
  begin
    TE:= TEdit.Create(Self);
    with TE do
    begin
      Name:= 'Edit'+IntToStr(i);
      Width:= 150;
      Height:= 25;
      Left:= 8;
      Top:= i*25+30;
      OnEnter:= EditEnter; // Asignar evento OnEnter
      OnExit:= EditExit;   // Asignar evento OnExit 
      Parent:= Self;
      FObjLst.Add(TE)
    end;
  end;
end;

procedure TForm1.btnLlamaClick(Sender: TObject);
var
  i: Integer;
begin
  // Poner Text = '' en los TEdits creados
  for i:= 0 to FobjLst.Count-1 do
   if Assigned(GetCmpt('Edit'+IntToStr(i+1))) then
     TEdit(GetCmpt('Edit'+IntToStr(i+1))).Text:= '';
  // Poner un texto en Edit1
  if Assigned(GetCmpt('Edit1')) then
    TEdit(GetCmpt('Edit1')).Text:= 'PRUEBA DE TEXTO';
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FObjLst.Free;  // Liberar memoria
end;
...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 11-07-2011
gersonmaba gersonmaba is offline
Miembro
 
Registrado: may 2008
Posts: 34
Poder: 0
gersonmaba Va por buen camino
Hola, ecfisa

Muchas gracias, por tu colaboracion, Osea creo que entendi tu codigo, pero no veo la forma muy clara de adaptarlo a mi necesidad. para capturar una propiedad en un evento.
Código Delphi [-]
procedure TForm1.EditEnter(Sender: TObject);
 begin 

// como Capturo aqui por ejemplo el NAME o el TEXT del 
//objeto Edit en el cual se dio Enter. 

end;

Última edición por ecfisa fecha: 11-07-2011 a las 19:01:33. Razón: ETIQUETAS [DELPHI] [/DELPHI]
Responder Con Cita
  #6  
Antiguo 11-07-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Código Delphi [-]
procedure TForm1.EditEnter(Sender: TObject);
begin
  with TEdit(Sender) do
    ShowMessage(Name + #10#13 + Text + #10#13 + ClassName + #10#13 + IntToStr(Left) + #10#13 +  // ...
    );
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 11-07-2011 a las 18:42:11.
Responder Con Cita
  #7  
Antiguo 11-07-2011
gersonmaba gersonmaba is offline
Miembro
 
Registrado: may 2008
Posts: 34
Poder: 0
gersonmaba Va por buen camino
Hola

ecfisa, Muchas Gracias, por tu gran colaboracion, pero tengo una ultima pregunta, necesito tambien obtener las propiedades de otro objetos creados dinamicamente. de la forma en la que lo lo estoy haciendo es, muy larga y me gustaria saber si ahi una solucion mas puntual o mas inteligente. pues es mi primera vez trabajando de este modo. lo hago de la siguiente forma.

For i:=ComponentCount -1 downto 0 do // Recorro Todos Los Componentes del FORM
begin
if (Components[i].Name = 'cxDBLC_Base') or (Components[i].Name = 'cxDBLC_Fac') // Resulta que esto puede ser 1 o mucho de acuerdo a lo que el usuario escoja.
Components[i].text;
end;

Es que quiero explorar otra solucion, pues esta me parece un poco pesada ejecutar y armar los nombres(Traidos de la BD) cada vez que se ejecute el evento. no ahi alguna forma mas puntual. Muchas Gracias.
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
Problemas con Variant Mystery Varios 3 27-01-2010 20:26:10
String to Variant MaMu Varios 2 25-08-2008 15:58:06
Array Variant... Perio Varios 0 20-04-2006 15:57:54
Error con variant.dcu donake Varios 3 20-12-2005 11:27:19
Variant, de que tipo? Barzaugc Varios 2 26-08-2005 21:14:30


La franja horaria es GMT +2. Ahora son las 03:58:34.


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