DBGridのColumnMovedイベントを初期化するには?

解決


sa  2008-03-04 09:46:43  No: 30033  IP: 192.*.*.*

DBGridのColumnMovedイベントで列移動させた後にクリアボタンを押せば
列を移動させる前の列順(デフォルトの列順)にしたいのですが、
その場合列が40列ぐらいあった場合でも
Columns[0].Title.caption := 'あ';
Columns[1].Title.caption := 'い';




Columns[40].Title.caption := 'わ';
というふうにしなければならないのでしょうか?
何か良い対処方法があれば教えてください。
よろしくお願い致します。

編集 削除
AY  2008-03-04 10:06:51  No: 30034  IP: 192.*.*.*

タイトルキャプションを設定しても、データの関連までは元に戻りません。
元に戻したいのであれば、最初の状態を保存しておく必要があります。
DBGrid1.Columns.SaveToFile(・・・・  で、ファイルに保存しておきます。
ベースとして初期状態を保存しておけば  どう動かしても復元できます。
復元は
DBGrid1.Columns.LoadFromFile(・・・・で、戻します。

編集 削除
sa  2008-03-04 10:45:28  No: 30035  IP: 192.*.*.*

AY様
お返事ありがとうございます。

ファイルに保存ですか…
すっごく手間ですがデータも元に戻したいということであれば
Columns[0].FieldName := 'AAAAAA';   というふうでもできますよね?

編集 削除
KHE00221  2008-03-04 13:30:59  No: 30036  IP: 192.*.*.*

ファイルがいやならばストリームに保存したらどうですか?

それなら残骸も残りませんよ

編集 削除
sa  2008-03-04 15:13:36  No: 30037  IP: 192.*.*.*

KHE00221様
お返事ありがとうございます。

ストリームの保存というのを初めて聞きました。。
(なにせ、Delphiを始めたのも半年前で・・・)
今少しGoogleでストリームで保存を調べてみたのですが、
初心者ゆえ理解できませんでした・・・
簡単でいいのでどのようにして使うのか教えていただけませんでしょうか?
よろしくお願いいたします。
ちなみに、DBGridのカラムを移動です。

編集 削除
KHE00221  2008-03-04 15:19:53  No: 30038  IP: 192.*.*.*

こんな感じかな

var
  Form4: TForm4;
  MemoryStream: TMemoryStream;

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
begin
    MemoryStream.Position := 0;
    DBGrid1.Columns.LoadFromStream(MemoryStream);
end;

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    MemoryStream.Free;
end;

procedure TForm4.FormCreate(Sender: TObject);
begin
    MemoryStream := TMemoryStream.Create;
    DBGrid1.Columns.SaveToStream(MemoryStream);

end;

編集 削除
sa  2008-03-04 15:29:29  No: 30039  IP: 192.*.*.*

KHE00221様
お返事ありがとうございます!!

今やってみたら出来ました!!!
本当にありがとうございました!!

編集 削除