Ver Mensaje Individual
  #5  
Antiguo 19-02-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Reputación: 23
gluglu Va por buen camino
Gracias de nuevo Lepe.

Estoy utilizando BDS 2006 en VCL.NET. No sé si eso tendrá algo que ver. El error es típico al menos para mi, siempre y cuando haya algún objeto que todavía no esté instanciado y se intenta acceder a él, o a alguna de sus propiedades, eventos, etcétera.

No sé si es apropiada para mi la solución que me explicas. No intento acceder desde el Form Principal al DataSet del Frame. Para mi el problema es más simple que todo eso pero no sé el por qué del error que me sale.

Mi form principal es BookingMain y este es parte del código :

Al llamar a BookingMain desde mi menú principal, le paso un número de reserva que deseo abrir.

Código Delphi [-]
  ...
  public
    { Public declarations }
    Num_Booking    : Int64;
    BookingFrame11 : TBookingFrame1;
    ...
    constructor Create2(Param_1: Int64);
  end;

constructor TBookingMain.Create2(Param_1: Int64);
begin
  Num_Booking := Param_1;
  inherited Create(Application);
end;

A continuación, en el OnCreate del BookingMain :
Código Delphi [-]
procedure TBookingMain.FormCreate(Sender: TObject);
begin
 
  IBTransaction1.Active := True;
  IBDataSet1.ParamByName('Num_Book').Value := Num_Booking;
  IBDataSet1.Open;
 
  StatusClick(nil);
  ShowSelectedInitialize;
 
  BookingFrame11 := TBookingFrame1.Create(Self);
  BookingFrame11.Parent  := Self;
 
  ....

  BookingFrame11.FrameEnter(nil);
 
end;
llamo a BookingFrame11.FrameEnter de manera 'manual'. Me interesa así de momento. En cualquier caso, el error de este hilo también me aparece aunque ejecute los comandos de manera que se llamen por el evente BookingFrame1.OnEnter tal y como comentaba anteriormente.

Los procedimientos 'StatusClick' y 'ShowSelectedInitialize' llaman a IBDataSet1 sin problema.

En el Frame :
Código Delphi [-]
procedure TBookingFrame1.FrameEnter(Sender: TObject);
begin
  ...
  MaskEdit1.Text := IntToStr(DaysBetween(BookingMain.IBDataSet1DATEARRIVAL.Value, BookingMain.IBDataSet1DATEDEPARTURE.Value));
  ...
end;
... y es aquí donde me salta el error. Al intenter acceder a BookingMain.IBDataSet1....

Vuelvo a insistir. Si quito la línea
Código Delphi [-]
  BookingFrame11.FrameEnter(nil);
del evento OnCreate de BookingMain, coloco un botón cualquiera en BookingMain, y una vez mostrado todo, pulso el botón y por tanto ejecuto esta última línea, todo funciona correctamente.

.... añado una cosa ahora mismo, que mientras estaba escribiendo el mensaje he probado para cerciorarme.

He probado
Código Delphi [-]
procedure TBookingFrame1.FrameEnter(Sender: TObject);
begin
 
  BookingMain.Caption := 'Prueba';
  ...
y me salta el mismo error : 'Object Reference not set to an instance of an object'.



Una vez más gracias por vuestra ayuda.
__________________
Piensa siempre en positivo !
Responder Con Cita