上書き保存と名前をつけて保存 ですが、
上書き保存は、新規作成の場合、
保存先がわからないので、名前をつけて保存に飛ばします。
保存先がわかっている場合は、そのまま保存します。
名前をつけて保存はそのまま処理します。
ちょっと悩んでいたらスレで答えてくれました。 ありがとうございますー
199 名前:以下、名無しにかわりましてVIPがお送りします[] 投稿日:2006/01/28(土) 00:30:28.63 ID:WmGoSYoi0
現在開いているファイル名を覚えておくための変数を用意して、
読み込んだ時、保存した時にその変数に代入するようにする
上書き保存はその変数に実在するファイル名が代入されているかチェックして、
実在するなら上書き処理、存在しないようだったら名前付けて保存を呼び出す
名前付けて保存は普通に保存ダイアログを出して保存
こんな感じかなあ
まずは、名前をつけて保存、をクリックして、
エディターを呼び出したら、次のようなコードを書いてください。
procedure TForm1.SaveAs1Click(Sender: TObject);
begin
if not SaveDialog1.Execute then exit;
FilePath:=SaveDialog1.FileName;
//共通保存処理
end;
1行目、2行目ともに、読み込みの時とおんなじです。
一応説明しておくと、
保存ダイアログを出し、その結果、保存先を指定されたら
真、キャンセルされたら偽 が返り、
それの not 、 が 真ならexit すると。
つまり、キャンセルされたらexit ですね。
そして、 then begin - end; を、 begin - end; 無しにしています。
exit; しか命令がないので。
開く、のところも、直したければ直しましょう。
上書き保存をクリックして、次のコードを書いてください。
procedure TForm1.Save1Click(Sender: TObject);
begin
if FilePath='' then begin
SaveAs1Click(Sender);
end else begin
//共通保存処理
end;
end;
if else の構文ですね。
FilePathが'' すなわち、空っぽのテキストなら、
SaveAs1Clickを実行します。
これ、名前をつけて保存 の イベントに登録されてる手続きで、
名前をつけて保存のクリックイベントが発生したら呼ばれるので、
逆に言えば、これを呼び出せば、
名前をつけて保存 を クリックしたのと同じことになります。
(厳密に細部の処理を言うとちょいと違うかも知れんけど。
引数のSenderというのは、
この手続きを呼び出したおぶじぇくと ということだと思いますが、
この値は別に使わないので、
上書き保存の方に来ているSenderを使いまわして渡しておきます。
ここでのSenderは全く重要ではないので、
説明もほどほどに。
さて、どちらも共通して、
//共通保存処理 と書いてあります。
ここには、
「その時のFilePathのファイルパスにバリナリデータを保存」
という処理が入る予定です。
名前をつけて保存なら、ダイアログの結果をもとに。
上書き保存なら、既に決まっているパスをもとに。
こういうどちらも同じ処理をしたい場合、
今まで出てきた、手続き を、
自作すればよいのです。
では、次からはそこを作っていきましょう。
コンテンツ
最新の12件
2023-06-12
2021-02-15
2013-06-19
2012-07-14
2012-02-04
2012-01-06
2011-03-31
2010-08-26
2010-03-15
2009-10-21
2009-02-12
2008-11-18
メニュー編集
- counter: 687
- today: 1
- yesterday: 0
- online: 2