FILE GETNAMEは,「ファイルを開く」ダイアログを表示してファイル名を取得しますが,ver 5.3.6の
\Library\FileName.LIBに定義された外部関数GetSaveFileName$を利用すると,「名前を付けて保存」ダイアログを表示してファイル名を取得することができます。
使用例
100 DECLARE EXTERNAL FUNCTION GetSaveFileName$ 110 PRINT GetSaveFileName$("CSVファイル","CSV","") 120 END 130 MERGE "FILENAME.LIB"
100行は識別名GetSaveFileName$を外部関数名として使うための宣言です。
130行のMERGE文はFILENAME.LIBを翻訳時にプログラムテキストの末尾に読み込む命令です。
GetSaveFileName$の引数は,順に,ファイル種別の説明の文字列,既定の拡張子,初期表示ディレクトリです。
既定の拡張子は,3文字以内に限ります。ピリオドは省いて指定します。
GetSaveFileName$関数は,Win32APIを用いて定義されています。
詳細は,FILENAME.LIBを開いて確認してください。
BASICプログラムで記述されているので,目的に応じ変更を加えて利用することも可能です。
<補足>利用者独自のライブラリを作成したときは,Libraryフォルダではなく,UserLibフォルダに入れてください。
MERGE文は,Libraryフォルダより先にUserLibフォルダを検索します。
ver. 5.3.7の\Library\MSGBOX.LIBに定義された関数YesNoBox$関数を利用すると,メッセージを表示して「はい」,「いいえ」の選択を求めることができます。
使用例
10 DECLARE EXTERNAL FUNCTION YesNoBox$ 20 SELECT CASE YesNoBox$("実行しますか") 30 CASE "Y" 40 PRINT "実行します" 50 CASE "N" 60 PRINT "実行を取りやめます" 70 END SELECT 80 END 90 MERGE "MSGBOX.LIB"
MSGBOX.LIBには,「中止(A)」,「再試行(R)」,「無視(I)」から選択させる関数AbortRetryBox$も定義されています。
これらの関数は,Win32APIのMessageBoxを利用して定義されているので,目的に応じて修正して使うことができます。