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 25-08-2004
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 22
sur-se Va por buen camino
Copia automática de propiedades

Hola. Tengo un componente Edit propio que he creado a partir de un Edit normal, añadiendole algunas propiedades. Ahora necesitaría un componente que llevase dos edits asociados, para que fuesen los típicos rangos Desde/hasta con dos Edits. He pensado en partir de un Panel y dentro de el, en el create, crear los dos edits. Ahora bien, para acceder a las propiedades de los edits, en mi nuevo componente tengo que añadirlas una a una o podría hacerse de otra forma.

Salu2.
Responder Con Cita
  #2  
Antiguo 25-08-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Wop!

¿Por que no declaras los edits como propiedades en la sección Public/Published de tu componente?

NOTA: Si lo haces, recuerda declararlas como de solo lectura!!!
__________________
E pur si muove
Responder Con Cita
  #3  
Antiguo 25-08-2004
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 22
sur-se Va por buen camino
Si, eso estaba pensando hacer, pero entonces no lo puedo modificar en el Object Inspector al diseñar la pantalla, sino que tendría que hacerlo todo por código ¿no?.
Responder Con Cita
  #4  
Antiguo 25-08-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Wop!

Cita:
Empezado por sur-se
, pero entonces no lo puedo modificar en el Object Inspector al diseñar la pantalla, sino que tendría que hacerlo todo por código ¿no?.
No!!!!! Lo que no podrás hacer ni en diseño ni por código es modificar el valor de la referencia, es decir, siempre tendrás que trabajar on las mismas instancias de TEdit (o de tu nuevo TEdit), cosa que es MUY recomendable. En cambio, lo que SÍ podrás hacer y lo que en realidad te interesará es modificar sus propiedades.

Te paso un ejemplo tontisimo listo para usar. Instalate el componente y sueltalo en un form, ya verás...
Código Delphi [-]
unit Panel1;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, StdCtrls;

type
  TPanel1 = class(TPanel)
  private
    FEdit1, FEdit2: TEdit;
  protected
    { Protected declarations }
  public
    constructor Create(AOwner: TComponent); override;
  published
    property Edit1: TEdit read FEdit1;
    property Edit2: TEdit read FEdit2;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TPanel1]);
end;

{ TPanel1 }

constructor TPanel1.Create(AOwner: TComponent);
begin
  inherited;
  FEdit1 := TEdit.Create(Self);
  FEdit2 := TEdit.Create(Self);
  FEdit1.Parent := Self;
  FEdit2.Parent := Self;
  FEdit2.Left := FEdit1.Left + FEdit1.Width + 2;
end;


end.
__________________
E pur si muove
Responder Con Cita
  #5  
Antiguo 25-08-2004
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 22
sur-se Va por buen camino
Hola. Gracias por la respuesta, pero no es exactamente lo que quería hacer. He probado tu código y efectivamente tenemos el panel y los edits, pero ahora si selecciono en Delphi el componente y le doy a ver el Object Inspector aparecen las propiedades Edit1 y Edit2, pero no puedo acceder a las propiedades de esos objetos desde ahí.
Para hacer eso tendría yo que crear la propiedad en el Panel como los Edit y despues hacer desde código que se asigne a la correspondiente del Edit. Eso es lo que no quiero hacer porque son muchas propiedades y ver si hay alguna manera de hacerlo automático.
Por ejemplo, con el código que me has enviado, no puedo acceder a las propiedades Text de los objetos Edit1 y Edit2 desde el Object Inspector.

Salu2.
Responder Con Cita
  #6  
Antiguo 25-08-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Wop!

Bueno, me imagino que trabajas con una version < 6, ya que en mi D6 puedo acceder perfectamente a todas las propiedades de los edits.

La única opción que te queda (creo) es programar "a pelo" las propiedades que quieras, ejemplo:

Código Delphi [-]
interface
....
  published
...
    property Edit1Text: String read GetEdit1Text write SetEdit1Text;
...
implementation
  function TPanel1.GetEdit1Text: String
  begin
    Result := Edit1.Text;
  end;
  procedure TPanel1.SetEdit1Text(Value: String);
  begin
    Edit1.Text := Value;
  end;
....
__________________
E pur si muove
Responder Con Cita
  #7  
Antiguo 25-08-2004
sur-se sur-se is offline
Miembro
 
Registrado: may 2003
Posts: 212
Poder: 22
sur-se Va por buen camino
Vaya, pues si, estoy con la 5, y la 6 lo hace automáticamente. Vaya faena. Bueno pues entonces no hay forma de que lo haga automáticamente sino que tendré que programar todas las propiedades.
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


La franja horaria es GMT +2. Ahora son las 12:04:30.


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