Наследникам TDataSet посвящается

© 2003 Андрей Евлаш

Перед заключительной сборкой проекта, желательно закрывать ненужные DataSet'ы, находящиеся на автосоздаваемых формах (и не только), чтобы:

Идея заключается в том, чтобы завести дополнительное свойство, в котором будем определять - когда открывать DataSet. Назовём его ActiveMode.

Для примера, создадим наследника от компонента TIBDataSet.


type
  TActiveMode =
    ( amDesigning { свойство Active в дизайнтайме всегда True }
    , amAlways    { свойство Active всегда True }
    , amCustom    { разработчик сам управляет свойством Active }
    );

  TmyIBDataSet = class(TIBDataSet)
  private
    FActiveMode: TActiveMode;
    function IsActiveStored: Boolean;
    procedure SetActiveMode(Value: TActiveMode);
  published
    property Active stored IsActiveStored;
    property ActiveMode: TActiveMode read FActiveMode write SetActiveMode default amDesigning;
  end;
  
implementation

function TmyIBDataSet.IsActiveStored: Boolean;
begin
  Result := (ActiveMode = amCustom);
end;

procedure TmyIBDataSet.SetActiveMode(Value: TActiveMode);
begin
  if (FActiveMode <> Value) then
  begin
    FActiveMode := Value;
    case ActiveMode of
      amAlways: Open;
      amDesigning:
        if (csDesigning in ComponentState) then
          Open;
    end;
  end;
end;

PS Вышесказанное можно применить и к наследникам TCustomConnection.

Copyright© 2003 Андрей Евлаш  Специально для Delphi Plus

2011123456789101112
2010123456789101112
2009123456789101112
2008123456789101112
2007123456789101112
2006123456789101112
2005123456789101112
2004123456789101112
2003123456789101112
2002123456789101112
2001123456789101112
2000123456789101112
1999123456789101112

Последние статьи
Литература