Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 02-06-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 24
andres1569 Va por buen camino
Hola:

Voy a alargar un poco el tema de los "castings" (¡a ver si alguna estrella del espectáculo se mete a debatir aquí!),

Roman escribió:
Código:
type
  TUPGrid = class(TCustomGrid);
Este truco demuestra que estamos jugando con el compilador, porque ¿dónde están definidas en este código las propiedades Row y Col como public? Nos estamos valiendo sencillamente de la particular forma que tiene Delphi de definir el ámbito de las variables protegidas y privadas.

Si la sentencia de arriba la declaramos en una unit aparte, el cast sólo será válido dentro de esa unit, no en otras que quieran hacer uso de dicho truco, por mucho que la incluyamos en el Uses de esas otras.

La solución ideal (con permiso de Mr. B. Orlando) sería esta:

Código:
type
  TUPGrid = class(TCustomGrid)
  public
    property Col;
    property Row;
  end;
Ahora sí que el truco nos sirve para todo el proyecto.

¿No os ha llamado nunca la atención que Delphi permita acceder a variables privadas y protegidas de otros objetos siempre y cuando estén definidas en la misma unit, sin que sean necesariamente descendientes unos de otros? En un principio me pareció una flagrante violación de la regla de la encapsulación, aunque ahora doy fe de que esto es de una gran ayuda cuando se están declarando clases "hermanas", que necesitan acceder a las intimidades de otras (esto se ve claramente en las clases TDataset y TDataSource) sin que por ello se tenga que correr el riesgo de declarar ciertas propiedades o métodos como public.

Bueno, si alguien quiere aportar su opinión
Responder Con Cita
 



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 07:44:57.


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