![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Hola, sólo puedo decirte que he probado ese código en Delphi 6.0 y funciona correctamente (haciendo uso de un Frame, como en tu ejemplo)
No creo que tenga que ver con la definición de la propiedad (no hace falta que le asignes ningún método write pues la propiedad ya existe en la clase base). Por el mensaje de error es como si accedieras a una propiedad de un Objeto inexistente, puede que el error esté en otra parte ...
__________________
Guía de Estilo |
|
#2
|
|||
|
|||
|
Solo una pregunta, la aplicación que estás haciendo en Delphi 2005, es Win32 o .NET?
Por que el error que mencionas al principio del hilo me suena mucho a .NET (por aquello de los assembly), y puede ser que no sea posible hacer en .NET eso que quieres. Claro, solo estoy suponiendo, por que se tendría que investigar bien. Saludos... |
|
#3
|
||||
|
||||
|
La aplicación está hecha en .NET
Durante el transcurso del día, he estado investigando algunos artículos que he encontrado, y parece ser que sí, que con .NET las propiedades que son protegidas, lo son de verdad. No he probado hacer lo mismo en Delphi 2005 con WIN32. Uno de los artículos que encontré (en inglés) es : http://blogs.teamb.com/RudyVelthuis Cita:
Si utilizo la definición como "strict protected" o "strict private", directamente me dá un error de compilación. De cualquier manera, me sigue pareciendo extraño que el mismo error me dé también cuando accedo a las propiedades públicas ("no protegidas") de la misma clase THackGrid, por lo que me dá la impresión de que algo se me está escapando. Saludos |
|
#4
|
||||
|
||||
|
Pues entonces, según lo que entiendo de lo que dice Rudy Velthuis, ahí está la explicación.
Las clases descendientes siempre van a tener acceso a a las propiedades protegidas de sus ancestros, tanto en NET como en Win32. Aquí no hay diferencia. El punto es que en Win32, Delphi permitía acceso a propiedades protegidas incluso desde otras clases, siempre y cuando estuvieran en la misma unidad. Es esta segunda parte la que parece ya no funcionar con NET (o, como dice Rudy que dicen los puristas, ahora sí funciona). Cuando haces THackGrid(DBGrid1).Row, es justo lo que la segunda parte dice. THackGrid ciertamente es un descendiente de TDBGrid, pero el acceso es desde otra clase (la del formulario), y el acceso es desde la misma unidad que la clase descendiente. Si te fijas, este truco del moldeo, realmente sigue todas las reglas del juego que marca Delphi 7-, no hay trampa. Es sólo que tales reglas ya no son las mismas para Delphi 2005. // Saludos Última edición por roman fecha: 12-11-2005 a las 02:22:02. |
|
#5
|
||||
|
||||
|
... no exactamente Delphi 2005 ! ... mas concretamente .NET
He probado con Win32 para Delphi 2005 y funciona correctamente. Ahora bien, con las aplicaciones en .NET no funciona. Rizando el rizo : No sería posible llamar desde el Form (Frame en mi caso particular y ejemplo que venimos discutiendo en este hilo), a una procedure definida en la clase THackGrid, que a su vez accediera a las funciones protegidas del DBGrid definido en el Form ??!! Lo he probado y supongo que ha sido pedirle demasiado porque evidentemente me vuelvo a encontrar de narices con la imposibilidad de acceder desde precisamente la clase THackGrid a elementos del DBGrid del Form. Algo así como esto: Conclusión : Supongo que en .NET ya no es posible lo que venimos discutiendo, no es verdad ?! Saludos a todos ! |
|
#6
|
||||
|
||||
|
Cita:
Toma en cuenta que el moldeo con una clase descendiente no es más que una forma rápida para evitar tener que crear una componente descendiente con "todas las de la ley". Lo indicado es que desciendas una componente de TDBGrid y sea ésa la que coloques en tu frame en lugar del DBGrid original. // Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|