PDA

Ver la Versión Completa : No me muestra Evento en el Inspector de Objetos


MAPER
12-01-2010, 03:30:46
Holas a todos los amigos del Club,
Mi problema es el sgte, el la cia estamos migrando unos componentes de Delphi 7 a Delphi 2010 y tenemos un problema en la creación de un evento(OnValidateField) que hemos creado ya que nos compila bien todo pero al momento de utilizar el componente(TwwDBEdit) este no muestra el evento creado. no se si Delphi 2010 tiene algo en especial para la creación de eventos? me pueden ayudar a solucionar el problema que esta pasando. yo tengo instalado el Rad Studio 2010 con update 5.
aquí les dejo parte de la declaración de mis clases:


TwwValidateField = procedure(Sender: TObject; Field: TField; var IsValid: Boolean) of object;

TwwDBCustomEdit = class(TwwCustomMaskEdit)
private
FBeforeValue: String;
FIsValueValid, FCancelEscape: Boolean;
FOnValidateField: TwwValidateField;

protected
FFocused: Boolean;
...
.

public
...
.
property OnValidateField: TwwValidateField read FOnValidateField write FOnValidateField;

end;

TwwDBEdit = class(TwwDBCustomEdit)
published
property OnClick;
...
.
property OnValidateField;
end;

maeyanes
12-01-2010, 21:55:28
Hola...

¿Y esos eventos están declarados como published o solo como public?

Por que hay una gran diferencia entre declarar algo como public que como published...

Para que una propiedad o evento se muestre en el inspector de objetos tienen que estar declarados bajo published:


type
TMyClass = class(TComponent)
// ...
published
property MyEvent: TNotifyEvent read FMyEvent write FMyEvent;
end;



Saludos...

MAPER
13-01-2010, 00:32:04
Gracias por ayudarme...
Si te fijas en el codigo hay 2 clases:

TwwValidateField = procedure(Sender: TObject; Field: TField; var IsValid: Boolean) of object;

TwwDBCustomEdit = class(TwwCustomMaskEdit)
private
FBeforeValue: String;
FIsValueValid, FCancelEscape: Boolean;
FOnValidateField: TwwValidateField;

public
...
.
property OnValidateField: TwwValidateField read FOnValidateField write FOnValidateField;

end;

TwwDBEdit = class(TwwDBCustomEdit)
published

...
.
property OnValidateField;
end;


en la primera clase(TwwDBCustomEdit) se declara como PUBLIC para que esta propiedad sea utilizado por otra que la herede. y en la segunda clase(TwwDBEdit) se define como PUBLISHED y realmente es la segunda clase la que se registra y la que se va a usar.

Como lo comentaba al inicio esta misma declaracion esta funcionanado en Delphi 7 y si me muestra el envento TwwDBEdit.OnValidateField en el inspector de objetos. el detalle viene cuando se ha hecho los mismos cambios a y compilado en Delphi 2010 y todo compila bien y se registran los componentes sin problemas. pero cuando se usa el componente (TwwDBEdit) al ir al inspector de objetos no me esta mostrando el envento.

Lo que si me parece raro que cuando declaro una variable del la clase(TwwDBEdit) y luego veo sus propiedades en el editor si me aparece el evento. por eso no se si en delphi 2010 tenga que hacer algo mas.

rgstuamigo
13-01-2010, 14:49:55
...
en la primera clase(TwwDBCustomEdit) se declara como PUBLIC para que esta propiedad sea utilizado por otra que la herede.
...

En ese caso lo mejor es ponerlo en el bloque protected. y no hacerlo publica directamente.Y creo que por ahi va tu problema.;).

En tu clase TwwDBCustomEdit->
protected
...
.
property OnValidateField: TwwValidateField read FOnValidateField write FOnValidateField;

Ahora en tu clase TwwDBEdit
published

...
.
property OnValidateField;
Pruebalo...;)
Saludos...:)

MAPER
15-01-2010, 02:41:36
Ya realice el cambio y la verdad sigue igual.
Me gustaría poder enviarles los fuentes del componentes para así uds. puedan ayudarme a ver con el código que realmente esta pasando.
mi correo es manuel_penar@hotmail.com
Si pueden enviarme sus correos para asi enviarles los fuentes de los componentes.
muchas gracias por su ayuda

rgstuamigo
15-01-2010, 14:43:04
Ya realice el cambio y la verdad sigue igual.
Me gustaría poder enviarles los fuentes del componentes para así uds. puedan ayudarme a ver con el código que realmente esta pasando.
mi correo es bla,bla,bla <---:o:o
Si pueden enviarme sus correos para asi enviarles los fuentes de los componentes.
muchas gracias por su ayuda
Amigo MAPER, debes tener cuidado cuando pones tu correo electronico, por que puede ser detectado por el robot de google (http://es.wikipedia.org/wiki/Googlebot) u otros y asi lo podrian utilizar para mandarte Spam (http://es.wikipedia.org/wiki/Spam) o basura(publicidad) a tu correo electronico. Por lo tanto te recomiendo, si no lo has hecho, leer la Guia de Estilo (http://www.clubdelphi.com/foros/guiaestilo.php).
Por otro lado si quieres mostrar tu codigo de tus componentes, puedes adjuntarlo(chequea el botoncito con dibujo de un clip (http://t2.gstatic.com/images?q=tbn:wTdCnmm3xUouVM:http://comps.fotosearch.com/comp/UNC/UNC227/papel-oficina-papeleria_%7Eu25649978.jpg) junto a la carita blanca cuando estes escribiendo un mensaje) a tus mensajes, si no es demasiado grande.Si fuera demasiado pesado tambien puedes subirlo al FTP (http://www.terawiki.clubdelphi.com/) del club o algun otro sitio de Share de archivo.;).
En mi caso no dispongo de delphi 2010:o, pero quisas alguien pueda hecharte una mano para ver tu codigo fuente.;)
Saludos...:)

Al González
15-01-2010, 15:37:06
En mi caso no dispongo de delphi 2010:o, pero quizas alguien pueda echarte una mano para ver tu codigo fuente.;)
Saludos...:)
En mi caso tampoco tengo Delphi 2010 (aún :(). Me encantaría poder ver de cerca este asunto. Maper, ¿ya buscaste si este problema ha sido reportado (http://qc.embarcadero.com/wc/qcmain.aspx) a Embarcadero?

rgstuamigo
15-01-2010, 16:14:52
En mi caso tampoco tengo Delphi 2010 (aún :().
...

Vaya...:eek:..Pensé que mas bien Al Gonzáles fué unos de lo primero en obtener Delphi 2010.:D
En mi caso, lamentablemente no alcalza el presupuesto para poder comprarlo.:(:o por eso sigo con mi Delphi 7.;)
Que bueno, pero que bueno,seria que Embarcadero firmara algunos convenios con algunas Universidades de estos lugares, para poder utilizar con mucho mas énfasis sus productos, y sin miedo, ya que los que tiene mi Universidad en su Mayoria son Piratas.:eek::D:(. Es la cruda realidad.:o
Saludos...