掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DBGridの列データ自動保存、自動読込 (ID:30341)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
自己レスです。 CreateWndメソッド部分をLoadedメソッドに変更したところ, プロジェクトを開いた際のエラーは発生しなくなりました。 しかしいまだプロジェクトファイルを開いた時と閉じた時に, overrideした部分が動いてしまいます(ColumnAutoSave=True時)。 これはコンポーネントの性質,又は私の作成方法では対処方法がないのでしょうか? よろしくお願いします。 ===================================================================================== unit MyDBGrid; interface uses SysUtils, Classes, Controls, Grids, DBGrids, DB; type TMyDBGrid = class(TDBGrid) private FColumnSave: Boolean; { Private 宣言 } procedure SetColumnSave(const Value: Boolean); protected { Protected 宣言 } procedure Loaded; override; public { Public 宣言 } constructor Create(AOwner: TComponent); override; destructor Destroy; override; published { Published 宣言 } property ColumnAutoSave: Boolean read FColumnSave write SetColumnSave default False; end; procedure Register; implementation procedure Register; begin RegisterComponents('Data Controls', [TMyDBGrid]); end; { TMyDBGrid } constructor TMyDBGrid.Create(AOwner: TComponent); begin inherited; FColumnSave := False; end; procedure TMyDBGrid.Loaded; begin inherited; if FColumnSave then begin Columns.Clear; if FileExists('Col_' + Owner.Name + Name + '.dat') = True then begin Columns.LoadFromFile('Col_' + Owner.Name + Name + '.dat'); end; end; end; destructor TMyDBGrid.Destroy; begin if FColumnSave then begin //列設定なしでデータセットが閉じている時は Columns.Count = 1 になる //この場合は保存しない if (DataSource.DataSet.State <> dsInactive) or ((DataSource.DataSet.State = dsInactive) and (Columns.Count > 1)) then begin Columns.SaveToFile('Col_' + Owner.Name + Name + '.dat'); end; end; inherited; end; procedure TMyDBGrid.SetColumnSave(const Value: Boolean); begin FColumnSave := Value; end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.