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 08-09-2005
elcigarra elcigarra is offline
Miembro
 
Registrado: may 2005
Posts: 269
Poder: 19
elcigarra Va por buen camino
Los hermanos sean unidos... y sus propiedades también

Vuelvo al ejemplo de Roman de la vez anterior (que hay que decirlo, funcionó perfecto) pero esta vez con dos "hijos"...
Código Delphi [-]
  type
   TMiControl = class(TCustomControl)
   private
     FEditA: TEdit;
     FEditB: TEdit;
     procedure SetEdit(Value: TEdit);
   public
     constructor Create(AOwner: TComponent); override;
     destructor Destroy; override;
   published
     property Edit: TEdit read FEdit write SetEdit;
   end;
 
 implementation
 
 { TMiControl }
 
 constructor TMiControl.Create(AComponent: TComponent);
 begin
   inherited;
   FEditA := TEdit.Create(Self);
   FEditB := TEdit.Create(Self);
   FEditA.Parent := Self;
   FEditB.Parent := Self;
   FEditA.SetSubComponent(true);
 end;
En este caso el subcomponente publicado es solamente el "A". ¿Hay alguna forma de hacer que las propiedad "Text" estén relacionadas?. Es decir, cuando el tiempo de ejecución el usuario cambie el texto de un edit (x ej el "A"), que cambie también el otro.

Última edición por dec fecha: 08-09-2005 a las 12:44:32. Razón: (Encerrar el código fuente en la etiqueta DELPHI)
Responder Con Cita
  #2  
Antiguo 08-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
Una forma de hacer lo que quieres es capturar el evento OnChange del Edit "A", dentro de tu componente, y que, cuando se produzca, cambie el contenido del Edit "B":

Código Delphi [-]
type
  TMiControl = class(TCustomControl)
  private
    FEditA: TEdit;
    FEditB: TEdit;
    procedure CambiarB(Sender: TObject); // Método para cambiar FEditB
    procedure SetEdit(Value: TEdit);
    ...
  end;

constructor TMiControl.Create(AComponent: TComponent);
begin
  inherited;
  FEditA := TEdit.Create(Self);
  FEditB := TEdit.Create(Self);
  FEditA.Parent := Self;
  FEditB.Parent := Self;
  FEditA.OnChange := CambiarB; // Método que cambia el valor de FEditB 
  FEditA.SetSubComponent(true);
end;  

procedure TMiControl.CambiarB(Sender: TObject);
begin
  FEditB.Text := FEditA.Text;
end;

Saludos!

Última edición por jmariano fecha: 08-09-2005 a las 13:43:40.
Responder Con Cita
  #3  
Antiguo 08-09-2005
Sirkius Sirkius is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
Sirkius Va por buen camino
Podrías hacer un procedimiento dentro de la clase del tipo TNotifyEvent, que compruebe si estan asignados los Edits y en ese caso lo copia de un a otro. Despues en el OnCreate se lo asignas al EditA.

PD: te pondria el codigo pero todavia no me llevo muy bien con lo de crear clases...

EDITO: eso mismo :P
__________________
SIN FIRMA :P

Última edición por Sirkius fecha: 08-09-2005 a las 13:51:23.
Responder Con Cita
  #4  
Antiguo 08-09-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Si... controlando los eventos de los TEdits, al igual que lo harías si los pegas sobre un TForm, por ejemplo, capturando el evento OnChange.

Código Delphi [-]
type
   TMiControl = class(TCustomControl)
   private
     FEditA: TEdit;
     FEditB: TEdit;
     procedure SetEdit(Value: TEdit);
     procedure OnEditAChange(Sender: TObject);
     procedure OnEditBChange(Sender: TObject);
   public
     constructor Create(AOwner: TComponent); override;
     destructor Destroy; override;
   published
     property Edit: TEdit read FEdit write SetEdit;
   end;
 
 implementation
 
 { TMiControl }
 
constructor TMiControl.Create(AComponent: TComponent);
begin
   inherited;
   FEditA := TEdit.Create(Self);
   FEditB := TEdit.Create(Self);
   FEditA.Parent := Self;
   FEditB.Parent := Self;
   FEditA.OnChange := OnEditAChange;
   FEditB.OnChange := OnEditBChange;
   FEditA.SetSubComponent(true);
end;

procedure TMiControl.OnEditAChange(Sender: TObject);
begin
  EditB.Text := EditA.Text;
end;

procedure TMiControl.OnEditBChange(Sender: TObject);
begin
  EditA.Text := EditB.Text;
end;
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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


La franja horaria es GMT +2. Ahora son las 21:33:58.


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