Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > OOP
Register FAQ Members List Calendar Guía de estilo Today's Posts

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 08/09/2005
elcigarra elcigarra is offline
Miembro
 
Join Date: May 2005
Posts: 269
Poder: 22
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.

Last edited by dec : 08/09/2005 at 12:44. Reason: (Encerrar el código fuente en la etiqueta DELPHI)
Reply With Quote
  #2  
Old 08/09/2005
jmariano's Avatar
jmariano jmariano is offline
Miembro
 
Join Date: Jul 2005
Posts: 376
Poder: 22
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!

Last edited by jmariano : 08/09/2005 at 13:43.
Reply With Quote
  #3  
Old 08/09/2005
Sirkius Sirkius is offline
Miembro
 
Join Date: Jun 2004
Posts: 83
Poder: 23
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

Last edited by Sirkius : 08/09/2005 at 13:51.
Reply With Quote
  #4  
Old 08/09/2005
delphi.com.ar's Avatar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Join Date: May 2003
Location: Buenos Aires, Argentina *
Posts: 5,964
Poder: 29
delphi.com.ar Va camino a la fama
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.
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 07:31.


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