Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problemas con propiedades en POO (https://www.clubdelphi.com/foros/showthread.php?t=74881)

mcsebas 15-07-2011 04:13:35

Problemas con propiedades en POO
 
Hola gente despues de tanto tiempo volvi a solicitar de vuestra ayuda porque me pasa lo siguiente:

Resulta que estoy haciendo un sistema y tengo un problemilla con el tema de clases y es el siguiente:

Parto de una clase llamada Conexion que me maneja la conexion a la BD tiene un SQLConnection y SQLQuery; heredo en otra clase la anterior y le agrego el DataSetProvider, ClientDataSet y el DataSource; hasta ahi todo bien pero se me ocurre poner estos tres ultimos componentes en private para que al instanciar la clase no se vean; defino una funcion como metodo que me devuelva el datasource y me tira el siguiente error:

"...Class TDataSetProvider not found..."

Cambio a protected en la declaracion y me sigue dando lo mismo pero cuando saco private o protected y lleno en un formulario el DataGrid con el metodo que tira un DataSource funciona pero estoy viendo tambien los componentes DataSetProvider, ClientDataSet y el DataSource y es lo que no quiero; o sea no hay encapsulamiento.

Agradeceria que me den una mano con esto, porque lentamente estoy entendiendo la POO y me ahorra tiempo y lineas de codigo.

Este es el fragmento de mi codigo:

Código Delphi [-]
type
  TModuloListado = class(TModuloConexion)
  protected
    Proveedor: TDataSetProvider;
    DataSet: TClientDataSet;
    Origen: TDataSource;
  public
    function Informacion:TDataSource;
  end;

Lepe 15-07-2011 10:40:58

Según entiendo, has puesto los componentes en el Datamodule en tiempo de diseño, ahí Delphi entiende que son públicos y se puede acceder desde el exterior.

Si los creas en tiempo de ejecución, podrías hacer lo que quieres de la encapsulación.

Si usas herencia visual, ocurre igual que en el primer caso, siempre podrás modificar las propiedades.

Debería ponerse un componente en el Datamodule y especificar que es privado... pero yo no sé como hacerlo.

Saludos

mcsebas 15-07-2011 16:16:11

Gracias por la ayuda me estas orientando bien por donde debo resolver el problema, estaré a la espera de otras respuestas.

Gracias nuevamente :)


La franja horaria es GMT +2. Ahora son las 07:23:14.

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