「テキストエディタ」を作成してみる
(1)Delphiを起動して新規プロジェクトを作成する。
ファイル⇒新規作成⇒VCLフォームアプリケーションをクリックします。
(2)ボタンを配置する。
右下にあるツールパレットの「Standard」グループ内にある「TButton」をフォームへドラッグ&ドロップします。
そうするとButton1が作成されます。
(3)ボタンに表示されている文字を「開く」に変更する
「Button1」をクリックして選択し、左下ペインにあるプロパティ[Caption]を「Button1」から「開く」に変更します。
そうするとボタンに表示されている文字が「開く」に変わります。
(4)ファイルを開くダイアログをフォームへ配置する。
右下にあるツールパレットの「Dialog」グループ内にある「TOpenDialog」をフォームへドラッグ&ドロップします。
(5)OpenDialog1のプロパティ[Filter]を設定する。
「OpenDialog1」をクリックして選択します。
左下ペインにあるプロパティ[Filter]の[・・・]ボタンをクリックします。
(6)フィルタ名、フィルタを設定する。
フィルタ名とフィルタに「*.txt」を入力し、[OK]ボタンをクリックします。
Filterプロパティに「*.txt|*.txt」と入力されました。
(7)TMemoをフォームにドラッグ&ドロップし大きくする
右下にあるツールパレットの「Standard」グループ内にある「TMemo」をフォームへドラッグ&ドロップし、マウスでドラッグして大きくします。
(8)Memo1のプロパティ[Scrollbars]を設定する
「Memo1」をクリックして選択します。
左下ペインにあるプロパティ[Scrollbars]の右側にある[▼]ボタンをクリックして「ssBoth」に設定します。(スクロールバーが表示されます)
(9)「開く(Button1)」をクリックした時のイベントを作成する
「開く(Button1)」ボタンをクリックして選択します。
左下ペインのタブを「イベント」に切り替えて[OnClick]の右側をダブルクリックします。
(10)「コード」ビューへの切り替わり
上記(9)の操作により「開く(Button1)」ボタンをクリックした時に実行されるプログラムを記述する準備が整いました。
「画面のデザイン」ビューから「コード」ビューに切り替わりました。
「開く(Button1)」ボタンをクリックした時のソースコードの雛型が自動生成されています。
(11)プログラムを記述
以下の赤字の部分を記述します。
参考:「//」の右側の文字はコメントを表します。
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then //・・・①
begin
Memo1.Lines.LoadFromFile( OpenDialog1.FileName, TEncoding.ANSI ); //・・・②
end;
end;
<簡単な解説>
-
①もしも、ファイル選択ダイアログを開いて[開く]ボタンが押されたら
-
if OpenDialog1.Execute then
begin
//ここが実行される
end;
-
②Memo1に選択したテキストファイルを文字コード「Shift-JIS」として読み込む
-
Memo1.Lines.LoadFromFile( OpenDialog1.FileName, TEncoding.ANSI );
<参考>右下にあるタブをクリックすれば「デザイン」と「ソースコード」の表示を切り替えできます。
<参考>プログラムを以下に変えると、文字コードUTF-8のテキストファイルを読み込めます。
(元のソースコードだと文字コードShift-JISのテキストファイルを読み込めます。)
Memo1.Lines.LoadFromFile( OpenDialog1.FileName,TEncoding.ANSI );
↓
Memo1.Lines.LoadFromFile( OpenDialog1.FileName,TEncoding.UTF8 );
(12)プログラムを保存する
上部にある「すべて保存」ボタンをクリックします。
保存先フォルダを「ドキュメント\Embarcadero\Studio\Project」にします。
「新しいフォルダ」をクリックし、フォルダ名を「テキストエディタ」にして、このフォルダをダブルクリックします。
「保存」ボタンを押します。(1つのフォームとそのプログラムソースコードが保存されます)
次にプロジェクト(複数のフォームを束ねるようなもの。フォームが1つでも存在します)の保存先とファイル名を聞いてきますので、
そのまま「保存」ボタンを押します。
これで作成したプログラムの保存が終わりました。
(13)実行する
上部にある右矢印ボタン、又はキーボードのF9を押すとコンパイル(パソコンが理解できる機械語へ翻訳すること)され実行できます。
「開く」ボタンを押すと、テキストファイルを選択できます。テキストファイルを選んで「開く」ボタンを押すとテキストファイルが表示されます。
実行ファイルは既に生成されていて、
c:\users\[OSログインしたユーザー名]\Documents\Embarcadero\Studio\Projects\テキストエディタ\Win32\Debug\Project1.exe
にあります。
このファイルをダブルクリックしても実行できます。
Delphiで作成した実行ファイルは通常、ほかのファイルに依存しないので、単体で実行することができます。(ランタイム配布など通常は必要なし)
上記サンプルではファイルを開くだけですが、
ファイルの保存はTSaveDialog(デフォルトでSaveDialog1の名前になる)と、
保存用のTButton(デフォルトでButton2の名前になる)を、
フォームにドラッグ&ドロップして、保存用の「Button2」ボタンのOnClickイベントに以下ソースコードを入力するだけです。
procedure TForm1.Button2Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
Memo1.Lines.SaveToFile(SaveDialog1.FileName,TEncoding.ANSI);
end;
end;
UTF8で保存する場合は
Memo1.Lines.SaveToFile(SaveDialog1.FileName,TEncoding.UTF8);
とします。
既にオブジェクト指向でプログラミングしている
気づいた方もいらっしゃると思いますが、
DelphiではVB6のようにソースコードを記述するだけでオブジェクト指向プログラミングになっています。
上にスクロールしてソースコードを見ると「TForm」クラスから派生した「TForm1」クラスをプログラミングしていたことがわかります。
//ユニット名「Unit1」(このファイル名は必ずユニット名.pasでなければならない。)
unit Unit1;
//宣言部
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm) //TFormクラスの派生クラスTForm1の宣言
Button1: TButton;
OpenDialog1: TOpenDialog;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
//グローバル変数の宣言
var
Form1: TForm1; //TForm1クラスのインスタンスが入る変数Form1の宣言
//実装部
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Memo1.Lines.LoadFromFile(
OpenDialog1.FileName,TEncoding.ANSI);
end;
end;
end.