2010年5月20日木曜日

英字ドキュメント読み支援ツール その5

今回は、通知領域でのアイコンと右クリックメニューと、大量データ保存に耐えられるストレージを作ります。
まずは、前回の終了時のところから


通知領域でのアイコン表示をさせます。Form1のデザイナ画面で、
ツールボックスの[コモンコントロール]からNotifyIconをダブルクリック。
ソリューションエクスプローラのWindowsFormsApplication44で右クリック→追加→新しい項目で、アイコンファイル"Icon.ico"を追加。
notifyIcon1のプロパティで、Iconをクリック...をクリックして、ファイル選択で、先ほど追加したIcon.icoを指定。
こんな感じ



続いて右クリックで表示するメニューを追加します。
ツールボックスの[メニューとツールバー]より、COntextMenuStripをダブルクリック
[Windows表示]のメニューを追加、追加メニューの(name)プロパティをShowWindowToolStripMenuItemとする。


notifyIcon1をクリックしプロパティContextMenuStripにさっき追加したcontextMenuStrip1を指定する。

実行すると、左下通知領域にアイコンがでて、これを右クリックするとメニューが表示されることを確認。




続いて、ストレージの件。
まずは、プロジェクトアイテムを追加。
【ウィンドウ追加】
ソリューションエクスプローラで、WindowsFormsApplication44を右クリック→追加→Windowsフォームをクリックし、そのまま追加ボタンを押して、Forms3.csを追加。
【ストレージ追加】
ソリューションエクスプローラで、WindowsFormsApplication44を右クリック→追加→新しい項目をクリックし、サービスベースのデータベースをクリック、Database1.mdfと表示されている状態で、追加ボタンをクリック。直後に表示されるデータソース構成ウィザードではすぐにキャンセルボタンを押す。
続いて、サーバエクスプローラを表示。今の状態はこんな感じ。



続いて、格納領域の構造を作成。
サーバエクスプローラで、「データ接続」→「Database1.mdf」の左の+ボタンをクリックして現れるフォルダ一覧より[テーブル]を右クリックし、新しいテーブルの追加をクリック。以下の4列を追加
1列目:列名:Id,データ型:int,NULLを許容しない、IDENTITYの指定:はい、右クリック→主キーの設定
2列目:列名:OriginalText,データ型:varchar(MAX),NULLを許容しない
3列目:列名:TranslateText,データ型:nvarchar(MAX),NULLを許容する
4列目;列名:PageNum,データ型:int,NULLを許容する
5列目:列名:Paragraph,データ型:int,NULLを許容する。
ここまで打ち込んだら[Ctrl]+Sで、テーブル名をTranslationDataとする。


次に、このテーブル(ファイル上のDB構造)に対応するデータテーブル(インメモリのDB構造であるデータセット上のテーブル)を作成する。
データソースタブをクリックする。


続いて、ソリューションエクスプローラからデータソースにしたいもの(Database1.mdf)をクリック。


データソースウィンドウに現れた「新しいデータソースの追加」リンクをクリック。
表示されるダイアログ「データソース構成ウィザード」で、データベース選択のまま[次へ]→データ接続をDatabase1.mdfのまま[次へ]→接続文字列はそのままにして[次へ]→データベースオブジェクトの選択で、テーブルのTranslationDataにチェックを入れて[完了]
これで、データソースにDatabase1DataSetが表示され、ソリューションエクスプローラに、Database1DataSet.xsdが追加される。

続いてDBデータ編集のWindowsフォーム用に先ほど追加したForm3.csを利用します。
デザイナでForm3.csを編集し、ウィンドウサイズを横に伸ばす。
以下の画面の状態から、



データソースの[TranslationData]をドラッグして、Form3にドロップして、こんな感じにします。


続いて、translationDataDataGridViewの大きさ、配置を変更して、
その下部に2つのTextBoxを配置し大きさを調整。(ともにmultilineをtrueに変更)
左のTextBoxのTabIndexの値+1を右のTextBoxのTabIndexの値に設定。


この後、
データソースのOriginalTextをドラッグして、左側のTextBoxにドロップ。
データソースのTranslateTextをドラッグして、右側のTextBoxにドロップ。
それぞれのTextBoxの(DataBinding)にtranslationDataBindingSourceでそれぞれの列がアサインされていることを確認。

最後にForm3の表示をさせる部分を作りこむ。
Form1のデザインに戻って、contextMenuStip1を選択、メニューの[Windows表示]をダブルクリックして、以下のコードを記述。
private void ShowWindowToolStripMenuItem_Click(object sender, EventArgs e)
{
new Form3().Show();
}

で、実行。
NotifyIconを右クリック、メニューよりWindows表示をクリックすると現れるデータ登録画面で、
新規データ登録する場合は、+ボタン。既存行を変更する場合は、その行をクリック。
で、グリッドビューでは入れにくい改行はテキストボックスを使って編集。
行削除は赤色のバッテンマーク。
これらは、すべてオンメモリ上の操作なので、DB(ファイル)に書き出すには、フロッピーディスクマークをクリック。(これで、次開いたときにも、保存したデータが表示される。)


マイクロソフトのWebサービスの翻訳APIを使ってみても面白そうだけど、これは70-529の範囲だと思うので今回はパス。
で、次回は、最後に、今回のもののインストーラを作ってみます。

0 件のコメント: