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

解決


sa  2008-03-04 18:46:43  No: 30033

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




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


AY  2008-03-04 19:06:51  No: 30034

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


sa  2008-03-04 19:45:28  No: 30035

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

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


KHE00221  2008-03-04 22:30:59  No: 30036

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

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


sa  2008-03-05 00:13:36  No: 30037

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

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


KHE00221  2008-03-05 00:19:53  No: 30038

こんな感じかな

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-05 00:29:29  No: 30039

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加