×

[PR]この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。

メモ帳


Windowsに標準で付属している「メモ帳」というソフトウェアがありますが、Small Basicでも「メモ帳もどき」なプログラムを作ることができます。
何故「もどき」なのかというと、Small Basicの機能ではどうしても出来ないことがあるからです。
例えば「名前を付けて保存」が、メモ帳と完全に同じ形で再現できません。
「名前を付けて保存」で出てくるダイアログを出す機能が、Small Basicにはないからです。
これです↓

メモ

他にも無理なこともありますが、とりあえず、Small Basicでできるだけメモ帳っぽいものを作ってみるとしましょう。

実は、メモするだけのプログラムなら簡単に作ることができます。
Controls.AddMultiLineTextBox(left, top)」を使えばOKです。
これは、複数行のテキスト入力ボックスを作成するオブジェクトです。

GraphicsWindow.Title = "memo"
GraphicsWindow.Width = 600
GraphicsWindow.Height = 400
memo = Controls.AddMultiLineTextBox(1, 20)
Controls.SetSize(memo, GraphicsWindow.Width-2, GraphicsWindow.Height-25)

メモ

「memo」という名前のテキスト入力ボックスを作って、Controls.SetSizeで大きさを決めています。
テキスト入力ボックス部分に文字を書き込むことができますので、これでも立派なメモ帳です。
フォントや文字色を指定していないので、デフォルトのフォント・文字色が使われています。

GraphicsWindow.Title = "memo"
GraphicsWindow.Width = 600
GraphicsWindow.Height = 400
GraphicsWindow.FontName = "Meiryo UI"
GraphicsWindow.FontSize = 16
GraphicsWindow.BrushColor = "Black"
memo = Controls.AddMultiLineTextBox(1, 20)
Controls.SetSize(memo, GraphicsWindow.Width-2, GraphicsWindow.Height-25)

メモ

フォント、フォントサイズ、文字色は好きなように指定できます。
本物のメモ帳なら設定でフォントやサイズを好きなように変更できますが、Small Basicの場合はボタンを設置して切り替えるとか、それくらいが限界ですね。

次は、テキストのセーブとロードをなんとかしてみましょう。
セーブやロードも、ダイアログを出せないので異なる方式にするしかありません。
ひとまず、保存用ファイル名は「D:\testmemo.txt」にしてみましょう。
ファイル名はお好きなものに変更してOKですが、フルパスで記述してください。
(ファイル名だけではなくドライブ名やフォルダ名も必要ということです。このあたりのパソコン用語がわからない場合は別途調べていただくということで……)

テキストを保存する方法ですが、

1. 「Controls.GetTextBoxText(textBoxName)」で、TextBoxの現在のテキストを取得。
2. 「File.WriteContents(filePath, contents)」で、ファイルを開いて、指定された内容をそのファイルに書き込む。

です。
これを、「保存」ボタンを押した時に実行できるようプログラムを考えます。

GraphicsWindow.Title = "memo"
GraphicsWindow.Width = 600
GraphicsWindow.Height = 400
GraphicsWindow.FontName = "Meiryo UI"
GraphicsWindow.FontSize = 16
GraphicsWindow.BrushColor = "Black"
memo = Controls.AddMultiLineTextBox(1, 50)
Controls.SetSize(memo, GraphicsWindow.Width-2, GraphicsWindow.Height-55)

hozonfile = "D:\testmemo.txt" '保存ファイル名

filenamebox = Controls.AddTextBox(150, 1) '保存ファイル名を表示するテキストボックス
Controls.SetTextBoxText(filenamebox, hozonfile) '保存ファイル名を表示するテキストボックスに保存ファイル名を記述しておく
Controls.SetSize(filenamebox, 250, 30)

hozonbutton = Controls.AddButton("保存", 1, 1) '保存ボタン設置
Controls.SetSize(hozonbutton, 50, 30)

Controls.ButtonClicked = buttonclk 'ボタンクリック時のサブルーチン名を「buttonclk」にする

Sub buttonclk
  If Controls.LastClickedButton = hozonbutton Then '保存ボタンを押した時の動作
    hozontext = Controls.GetTextBoxText(memo) 'テキストボックス「memo」のテキストを取得しhozontextと名前を付ける
    getfilename = Controls.GetTextBoxText(filenamebox) '保存用ファイル名を取得
    File.WriteContents(getfilename, hozontext) '保存用ファイルにhozontextを保存
    GraphicsWindow.ShowMessage("保存しました。", "テキスト保存") '「保存しました。」のメッセージボックスを表示
  EndIf
EndSub

メモ

最初は「保存しました。」のメッセージボックスは入れずに作っていましたが、これを入れないと本当に保存したのかどうかわかりにくいので入れておきました。
メッセージボックスだと「OK」をクリックして消す手間がかかるため、邪魔だなと思ったら別の方法、例えば音を鳴らすとか、別の場所に「保存しました」と表示を出すとかなどでも良いと思います。

以上を実行して、テキストファイルがちゃんと出来ているか確認してみてください。
更にこれをメモ帳などで開くと、保存したテキストを見られるはずです。

なお、

getfilename = Controls.GetTextBoxText(filenamebox) '保存用ファイル名を取得

これにより、保存用ファイル名は保存ボタン右のテキストボックスに書かれているファイルになります。
つまり、このテキストボックスの内容を書き換えれば、保存用ファイルを変更できるということです。

メモ

これだと、「D:\henkou.txt」が保存先です。
これで、一応保存ファイルの名前変更ができるようになりました。

最後に、ファイルのロード機能を付けてみます。
「開く」ボタンでファイルを開くようにしてみましょう。
File.ReadContents(filePath)を使うと、ファイルの内容を読み込めます。
更にControls.SetTextBoxText(textBoxName, text)を使って、テキストボックスに読み込んだ内容を設定すれば良いでしょう。
ボタン設置は、

hirakubutton = Controls.AddButton("開く", 60, 1)
Controls.SetSize(hirakubutton, 50, 30)

そして以下をサブルーチン「buttonclk」内に記述すれば「開く」ボタンが機能するようになります。

  If Controls.LastClickedButton = hirakubutton Then
    getfilename = Controls.GetTextBoxText(filenamebox)
    loadtext = File.ReadContents(getfilename)
    Controls.SetTextBoxText(memo, loadtext)
  EndIf

本当は読み込むファイルが存在しない時に「そのファイルはありません」みたいな表示を出したいところですが、「あるファイルが存在するかどうか」を確認するプログラムは、Small Basicだとちょっとめんどくさいので上では省いています。
ちなみに、ファイルが存在しない時に「開く」ボタンを押しても何も起こりません。

メモ

プログラム全体は以下の通りです。
レイアウトが微妙なのでw、そこらへんはお好みで色々といじってみてください。

GraphicsWindow.Title = "memo"
GraphicsWindow.Width = 600
GraphicsWindow.Height = 400
GraphicsWindow.FontName = "Meiryo UI"
GraphicsWindow.FontSize = 16
GraphicsWindow.BrushColor = "Black"
memo = Controls.AddMultiLineTextBox(1, 50)
Controls.SetSize(memo, GraphicsWindow.Width-2, GraphicsWindow.Height-55)

hozonfile = "D:\testmemo.txt"

filenamebox = Controls.AddTextBox(150, 1)
Controls.SetTextBoxText(filenamebox, hozonfile)
Controls.SetSize(filenamebox, 250, 30)

hozonbutton = Controls.AddButton("保存", 1, 1)
Controls.SetSize(hozonbutton, 50, 30)

hirakubutton = Controls.AddButton("開く", 60, 1)
Controls.SetSize(hirakubutton, 50, 30)

Controls.ButtonClicked = buttonclk

Sub buttonclk
  If Controls.LastClickedButton = hozonbutton Then
    hozontext = Controls.GetTextBoxText(memo)
    getfilename = Controls.GetTextBoxText(filenamebox)
    File.WriteContents(getfilename, hozontext)
    GraphicsWindow.ShowMessage("保存しました。", "テキスト保存")
  EndIf
  
  If Controls.LastClickedButton = hirakubutton Then
    getfilename = Controls.GetTextBoxText(filenamebox)
    loadtext = File.ReadContents(getfilename)
    Controls.SetTextBoxText(memo, loadtext)
  EndIf
EndSub


▲TOPへ戻る