Ver Mensaje Individual
  #13  
Antiguo 03-10-2003
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Buen día a todos!

Acabo de leer todos los mensajes de este interesante tema planteado atinadamente por Altp.

Esta misma pregunta:

Cita:
...¿cómo puedo hacer que redeclarándome en un solo objeto de tipo TField pueda crear campos TStringField, TIntegerField, TMemoField...
me la hice yo hace tiempo, cuando buscaba definir nuevas clases de componentes campo a partir de las clases existentes (TStringField, TIntegerField, TCurrencyField, etc.), con propiedades y métodos que tenían practicamente la misma implementación en todas esas clases nuevas.

En aquel entonces me dije: "Debe haber una forma de aplicar esto en TField y que repercuta automáticamente en todos sus descendientes..."

Pues hasta ahora creo que tuve razón, porque siento que "debe haber una forma", sólo que todavía el lenguaje Object Pascal de Delphi no la tiene.

Para mi fue como descubrir ese enorme hueco que tiene la tabla períodica de los elementos químicos.

A esta característica inexistente hasta hoy en día (2 de octubre de 2003) le llamo herencia virtual. Y según el ejemplo que plantea en este caso, pienso que podría aplicarse de la siguiente forma (entre otras posibles):

Código:
Type
  Complement Class TField
    Private
      FGrid :String;
    Protected
      Procedure SetGrid (Const Value :String);
    Public
      Constructor Create (AOwner :TComponent); Override;
    Published
      Property Grid :String Read FGrid Write SetGrid;
  End;
...
A partir de esta declaración, el compilador tendría que asegurarse de que todas las clases descendientes del anterior TField, cumplan con la herencia de su nuevo padre: la clase TField complementada, la nueva TField.

Creo que esta característica elevaría significativamente la potencia del lenguaje Object Pascal (que ya de por si es potente). Estoy seguro de que ya se ha considerado por parte de los ingenieros de Borland.

Por lo pronto, a buscar otras alternativas para estos casos.

Espero esto sea de utilidad, seguimos en contacto.

Al González .
Responder Con Cita