Ver Mensaje Individual
  #4  
Antiguo 27-09-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Joser.

Como comenta Casimiro, hay varios detalles que faltan conocer. Por tu código da la impresión que el TDataModule tiene acceso (incluye) a formusuarios, particularmente prefiero entablar la relación de modo inverso.

Quitando a formusuarios del comando uses de DataModule1, podrías hacer:
Código Delphi [-]
...
type
  Tformusuarios = class(TForm)
    BTCancelar: TButton;
    BTNuevo: TButton;
    procedure FormCreate(Sender: TObject);
    ... 
    procedure BTNuevoClick(Sender: TObject);
    procedure BTCancelarClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    FNotifyEvent: TNotifyEvent;
    procedure dsusuariosChange(Sender: TObject);
  public
  end;

var
  formusuarios: Tformusuarios;

implementation  

uses Unit2, // DataModule1
     DB;

procedure Tformusuarios.dsusuariosChange(Sender: TObject);
begin
  with DataModule1 do
  begin
    BTCancelar.Enabled := dsusuarios.State in[dsEdit, dsInsert];
    BTNuevo.Enabled    := dsusuarios.State = dsBrowse;
  end
end;

procedure Tformusuarios.FormCreate(Sender: TObject);
begin
  with DataModule1 do
  begin
    FNotifyEvent             := dsusuarios.OnStateChange; 
    dsusuarios.OnStateChange := dsusuariosChange;
    CLIENTusuarios.active    := True;  
    BTCancelar.Enabled       := dsusuarios.State in[dsEdit, dsInsert];
    BTNuevo.Enabled          := dsusuarios.State = dsBrowse;
  end
end;

...

procedure Tformusuarios.BTNuevoClick(Sender: TObject);
begin
  DataModule1.CLIENTusuarios.Insert;
end;

procedure Tformusuarios.BTCancelarClick(Sender: TObject);
begin
  DataModule1.CLIENTusuarios.Cancel;
end;

procedure Tformusuarios.FormClose(Sender: TObject;  var Action: TCloseAction);
begin
   DataModule1.dsusuarios.OnStateChange := FNotifyEvent;
end;

...

end.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita