ウィンドウズには、「付箋」というソフトが付いています。一見便利なのですが、困ったのは、
- 新しい付箋を作るのは簡単です
- 調子に乗っているうちに、付箋がどんどん増える
- それを削除するのは、一つずつしかできない
- まとめて削除できないので、たくさん作った付箋にうんざりしてしまう
ちょっとしたメモに使いたい、という目的にとっては立派すぎるのです。
パソコンのホワイトボード
磁石で貼り付けるホワイトボードは、私の愛用品です。それが好きなのは、
- 簡単に書ける
- 視線を動かすだけで、すぐ見える
- 簡単に消せる
という点にあります。こうしたものがパソコンにも、あったら良いですね。
長文で保存したいものは、テキストとして保存したら良いのです、ちょっと書いて、すぐ消せる、そういうものがあったら良いな、と思って、「じゃ、作ってしまえ」で、作りました。
例えば、PDFファイルで、ロックされたものがあります。簡単にコピーできません。そういう時には、必要部分をメモ打ちして、そのメモしたものをコピーして、他で使いたい、と思ったりします。そうした時は、エディタを開くのももどかしく、もっと軽くて小さい、ちょこっと書けるものがあればなあ、と思ってきたものです。
そうした時に、このホワイトボードは役立ちます。
また、ふと思いついたアイデア、用事、ちょっとしたメモ、に使えます。磁石で貼り付けるホワイトボードと、うまく使い分けしたら良いと思います。
4つのテキストボックスでホワイトボード
4つのテキストボックスだけです。スクロールバーが一応ありますが、ソフトを軽くするために、文字数は、256文字までと、制限しています。制限数になると、それ以上打てなくなります。狭くて困る場合には、テキストエディタなどをお使いください。
スクロールバーは、ホワイトボードとしては邪魔なだけと思いますが、まさかの時のために、付けています。改行をうまく使えば、テキストボックス1つに、スクロールなしに、3つくらいの項目を書けると思います。
テキストボックスの背景色、フォントを変えていますので、気分に合わせて、4つのエリアを使い分けできます。
なお、当初は、テキストボックスの文字数を256字に限定していましたが、尻切れしてしまうので、無限定(といっても何十億が限界らしい)に、変更しました。変更しても、メモリ使用量は4.8MBから4.9MBにしか増えません(ほぼ空の状態で)。(2023/11/15)
テキスト、ウインドウ位置を保存
ホワイトボードを閉じても、テキストボックスの内容とウインドウ位置は保存されます。次に起動した時には、同じ位置に、同じ内容で表示されます。
右クリックメニューに、「消去」と「全体をコピー」、があります。
たったこれだけのものです。意外と便利です。
ただ、残念なことに、起動するまでの時間が、かなりかかります。スタートアップにショートカットをいれておいて、常駐させておくと便利です。
ウインドウ最前面に
ウインドウが、最前面のままの状態だと便利なことがあるので、最初は最前面にしました。追加された右クリックメニューで、解除もできます。(2023/11/15)
最前面を解除すると、右クリックメニューも、ウインドウ最前面に変わります。これをクリックで、再度、最前面にできます。
「ホワイトボード」 のダウンロード
zipファイルです。解凍すると、whiteboardフォルダーには、
のようにファイルが入っています。適当な場所に置いて、ホワイトボード=whiteboard.exe をダブルクリックし、起動してください。このページへのリンクも入っていますので、分からなくなったら、ここにお越しください。
whiteboard
ダウンロードの際に、次のような警告が出ます。^で、継続、ダウンロードした上で、
アンチウイルスソフト(右クリックメニューでMicorsoft Definderなど)でスキャンしてから、お使い下さい。Windows PC 専用のソフトです。
試してみて、どうだったか、ここをこうしたら良いのではないか、とか、ご意見、ご感想をいただければ幸いです。コメント欄、または「お問い合わせ」からお願いします。
VB.NETのコード
コードは次のようなものです。安心していただけましたら、ダウンロードして、お使いください。
Imports System.ComponentModel Public Class Form1 Private Const WINDOWPOS_FILE_NAME = "winpos.txt" Private Const SAVETEXT_FILE_NAME = "data.txt" Private Const DELIMITTER_STR = "//delimit//" Dim tbs() As TextBox Dim tbx As TextBox Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load tbs = {TextBox1, TextBox2, TextBox3, TextBox4} SetWinPos() SetTexts() TextBox1.SelectionStart = 0 TextBox1.SelectionLength = 0 End Sub Private Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing WriteWinPos() SaveTexts() End Sub Private Sub SaveTexts() Dim n Dim sw As New System.IO.StreamWriter(SAVETEXT_FILE_NAME, False) 'Falseは上書き、ファイルがなければ作ってくれる For n = 0 To tbs.Count - 1 sw.WriteLine(tbs(n).Text) sw.WriteLine(DELIMITTER_STR) Next sw.Close() End Sub Private Sub SetTexts() Dim n, t, tbtxt If (Not (System.IO.File.Exists(SAVETEXT_FILE_NAME))) Then 'ファイルがなければパス Exit Sub End If Dim sr As New System.IO.StreamReader(SAVETEXT_FILE_NAME) tbtxt = "" n = 0 Do Until sr.EndOfStream t = CStr(sr.ReadLine()) If t = DELIMITTER_STR Then tbs(n).Text = tbtxt tbtxt = "" n += 1 If n >= tbs.Count Then GoTo n_over Else tbtxt += t End If Loop n_over: sr.Close() End Sub Private Sub WriteWinPos() If (Me.Left + Me.Top) < -100 Then 'windowsで閉じられたら書かない Exit Sub End If Dim sw As New System.IO.StreamWriter(WINDOWPOS_FILE_NAME, False) 'Falseは上書き、ファイルがなければ作ってくれる sw.WriteLine(Me.Left) sw.WriteLine(Me.Top) sw.Close() End Sub Private Sub SetWinPos() If (Not (System.IO.File.Exists(WINDOWPOS_FILE_NAME))) Then 'ファイルがなければパス Exit Sub End If Dim sr As New System.IO.StreamReader(WINDOWPOS_FILE_NAME) Dim l, t As Integer t = sr.ReadLine() l = sr.ReadLine() sr.Close() Me.Location = New Point(t, l) End Sub Private Sub TextBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles TextBox1.MouseDown, TextBox2.MouseDown, TextBox3.MouseDown, TextBox4.MouseDown If e.Button = MouseButtons.Right Then tbx = sender End If End Sub Private Sub 消去ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 消去ToolStripMenuItem.Click If tbx IsNot Nothing Then tbx.Text = "" End If tbx = Nothing End Sub Private Sub 全体をコピーToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 全体をコピーToolStripMenuItem.Click If tbx IsNot Nothing Then Clipboard.SetText(tbx.Text) End If tbx = Nothing End Sub Private Sub ウインドウ最前面を解除ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ウインドウ最前面を解除ToolStripMenuItem.Click If Me.TopMost Then Me.TopMost = False Me.ウインドウ最前面を解除ToolStripMenuItem.Text = "ウインドウ最前面" Else Me.TopMost = True Me.ウインドウ最前面を解除ToolStripMenuItem.Text = "ウインドウ最前面を解除" End If End Sub End Class
コメント