Sign in Join
Wiki copytemporary

Revision 1 of 4, by Ariben on 3-30-2024. The page as it is now.

Lazarus Tutorial/ja

このLazarusチュートリアルに、遠慮なくあなたの経験を書き加えてみませんか? どうぞご遠慮なく。

概要

Lazarusは Free Pascal コンパイラのためのフリーでオープンソースな開発ツールです。 Lazarus IDEは、機能が豊富なプログラム環境であり、単独で機能するGUIアプリケーションやコンソールアプリケーションを開発できます。 Lazarusは、現在 Linux、 FreeBSD、 Win32 そして Mac OS X の上で動作し、カスタマイズ可能なソースエディタ、FreePascalコンパイラと統合された完全なGUI、 パッケージマネージャやデバッガを持つビジュアルなフォーム作成環境を提供します。

<figure> <img src="Laz_ScreenShot_ja.png" title="スクリーンショット" /> <figcaption>スクリーンショット</figcaption> </figure>

Lazarusでプログラムをはじめてみよう

Lazarusをインストールして、起動してみてください。これだけで、Free PascalやLazarusをつかったプログラムをはじめてみることができます。

起動すると、いくつかのウィンドウがデスクトップ上に現れます。上の方にはメインメニューがあります。左には、オブジェクトインスペクタあります。そのほかのデスクトップの大部分は、ソースコードエディタです。多分Form1ウィンドウが作られていて、ソースエディタに重なっているはずです。

上の方にあるメニューウィンドウの、メニューの下にタブの列があります。'標準'タブが選択されていますね。そこでButtonアイコン(四角の中に「OK」と書いてあるもの)を探してクリックしてください。そして、Form1の上の左中央あたりでクリックしてください。すると'Button1'と書かれた四角い図形(=ボタンです)が現れるはずです。もう一回標準タブのButtonアイコンをクリックして、Form1の右中央でクリックしてください。'Button2'と書かれたボタンが現れます。

Button1をクリックしましょう。オブジェクトインスペクタに、オブジェクトButton1のプロパティが表示されます。'Caption'と名付けられたプロパティに'Button1'と表示されていますね。その部分をクリックして'Button1'を'Press'に書き換えてください。あなたがENTERキーを押すか、別のボックスをクリックすれば、最初にForm1に置いたボタンが'Press'という名前になります。 続いて、オブジェクトインスペクタ上のイベントタブをクリックすると、ボタンに関連付けられている色々なイベントを見ることができます。 イベントには、たとえば、OnClick、OnEnter、OnExitなどがあります。OnClickボックスの右側を選択してください。小さなボックスが...と一緒に表示されます。あなたがこれをクリックすれば、自動的にソースエディタに移動してカーソルはコードの開始部分に移動します。

pascal
  procedure TForm1.Button1Click(Sender: TObject);
  begin
    {ここで次のように入力:}    Button1.caption := 'Press again';
    {エディタは、このプロシージャ名を補完しました。}
  end;

と入力したら、F12を押してソースエディタから出てForm1ウィンドウを選択してください。

続いてButton2のプロパティを編集します。Button2をクリックして、プロパティをオブジェクトインスペクタに表示させてください。Captionプロパティを変更して'Button2'から'Exit'にします。イベントタブを選択して、OnClickボックスをクリックしてください。...をクリックして、ソースエディタに入り、真ん中あたりのプロシージャに

pascal
  procedure TForm1.Button2Click(Sender: TObject);
  begin
    {ここで次のように入力:}   Close;
    {エディタは、このプロシージャ名を補完しました。}
  end;

こう書いて、もう一度F12を押してForm1ウィンドウに戻ります。 これで、コンパイルを試みる段階まで来ました。コンパイルはとても簡単です。メインメニューにある'実行'を選択するだけです。 サブメニューで'実行'のオプションを選ぶこともできます。 また、単純にF9を押しても行えます。最初のコンパイルが行われ(うまくいけば)、リンクが完了し、コンパイルされたプログラムが実行されます。

複数のテキストウィンドウが現れてすべてのコンパイラメッセージが表示され、その後はForm1ウィンドウが現れますが、グリッドの点は表示されません。これはあなたのアプリケーションのメインウィンドウであり、あなたがボタンを押すか他の方法で操作をするのを待っています。

では'Press'と書かれたボタンを押してみましょう。あなたはそれが'Press again'と変わることに気づくでしょう。あなたがそれをもう一度押してもそれは'Press again'でしょう!!

'Exit'のボタンも押してみます。ウィンドウが閉じてプログラムが終了します。オリジナルのForm1ウィンドウがドットによるグリッドとともに表示され、編集可能な状態になります。

それではこれまでの作業を保存しておきましょう(これは頻繁に行いましょうね!!)。プロジェクトメニュー > 別名で保存 > your_selected_file_name.pas(適当な名前を付けます)とすれば完了です。これで、プログラムを終了して、PCの電源を切っても、保存したところから作業を再開できます。

プログラムを変更する

先ほど保存しておいた、プロジェクトを開いてください。 Form1ウィンドウにある'Press'ボタンをクリックして、選択してください。 オブジェクトインスペクタのイベントタブを選択して、OnClickボックスの右側をクリックして、ソースエディタの適切な位置に戻りましょう。

次に続くコードを参考に、さきほどのコードを書き直してみてください。

pascal
  procedure TForm1.Button1Click(Sender: TObject);
 {TButtonのTagプロパティを使います。ここでは0か1の値を設定しています。}
  begin
    if Button1.tag =0 then
    begin
      Button1.caption := 'Press again';
      Button1.tag := 1
    end else
    begin
      Button1.caption := 'Press';
      Button1.tag := 0
    end
  end;

保存し、もう一度コンパイルして実行しましょう。このコードによって、左側のボタンを押すと、今度はふたつのメッセージを交互に表示するようになりました。

さあ、後は自由に工夫してみてください。

もし、このようなGUIをもつプログラムでなく、たとえばあなたが基本的なPascalプログラミングを試してみたい、とかバッチモードで動作するプログラムを書く必要がある、とかシステムプログラミングをしたいとかそういう時には、コンソールやテキストベースのPascalプログラムを書く場面があるかもしれません。

そんな時にも、プログラムを編集、コンパイル、実行するために、Pascalの統合開発環境としてLazarusを使うことができます。 LazarusはPascalによる開発のための理想的な環境を作ります。詳しくはコンソールモードPascalをご覧ください。

エディタのウインドウ

Lazarusを起動すると、いくつかに分割されている'フローティング'ウィンドウが、あなたのデスクトップ上に現れます。

デスクトップ右上に、Lazarus Editor vXXXXXX - project1(これはあなたが現在開いているプロジェクトの名前になります)とタイトルに書かれたものが表示されています。

これがプロジェクトのメインコントロールウィンドウで、メインメニューとコンポーネントパレットを含んでいます。

<center>

<figure> <img src="LazMain_ja.png" title="LazMain_ja.png" /> <figcaption>LazMain_ja.png</figcaption> </figure>

</center>

タイトルバー下のラインはメインメニューでファイル、編集、検索、表示メニューなどを含んでおり、Lazarusの基本的な操作をおこなえます。

この下に一組のビットボタン(よく使うメニューアイテムへのショートカットになっています)があり、その右側にはコンポートネントパレットがあります。

Lazarus Editorウィンドウの下にはオブジェクトインスペクタが左側に、 ソースコードエディタが右側にあります。他に小さな窓があり、Form1と名付けられていてLazarusソースエディタウィンドウの上に覆いかぶさっているでしょう。これが見えなければF12キーを押すことですぐに画面上に復帰させることができます。 Formウィンドウはあなたのアプリケーションのグラフィカルインターフェイスを作成するためにあり、ソースエディタはあなたのアプリケーションのPascalコードを表示します。The operation of the Object Inspector is discussed in more detail below while the Component Palette is described.

あなたが新しいプロジェクトを始めるとき、(Lazarusもしくはあなたが最初にLazarusを起動するとき)デフォルトのフォームが既に作成されていることでしょう。ここにはドットでグリッドが描かれており、あなたがコンポーネントをフォームに配置するときの手助けをします。そしてタイトルバーには最小化、 最大化 そして 閉じるのボタンがあります。もし あなたがこのウィンドウをクリックすればデスクトップの左側にあるオブジェクトインスペクタにこのフォームのプロパティが表示されます。

他のウィンドウが貴方の作業中に目にはいるようになることもあるでしょう。 プロジェクトインスペクタはあなたのプロジェクトの詳細と、関連するファイルを表示し、またファイルの追加や削除を行うことができます。メッセージウィンドウ は貴方のプロジェクトに関するコンパイラからのメッセージやエラー、もしくは進行状態を表示します。もしもLazarusをターミナルウィンドウから起動しているなら、本来ターミナルに表示されるべきことがらや、コンパイラメッセージの詳細が出力されます。

メインメニュー

Lazarus IDEのメインメニューからアクセスできるすべてのメニューアイテムの詳細な説明については、Main menu/jaページを参照してください。

IDE クールバー

<figure> <img src="ide_coolbar.png" title="ide_coolbar.png" /> <figcaption>ide_coolbar.png</figcaption> </figure>

メインコントロールウィンドウの左側、メインメニューの直下、コンポーネントパレットの左にIDEクールバーがあります。ここには、メインメニューの中でよく用いられる機能のボタンがあります:

新規ユニット、開く (ボタン右側の下向き矢印を押すと最近扱ったファイルの一覧が表示されます)、保存、すべて保存、新規フォーム、フォーム/ユニット切り替え(フォームかユニットのソースコードを表示)、ユニットを表示、フォームを表示、実行(コンパイルして実行)、一時停止、トレース実行、ステップ実行(最後の2つはデバッガの機能)

コンポーネントパレット

コンポーネントパレットとは、多くのアイコンが並んだタブ付きのツールバーのことです。各アイコンは、フォームを作成する際によく用いられるコンポーネントを表しています。

<figure> <img src="Component_Palette_Standard.png" title="size="100%" /> <figcaption>size="100%</figcaption> </figure>

それぞれのタブは機能ごとに分けられており、異なった組のアイコンからなります。 全てのタブでは、一番左に矢印のアイコンがあります。これは選択ツール(Selection Tool)と呼びます。

マウスカーソルをコンポーネントパレットのアイコンの上に移動して、しばらくクリックしないで待つと、アイコンが意味するコンポーネントの名前がポップアップします。 それらの名前がすべて 'T' で始まることに注意してください。これは、そのコンポーネントの 「型:'Type'」 、正確に言うとコンポーネントの 「クラス:'Class'」 を示しています。

コンポーネントをフォームに加えると、その Class が Unit の Interface 部の Type セクションに追加されます。(通常は TForm1 の定義の一部として) 同時に、そのクラスの instance が Var セクションに加えられます(通常、Form1という名前の変数として)。 フォームやコンポーネントが用いる Methods は、全て(つまり全ての Procedure と Function )、そのユニットの Implementation 部で宣言する必要があります。

コンポーネントのサンプルプログラム

コンポーネントのサンプルプログラムは、 $LazarusPath/lazarus/examples に保存されています。

多くのプログラムで、IDEやコンポーネントパレットを使わないでダイアログや他のコンポーネントを利用する方法が分かるでしょう。全てのコンポーネントは、明確に主となるpascalプログラムで定義されています。 IDEを大いに利用するサンプルもあります。

サンプルプログラムの中には、そのままでは動作しないものもあるでしょう。ファイルやディレクトリのパス、パーミッションを設定する必要があるかも知れません。サンプルプログラムをコンパイルするにあたり、ファイル及びディレクトリに対する 読み/書き/実行 (read/write/execute) のパーミッションを確認して下さい。または適切なパーミッションを持ったディレクトリにファイルをコピーしてください。

まずは、'testall' プログラムを実行してみましょう。利用可能なコンポーネントのメニューと簡単な実行例があります。コードを読んでどう動いているか調べてみましょう!

コンポーネントの一覧

コンポーネントの一覧を以下に示します。各ユニットには、それらの解説するページへのリンクが張ってあります(ないのもあります)。 あるコンポーネントのプロパティについて知りたければ、そのコンポーネントの継承を調べ、継承元となるコンポーネントについて調べるとよいでしょう。 例えば、TMaskEdit について理解することは、 TCustomMaskEditについて調査する際にも役に立ちます。

タブの名前 (タブ自体の名前がおよその説明になっています。)

<center>

<figure> <img src="Component_Palette_Standart.png" title="Component_Palette_Standart.png" /> <figcaption>Component_Palette_Standart.png</figcaption> </figure>

</center>

TMainMenu, TPopupMenu, TButton, TLabel, TEdit, TMemo, TToggleBox, TCheckBox, TRadioButton, TListBox, TComboBox, TScrollBar, TGroupBox,TRadioGroup, TCheckGroup, TPanel, TActionList

<center>

<figure> <img src="Component_Palette_Additional.png" title="Component_Palette_Additional.png" /> <figcaption>Component_Palette_Additional.png</figcaption> </figure>

</center>

TBitBtn, TSpeedButton, TStaticText, TImage, TShape, TBevel, TPaintBox, TNotebook, TLabeledEdit, TSplitter, TTrayIcon, TMaskEdit, TCheckListBox, TScrollBox, TApplicationProperties, TStringGrid, TDrawGrid, TPairSplitter, TColorBox, TColorListBox, TChart

<center>

<figure> <img src="Component_Palette_Common_Controls.png" title="Component_Palette_Common_Controls.png" /> <figcaption>Component_Palette_Common_Controls.png</figcaption> </figure>

</center>

TTrackBar, TProgressBar, TTreeView, TListView, TStatusBar, TToolBar, TUpDown, TPageControl, TTabControl, THeaderControl, TImageList, TPopupNotifier

<center>

<figure> <img src="Component_Palette_Dialogs.png" title="Component_Palette_Dialogs.png" /> <figcaption>Component_Palette_Dialogs.png</figcaption> </figure>

</center>

TOpenDialog, TSaveDialog, TSelectDirectoryDialog, TColorDialog, TFontDialog, TFindDialog, TReplaceDialog, TOpenPictureDialog, TSavePictureDialog, TCalendarDialog, TCalculatorDialog, TPrinterSetupDialog, TPrintDialog, TPageSetupDialog

パレットに含まれていませんが、他にもいくつかの便利な ダイアログ手続きや関数があります。それらはソースプログラムから直接に呼び出せ、簡単に利用できます。

<center>

<figure> <img src="Component_Palette_Misc.png" title="Component_Palette_Misc.png" /> <figcaption>Component_Palette_Misc.png</figcaption> </figure>

</center>

TColorButton, TSpinEdit, TFloatSpinEdit, TArrow, TCalendar, TEditButton, TFileNameEdit, TDirectoryEdit, TDateEdit, TCalcEdit, TFileListBox, TXMLPropStorage, TIniPropStorage, TBarChart, TButtonPanel, TIDEDialogLayoutStorage

<center>

<figure> <img src="Component_Palette_DataControls.png" title="Component_Palette_DataControls.png" /> <figcaption>Component_Palette_DataControls.png</figcaption> </figure>

</center>

TDBNavigator, TDBText, TDBEdit, TDBMemo, TDBImage, TDBListBox, TDBComboBox, TDBCheckBox, TDBRadioGroup, TDBCalendar, TDBGroupBox, TDBGrid

<center>

<figure> <img src="Component_Palette_DataAccess.png" title="Component_Palette_DataAccess.png" /> <figcaption>Component_Palette_DataAccess.png</figcaption> </figure>

</center>

TDatasource, TMemDataset, TSdfDataSet, TFixedFormatDataSet, TDbf

<center>

<figure> <img src="Component_Palette_System.png" title="Component_Palette_System.png" /> <figcaption>Component_Palette_System.png</figcaption> </figure>

</center>

TTimer, TIdleTimer, TLazComponentQueue, THtmlHelpDatabase, THtmlBrowserHelpViewer, TProcessUTF8, TAsyncProcess, TProcess, TSimpleIPCClient, TSimpleIPCServer, TXMLConfig, TEventLog

<center>

<figure> <img src="Component_Palette_SynEdit.png" title="Component_Palette_SynEdit.png" /> <figcaption>Component_Palette_SynEdit.png</figcaption> </figure>

</center>

TSynEdit, TSynAutoComplete, TSynExporterHTML, TSynMacroRecorder, TSynMemo, TSynPasSyn, TSynFreePascalSyn, TSynCppSyn, TSynJavaSyn, TSynPerlSyn, TSynHTMLSyn, TSynXMLSyn, TSynLFMSyn, TSynUNIXShellScriptSyn, TSynCssSyn, TSynPHPSyn, TSynTeXSyn, TSynSQLSyn, TSynPythonSyn, TSynVBSyn, TSynAnySyn, TSynMultiSyn

SynEditは、 Borland Delphi, Kylix と C++Builder用の複数行編集コントロールであり、文法ハイライト機能やコード補完機能、HTMLやTeX、RTFへのエクスポート機能を持っています。これは完全なVCL/CLXコントロールであり、Microsoft Windows のコントロールのラッパーではなく、ランタイムライブラリを必要としない、クロスプラットフォームで利用できるコンポーネントです。FreePascalとの互換性も計画されており、 Lararus IDE をエディタも SynEditが利用されています。sourceforgeも参照ください。

コンポーネントパレットの使い方

コンポーネントパレットの利用にあたっては、フォームが作成されており、エディタ上で見えている必要があります(フォームが無い場合は、 File -> New Form で新たなフォームが作成してください)。 次に、使いたいコンポーネントのアイコンをクリックして選択し、フォーム上のコンポーネントを配置したい位置でクリックすることで、選択されたコンポーネントが配置されます。 コンポーネントの移動やサイズの調整は、マウスで直接操作することでもできますし、コンポーネントのプロパティの値をオブジェクトエディタから直接操作することでもできます。

コンポーネントを新たに追加したときには(自作や他のパッケージから追加するなど)、コンポーネントパレットに新しいタブが現れ、コンポーネントに応じたアイコンが表示されます。それらは他のコンポーネントと同様に使用できます。

デバッガ

(まだ書かれていません)

Lazarusのファイルについて

ファイルの保存操作をすると、次の二つのファイルを保存することになります:

  xxx.pas
  yyy.lpr 

他にも保存されるファイルはありますが、あなたが名前をつけられるのはこの二つです。 プロジェクトファイル (lpr) 及びユニットファイル (pas) は同じ名前であってはいけません。Lazarus はユニットの名前(ソースコードに現れる名前)をユニットファイル名(xxxの部分)と同じになるように、またプログラムの名前をプロジェクトファイル名(yyyの部分)と同じになるように設定するので、同じになっていると、プロジェクト中で識別子が重複してしまいます。 一貫性を維持するため、project1 や、unit1 に適当な名前をつけましょう。

たとえば、again という名前のプロジェクトを保存しようとする際に、again.pas と again.lpr という名前で保存しようとするとうまくいきません。ユニット名とプログラム名は同じプロジェクト中にあるため、名前が重複したというエラー duplicate name error になります。

そこで、次のようになりました:

e:/lazarus/kj/lazhello:

total 4740  free 76500
-rwxrwxrwx   1 kjwh     root  4618697 Mar 24 11:19 again.exe
-rw-rw-rw-   1 kjwh     root     3002 Mar 24 11:21 again.lpi
-rw-rw-rw-   1 kjwh     root      190 Mar 24 11:18 again.lpr
-rw-rw-rw-   1 kjwh     root      506 Mar 24 11:08 againu.lfm
-rw-rw-rw-   1 kjwh     root      679 Mar 24 11:08 againu.lrs
-rw-rw-rw-   1 kjwh     root      677 Mar 24 11:08 againu.pas
-rw-rw-rw-   1 kjwh     root     2124 Mar 24 11:08 againu.ppu
-rwxrwxrwx   1 kjwh     root      335 Mar 24 11:07 ppas.bat

二つのファイル (again.lpr、againu.pas) を保存したと思っていたのに、もっと多くのファイルが保存されています。

それぞれのファイルの簡単な説明をしておきましょう:

again.exe:
メインプログラムのバイナリ実行ファイルです。Win32では拡張子"exe"がつきます。Linux(やMac OS X)では何もつきません。デバッグ用のシンボルを含むために、Linuxでは巨大なファイルになります。"strip"コマンドでそれらを除去すると実行ファイルを小さくすることができます。

again.lpi:
Lazarus プロジェクトのメインファイルです (Lazarus Project Information); Delphi でこれと同等なものが .dpr です。このファイルは XML フォーマットで保存されます。

again.lpr:
メインプログラムのソースファイルです。Lazarus特有の拡張部分を除くと、実際にはごく普通の Pascal ソースファイルです。

uses節があり、コンパイラはその記述に従って必要な全ユニットを見つけます。Program 宣言の名前はファイル名と一致する必要があります。

againu.lfm:
フォームユニットのレイアウトを格納します。Lazarus はこれを用いてリソースファイルを生成し、それが againu.pas の初期化セクション でインクルードされます。 Lazarus IDE の Tools->Convert DFM file to LFM utility を用いると、Delphi の dfm ファイルをlfmに変換することができます。

againu.lrs:
生成されたリソースファイルです。Windows のリソースファイルとは異なります。

againu.pas:
このユニットにフォームのコードを書きます。

againu.ppu:
ユニットをコンパイルしたオブジェクトコードです。

ppas.bat:
プログラムをリンクし実行ファイルを作るための簡単なスクリプト(バッチファイル)です。コンパイルが成功すれば、コンパイラによって削除されます。

Original contributors and changes

This page has been imported from the epikwiki version.


From the Free Pascal wiki, page "Lazarus Tutorial/ja", as it stood on 2024-03-30 after a change by Ariben, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.