Delphi日記
第3章 メニューにイベントを追加する(開く)(11/06/01)
さて、まず既存のファイルを読み込めるようにしたいと思います。
メニューからイベントを呼び出すのですが、まずイベントを作らなくてはなりません。そこでActionList(下図参照)を選択した状態で、フォーム上をクリックし、追加します。このアイコンはMainMenu同様、実行時には見えなくなります。

そしてフォーム上に置いたActionListをダブルクリックします。
すると次のようなウインドウが開くので、赤マルで囲んだところをクリックし、出てきたポップアップメニューから「標準アクションの新規追加」を選択します。

するとまた「標準アクションクラス」というウインドウが現れます。ここで「ファイル」以下の「TFileOpen」をダブルクリックします。すると先程のウインドウの「分類」に「ファイル」、「アクション」に「FileOpen1」が追加されているのがわかります。

何だかわからないのですが(いいのか?)、こーやってアクションを追加すると、何故かメニューの「開く」と対応がとられているようです。
でもこの時点では、まだイベントの内容を定義していないため、実行して「開く」を選択しても何も起こりません。
そこでイベントの中身を記述します。
フォームのウインドウをどかす(または最小化)すると、「Unit1.pas」というウインドウが存在します。これはユニットファイルと呼ばれるモノです。
その中でスクロールしていき、{ Public 宣言 }と書いてあるところを探します。その下の行に
FileName: String;
と入力します。

これはString型のFileNameというインスタンスを定義してるんですけど分からなくてもここでやる事をマネする分には問題ないです。
そしてオブジェクトインスペクタでTFileOpen1を選択し(「オブジェクトツリー」ウインドウから「ActionList1」「ファイル」「FileOpen1」を選択しても同じ)、下の方にある「OnAccept」の白い部分をダブルクリックします。

するとまた先程のユニットファイル(Unit.pas)のウインドウが現れるので、
procedure TForm1.FileOpen1Accept(Sender: TObject);
が最初にあるのを確認してから最初のbeginとendの間に
RichEdit1.Lines.LoadFromFile(FileOpen1.Dialog.FileName);
FileName := FileOpen1.Dialog.FileName;
StatusBar1.SimpleText := FileName;

と入力します。そして実行してみます。何でもいいんですけどテキストファイルを用意して、実行してからメニューから「開く」を選び、そのファイルを選択します。するとそのファイルの内容が表示されます。

とりあえず開けましたが、ファイルを選ぶ際、テキストファイル以外のファイルも全て表示されてしまっています。
そこで先程と同様にオブジェクトインスペクタでTFileOpen1を選択し、「プロパティ」の中の「Dialog」の左の+マークをクリックします。すると中が展開されるので、「DefaultExt」に「txt」と記入し、また、「Filter」の横の白い部分をダブルクリックします。

「フィルタの設定」ウインドウが出てくるので、次のように入力します。

また、先程のオブジェクトインスペクタの「Title」の横に「ファイルを開く」などと入力します。これはファイルを開くウインドウで表示される文字になります。
そして再び実行し、「開く」を選んでファイルを開いて見ましょう。
ウインドウに表示されるファイルは、次のようにテキストファイルのみになっていることに注意します。また「ファイルの種類」を切り替えると、全てのファイルが表示されるようになります。

とりあえず今回はここまでです。
BACK
HOME