Lazarus – コメント入力エディタの開発

LazarusはLinux、Windows上で動作するFree Pascalの統合開発環境である。Free Pascalは、オープンソースのObject Pascalであり、DelphiやTurbo Pascalといった言語仕様に対応している。そのため、LazarusはDelphiと互換性が高く、Delphiのプロジェクト変換することで利用できる仕様となっている。もちろん、すべてそのまま使えるわけではないが、移植性において、少ない開発コストでLinuxのアプリケーションを開発することができるようになっている。

Lazarudスタートアップ画面

Lazarusの公式リリースのバージョンは、2.0.12である。現在は2.2の開発が進められおり、SourceForgeから2.2RC-1をダウンロードすることができるが、開発バージョンなので注意が必要である。また、LazarusのFree Pascalのバージョンは3.2.0だが、すでに3.2.2がリリースされている。インストールするのは自由だが、できるならLazarusの公式サイトから、Lazarusと一緒にダウンロードできるようになるまで待つことをお薦めする。

Lazarusによる開発手順

Lazarusによるデスクトップアプリケーションの開発手順は、次のようになる。この手順は、Visual Studio、Delphiでも基本的に変わらない。

  1. フォームの作成
  2. エディットボックスやボタンなどコンポーネントの配置
  3. コンポーネントやフォームのプロパティを設定
  4. コンポーネントやフォームに対してコードを記述
  5. デバッグ
  6. テスト
  7. 構築

Visual Studio、Delphi、Lazarusなどの統合開発環境を使用してGUIアプリケーションを開発する場合は、一から開発していくのに較べて、コードの記述が少なくて済むという利点がある。

コメント入力エディタの開発

現在は、Lazarusのソースエディタで、日本語を入力することができない(日本語表示はできる)。これはGTK2で開発されたことによるとされている。日本語を直接入力することはできないが、コピー&ペーストで日本語を入力して表示することは可能である。これが今回、コメント入力エディタを作ろうとした動機である。英語でも構わないが、ダイアログなど日本語表示したい場合は必要になると考えた次第だ。

フォームを作る

[プロジェクト(P)]から[新規プロジェクト…]を作成する。上記のような画面になるので、[名前を付けてプロジェクト保存…]で保存する。ここでは、プロジェクト名をLeditorと付けた。Formを適当な大きさにして、コンポーネントパネルからTEditを1個配置する。長さも適当である。Formの高さを適当小さくしておく。次に、フォームとTEditにプロパティを設定する。

TEditのプロパティ
プロパティ設定値備考
Textなし
NameLineEdit
AutoSelectFalseここがTrueだと日本語を入力時に確定しても選択状態になるため、確定後に日本語を入力すると、すでに確定(選択状態のまま)した文字が消えてしまう。
Formのプロパティ
プロパティ設定値備考
ActiveControlLineEditコンポーネントのTEditの名前をドロップダウンリストから選択するだけ。
FormStylefsSystemStayOnTop常に画面上に表示する。fsStayOnTopがあるが、これは複数のFormのためのものであり、設定してもフォーカスが移動すると、隠れてしまう。
BorderIcons[biSystemMenu]biMaximizeとbiMinimizeをFalseにして、閉じるボタンだけ残す。
Captionコメント入力エディタ

以上の設定が終わったら、[プロジェクト]→[プロジェクト保存]しておく。こまめな保存は開発において非常に大切である。

コードを記述する

プロパティの設定が終わったら、まず、ソースエディタを上にスクロールしてusesにClipbrdを追加する。

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Clipbrd;

次にコードを実装するわけだが、「Enterキーを押したら、テキストをクリップボードにコピーする」だけの簡単なコードである。まず、TEditのイベントのOnKeyPressを選択して、…をダブルクリックする。

procedure TForm1.LineEditKeyPress(Sender: TObject; var Key: char);
begin
  
end;

beginとend;の間に次のコードを記述する。

  if Key = #13 then
    begin
      { Copy to Clipbord }
      Clipboard.AsText := LineEdit.Text;
      LineEdit.Text := '';    // If you comment here, copy and paste
    end

{}と//はコメントである。コードは非常にシンプルで簡単なので、説明しなくてもわかるが、ここで何をしているかというと、「Enterキーが押されたら、入力された文字をクリップボードにコピーして、TEditボックスに入力した文字を削除している」だけである。LineEdit.Text := ”;の部分は、LineEdit.Clearでも構わない。

コンパイル&実行

コードを記述したら、[実行(R)]から[コンパイル]→[実行(R)]するか[実行(R)]する。思ったどおりに動作するかどうか確認しておこう。エラーがあれば、エラーが発生している行とエラー内容がメッセージウィンドウに表示される。

エラーもなく動作も正常であれば、[実行(R)]から[構築]する。これで開発は終わりである。

外部ツールへの登録

作ったら終わりでなく、実際に使えるように外部ツールに登録しておく。[ツール(T)]から[外部ツール設定]を選択して、[外部ツール]から追加する。

入力する項目は「タイトル」「プログラムファイル名」「キー」3つだけである。次のように設定した。

項目名設定内容
タイトルわかりやすい内容にしておく。ここでは「コメント入力エディタ」にした。
プログラムファイル名フルパスで指定する。プログラムは下図のようにギアのアイコンで表示されている。
プロジェクトと同じディレクトリに作成されているので、入力欄の右にあるアイコンをクリックして選択すれば良い。
キーShift、Alt、Ctrlのいずれかにチェックを入れ、ドロップダウンリストからキーを選択する。
ここでは、Alt+Eにした。
外部ツールへ登録
外部ツールへ登録

入力したら[OK]をクリックして、実際に起動するか確認してみよう。

最後に

Lazarusはとにかく検索しても、情報が出てこないといっていいほどである。LazarusやFree Pascal入門で検索しても触り程度であり、ユーザーにとってわかりやすいと言えない。検索するならDelphiをキーワードに続けてFormStyleというように検索する。なぜ、そうするかというと、Lazarus FormStyleでは、英語サイトであり、やや敷居が高いからである。それでも、なかなかわかりやすいのはでてこない。

始めて使用するなら、図書館や古書店で書籍を探すことをお薦めする。基本的にDelphi7やObject Pascalの本が役に立つことが多いはずである。書籍は何冊か出版されているようだが、役に立ちそうな書籍は5,000円近くもするので購入する気が起きない。あとはKindle版が出版されている。いずれにしても、情報を探すのが一番難易度が高いかもしれない。