Ver Mensaje Individual
  #1  
Antiguo 16-04-2007
leanfreue leanfreue is offline
Miembro
 
Registrado: mar 2007
Posts: 19
Reputación: 0
leanfreue Va por buen camino
Procedimientos en DataModule

Hola amigos, tengo el siguiente problema:

Quiero hacer un DataModule para utilizar como base para otros DataModule, espcíficamente para hacer Altas, Bajas y Modificaciones. Hay algunos procedimientos que son siempre los mismos, por lo que los puse dentro del DataModule y listo, pero esos procedimientos llaman a su vez a otros procedimientos que están dentro del mismo DM, a los cuales quiero poder ingresarles distintas líneas de código para cada caso. El problema que tengo es que cuando llamo al procedimiento principal y este quiere acceder a los otros subprocedimientos me da un error de Access Violation.

Se los muestro mejor con un ejemplo:

DataModulePrincipal (Este lo tengo en el ObjectRepository)
Código Delphi [-]
...
public
  procedure AgregarDatos;
  procedure ChequearUsuario;
  procedure PonerProximoCodigo; virtual;
...

implementation

  procedure AgregarDatos;
  begin
    self.ChequearUsuario;
    self.PonerProximoCodigo; **** ACA DA ACCESS VIOLATION ****
  end;

  procedure ChequearUsuario;
  ...

  procedure PonerProximoCodigo;
  begin
    // Acá no pongo nada, porque el código que ingrese depende 
    // del ABM que estoy haciendo, por ejemplo, buscar el próximo código 
    // de cliente, o de proveedor, o de artículo, etc.
  end;

DataModuleClientes (Este es el que heredo de DataModulePrincipal)
Código Delphi [-]
...
public
  procedure PonerProximoCodigo; override;
...

implementation

procedure PonerProximoCodigo;
begin
  // Escribo el código necesario para buscar el próximo código de cliente.
end;

Desde un formulario que utiliza el DataModuleCliente, quiero llamar a DataModuleCliente.Agregar, pero me da error.
Noté que el error aparece cuando desde el DataModule se llama a un procedimiento que tiene Override.

Qué es lo que estoy haciendo mal?
Estoy muy lejos de lograr lo que busco?

Bueno, espero haber explicado bien mi inconveniente y les agradezco a todos por su tiempo.

Saludos, Leandro.
Responder Con Cita