Sign in Join
Wiki copytemporary

Lazarus IDE Tools/ja: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1+**日本語版メニュー**
2+---
3+[[Main Page/ja|メインページ]] \- [[Lazarus Documentation/ja|Lazarus Documentation日本語版]] \- [[Japanese Localization Notes|翻訳ノート]] \- [[Bug Tracking/ja|日本語障害情報]]
4+
5+
6+
17## 概要
28
3-IDEは"コードツール"と呼ばれる、pascalソースの構文解析と編集のためのツールのライブラリを使用しています。これらのツールは宣言の探索、コード補完、抽出、pascalのソースの移動・挿入、美化といった機能を提供します。これらの機能は、多くの時間の節約につながり、効率を倍加させてくれます。これらはカスタマイズでき、どの機能もショートカットで利用できます(エディタオプションを見てください)。それらの機能はソースにのみ作用し、fpcやdelphiやkylixコードを解釈するだけなので、コンパイルされたユニットやBorlandコンパイラを必要としません。 あなたはDelphiとFPCコードを同時に編集できます。あなたはいくつかのバージョンのDelphiとFPCコードに同時に取り組むことさえできます。このことがDelphiコードの移植をより容易にします。
9+IDEは"コードツール"と呼ばれる、pascalソースの構文解析と編集のためのツールのライブラリを使用しています。これらのツールは宣言の探索、コード補完、抽出、pascalのソースの移動・挿入、美化といった機能を提供します。これらの機能は、多くの時間の節約につながり、効率を倍加させてくれます。これらはカスタマイズでき、どの機能もショートカットで利用できます(エディタオプションを見てください)。それらの機能はソースにのみ作用し、fpcやdelphiやkylixコードを解釈するだけなので、コンパイルされたユニットやBorlandコンパイラを必要としません。 あなたはDelphiとFPCコードを同時に編集できます。あなたはいくつかのバージョンのDelphiとFPCコードに同時に取り組むことさえできます。このことがDelphiコードの移植をより容易にします。
410
511## IDE ショートカットの要約テーブル
612
7-| | |
8-|-------------------------|-----------------------------------------------|
9-| 宣言への移動 | Ctrl+Click or Alt+Up (型や変数の宣言への移動) |
10-| メソッドへの移動 | Ctrl+Shift+Up (宣言と本体との切り替え) |
11-| コードテンプレート | Ctrl+J |
12-| コード補完 (クラス補完) | Ctrl+Shift+C |
13-| 識別子補完 | Ctrl+Space |
14-| 語句補完 | Ctrl+W |
15-
13+宣言への移動 | Ctrl+Click or Alt+Up (型や変数の宣言への移動)
14+---|---
15+メソッドへの移動 | Ctrl+Shift+Up (宣言と本体との切り替え)
16+コードテンプレート | Ctrl+J
17+コード補完 (クラス補完) | Ctrl+Shift+C
18+識別子補完 | Ctrl+Space
19+語句補完 | Ctrl+W
20+
1621## メソッドへの移動
1722
18-手続きの本体(begin..end)と手続き宣言(procedure Name;)の間の移動にはCtrl+Shift+Upを用いてください。 例えば: interface
19-
20-``` pascal
21- procedure DoSomething; // procedure definition
22-
23- implementation
24-
25- procedure DoSomething; // 手続き本体
26- begin
27- end;
23+手続きの本体(begin..end)と手続き宣言(procedure Name;)の間の移動にはCtrl+Shift+Upを用いてください。 例えば: interface
2824```
29-
30-カーソルが手続きの本体にあるときにCtrl+Shift+Upすると、カーソルが手続き宣言に移動します。もう一度 Ctrl+Shift+Upを押すと本体のbeginのあとに移動します。 この機能はメソッド(クラスの手続き)でも使えます。 ヒント: 'メソッドへの移動'は同じ名前と引数リストをもつ同じ手続きに移動します。もし合致する手続きがなければ最良の候補の中の最初に異なる部分に移動します。(Delphiユーザーへ: Delphiにはない機能です).
25+procedure DoSomething; // procedure definition
26+
27+ implementation
28+
29+ procedure DoSomething; // 手続き本体
30+ begin
31+ end;
32+```
3133
32-異なる引数型をもつ手続きの例:
34+カーソルが手続きの本体にあるときにCtrl+Shift+Upすると、カーソルが手続き宣言に移動します。もう一度 Ctrl+Shift+Upを押すと本体のbeginのあとに移動します。 この機能はメソッド(クラスの手続き)でも使えます。 ヒント: 'メソッドへの移動'は同じ名前と引数リストをもつ同じ手続きに移動します。もし合致する手続きがなければ最良の候補の中の最初に異なる部分に移動します。(Delphiユーザーへ: Delphiにはない機能です).
3335
34-``` pascal
35- interface
36-
37- procedure DoSomething(p: char); // procedure definition
38-
39- implementation
40-
41- procedure DoSomething(p: string); // 手続き本体
42- begin
43- end;
36+異なる引数型をもつ手続きの例:
4437```
45-
46-宣言から本体に移動するとカーソルはキーワード'string'に移動します。これはメソッドの名称変更や引数の変更のさいに便利です。
38+interface
39+
40+ procedure DoSomething(p: char); // procedure definition
41+
42+ implementation
43+
44+ procedure DoSomething(p: string); // 手続き本体
45+ begin
46+ end;
47+```
4748
48-例: 'DoSomething'を 'MakeIt'に変更した場合:
49+宣言から本体に移動するとカーソルはキーワード'string'に移動します。これはメソッドの名称変更や引数の変更のさいに便利です。
4950
50-``` pascal
51- interface
52-
53- procedure MakeIt; // 手続きの定義
54-
55- implementation
56-
57- procedure DoSomething; // 手続きの本体
58- begin
59- end;
51+例: 'DoSomething'を 'MakeIt'に変更した場合:
6052```
53+interface
54+
55+ procedure MakeIt; // 手続きの定義
56+
57+ implementation
58+
59+ procedure DoSomething; // 手続きの本体
60+ begin
61+ end;
62+```
6163
62-このときMakeItから本体に移動します。IDEは一致する本体を探し、それが見付からないので候補を探します。あなたが名称変更した手続きは一つしかないので、宣言(DoSomething)のない本体はひとつしかなく、したがってDoSomethingに移動し、'DoSomething'のすぐ右側にカーソルが置かれます。ですからその名前も同様に変更すればいいわけです。この機能は引数についても同様です。
64+このときMakeItから本体に移動します。IDEは一致する本体を探し、それが見付からないので候補を探します。あなたが名称変更した手続きは一つしかないので、宣言(DoSomething)のない本体はひとつしかなく、したがってDoSomethingに移動し、'DoSomething'のすぐ右側にカーソルが置かれます。ですからその名前も同様に変更すればいいわけです。この機能は引数についても同様です。
6365
6466## インクルードファイル
6567
66-インクルードファイルはコンパイラ指令{\$I filename} もしくは {\$INCLUDE filename} でソースに挿入されるファイルです。異なるプラットフォームをサポートするため、LazarusとFPCは、冗長になることを防ぎ、読みにくい{\$IFDEF}構造体を避けるためにインクルードファイルはコンパイラ指令を用いています。
68+インクルードファイルはコンパイラ指令{$I filename} もしくは {$INCLUDE filename} でソースに挿入されるファイルです。異なるプラットフォームをサポートするため、LazarusとFPCは、冗長になることを防ぎ、読みにくい{$IFDEF}構造体を避けるためにインクルードファイルはコンパイラ指令を用いています。
6769
68-例えば、.pasファイルの中のメソッドからインクルードファイル内のメソッド本体へ移動できます。 コード補完のようなすべてのコードツールはインクルードファイルを特殊な拘束条件とみなします。
70+例えば、.pasファイルの中のメソッドからインクルードファイル内のメソッド本体へ移動できます。 コード補完のようなすべてのコードツールはインクルードファイルを特殊な拘束条件とみなします。
6971
70-例:コード補完がもうひとつのメソッド本体のうしろに新しいメソッドを追加すると、コード補完は双方を同じファイル内に保持します。このようにして、LCLがほぼ全てのコントロールにそうやって管理しているのと同様に、すべてのクラス実装をインクルードファイル内に置くことができます。 しかし、初心者が陥りやすい罠があります: インクルードファイルを最初に開き、メソッド移動もしくは定義検索をしようとすると、エラーが発生します。IDEはどのユニットにインクルードファイルが属するかを知りません。まず初めに対象とするユニットを開かなければなりません。
72+例:コード補完がもうひとつのメソッド本体のうしろに新しいメソッドを追加すると、コード補完は双方を同じファイル内に保持します。このようにして、LCLがほぼ全てのコントロールにそうやって管理しているのと同様に、すべてのクラス実装をインクルードファイル内に置くことができます。 しかし、初心者が陥りやすい罠があります: インクルードファイルを最初に開き、メソッド移動もしくは定義検索をしようとすると、エラーが発生します。IDEはどのユニットにインクルードファイルが属するかを知りません。まず初めに対象とするユニットを開かなければなりません。
7173
72-IDEがユニットを構文解析するとすぐに、そこのインクルード指令を解釈し、IDEはこの関係を記憶します。IDEはこの情報を終了時やプロジェクト保存時に‾/.lazarus/includelinks.xmlに保存します。次にこのインクルードファイルを開き、移動や定義検索をしようとすると、IDEは内部的にそのユニットを開き、移動機能が作動します。
74+
75+IDEがユニットを構文解析するとすぐに、そこのインクルード指令を解釈し、IDEはこの関係を記憶します。IDEはこの情報を終了時やプロジェクト保存時に‾/.lazarus/includelinks.xmlに保存します。次にこのインクルードファイルを開き、移動や定義検索をしようとすると、IDEは内部的にそのユニットを開き、移動機能が作動します。
7376
74-このメカニズムにはもちろん限界があります。いくつかのインクルードファイルは2回かそれ以上インクルードされます。例: lcl/include/winapih.inc.
77+このメカニズムにはもちろん限界があります。いくつかのインクルードファイルは2回かそれ以上インクルードされます。例: lcl/include/winapih.inc.
7578
76-このインクルードファイルの手続きもしくはメソッド定義からその本体への移動は直前の動作次第です。もしlcl/lclintf.ppに取り組んでいるのであれば、IDEはwinapi.incに移動します。もしlcl/interfacebase.ppを扱っているのであれば、IDEはlcl/include/interfacebase.inc (もしくはその他のインクルードファイル)に移動します。それらの両方に取り組んでいるのであれば...混乱してしまいますね ;)
79+このインクルードファイルの手続きもしくはメソッド定義からその本体への移動は直前の動作次第です。もしlcl/lclintf.ppに取り組んでいるのであれば、IDEはwinapi.incに移動します。もしlcl/interfacebase.ppを扱っているのであれば、IDEはlcl/include/interfacebase.inc (もしくはその他のインクルードファイル)に移動します。それらの両方に取り組んでいるのであれば...混乱してしまいますね ;)
7780
7881## コードテンプレート
7982
80-コードテンプレートは、ある識別子からあるテキストもしくはコードの断片に変換します。 コードテンプレートのデフォルトのショートカットはCtrl+Jです。識別子をタイプして、Ctrl+Jを押すと識別子は識別子に応じて設定されたテキストに置き換えられます。コードテンプレートは環境 -\> コードテンプレートで設定できます。
81-
82-例: 識別子'classf'を書き、カーソルをfのすぐ後ろに置いて、Ctrl+Jを押すと、'classf'は以下に置き換えられます。
83+コードテンプレートは、ある識別子からあるテキストもしくはコードの断片に変換します。 コードテンプレートのデフォルトのショートカットはCtrl+Jです。識別子をタイプして、Ctrl+Jを押すと識別子は識別子に応じて設定されたテキストに置き換えられます。コードテンプレートは環境 -> コードテンプレートで設定できます。
8384
84-``` pascal
85- T = class(T)
86- private
87-
88- public
89- constructor Create;
90- destructor Destroy; override;
91- end;
85+例: 識別子'classf'を書き、カーソルをfのすぐ後ろに置いて、Ctrl+Jを押すと、'classf'は以下に置き換えられます。
9286```
87+T = class(T)
88+ private
89+
90+ public
91+ constructor Create;
92+ destructor Destroy; override;
93+ end;
94+```
9395
94-そしてカーソルは'T'の後ろに来ます。 カーソルを空白に置いて(識別子の上でなく)Ctrl+Jを押すとテンプレートのリストがポップアップで示されます。カーソルキーもしくはいくつかの文字をタイプしてその中のどれかを選択してください。リターンキーを押せば選択されたテンプレートが挿入され、Escでそのポップアップが閉じます。
96+そしてカーソルは'T'の後ろに来ます。 カーソルを空白に置いて(識別子の上でなく)Ctrl+Jを押すとテンプレートのリストがポップアップで示されます。カーソルキーもしくはいくつかの文字をタイプしてその中のどれかを選択してください。リターンキーを押せば選択されたテンプレートが挿入され、Escでそのポップアップが閉じます。
9597
9698## コード補完
9799
98-コード補完はIDEメニューの編集 -\> コード補完で呼び出すことができ、標準ショートカットはCtrl+Shift+Cです。
100+コード補完はIDEメニューの編集 -> コード補完で呼び出すことができ、標準ショートカットはCtrl+Shift+Cです。
99101
100-Delphiユーザーへ: Delphiでは"コード補完"と呼ばれている機能は、現在のソースの位置で(Ctrl+Space)すると識別子のリストが示されるもので、Lazarusでは"識別子補完"と呼ばれているものです。
102+Delphiユーザーへ: Delphiでは"コード補完"と呼ばれている機能は、現在のソースの位置で(Ctrl+Space)すると識別子のリストが示されるもので、Lazarusでは"識別子補完"と呼ばれているものです。
101103
102-コード補完はいくつかの強力な機能を組み合わせたものです。例:
104+コード補完はいくつかの強力な機能を組み合わせたものです。例:
103105
104-- クラス補完: プロパティを補完し、メソッド本体を加え、プライベートな変数とアクセスメソッドを加えるものです。
105-- 前方手続き補完: 手続きの本体を加えます。
106-- イベント代入補完: イベント代入を補完し、メソッド定義と本体を加えます。
107-- 変数宣言補完: ローカル変数定義を加えます。
106+ * クラス補完: プロパティを補完し、メソッド本体を加え、プライベートな変数とアクセスメソッドを加えるものです。
107+ * 前方手続き補完: 手続きの本体を加えます。
108+ * イベント代入補完: イベント代入を補完し、メソッド定義と本体を加えます。
109+ * 変数宣言補完: ローカル変数定義を加えます。
108110
109-どの機能が作動するかはエディタ内のカーソルの位置によります。
111+どの機能が作動するかはエディタ内のカーソルの位置によります。
110112
111113### クラス補完
112114
113-最も強力なコード補完機能は「クラス補完」です。クラスとメソッドとプロパティを書くと、コード補完はメソッド本体とプロパティアクセスメソッド/変数とプライベートな変数を追加します。
114-
115-例えば: クラスを作成し、(タイピングを少なくするにはコードテンプレートを参照):
115+最も強力なコード補完機能は「クラス補完」です。クラスとメソッドとプロパティを書くと、コード補完はメソッド本体とプロパティアクセスメソッド/変数とプライベートな変数を追加します。
116116
117-``` pascal
117+例えば: クラスを作成し、(タイピングを少なくするにはコードテンプレートを参照):
118+```
118119TExample = class(TObject)
119- public
120- constructor Create;
121- destructor Destroy; override;
122- end;
120+ public
121+ constructor Create;
122+ destructor Destroy; override;
123+ end;
123124```
124125
125-カーソルをクラスのどこかに置いてCtrl+Shift+Cしてみてください。メソッドのまだ書かれていない本体が作成され、カーソルを一番上の最初に作成されたメソッド本体に移動させますので、そのままクラスコードを書きはじめることができます:
126-
127-``` pascal
128- { TExample }
129-
130- constructor TExample.Create;
131- begin
132- |
133- end;
134-
135- destructor TExample.Destroy;
136- begin
137- inherited Destroy;
138- end;
126+カーソルをクラスのどこかに置いてCtrl+Shift+Cしてみてください。メソッドのまだ書かれていない本体が作成され、カーソルを一番上の最初に作成されたメソッド本体に移動させますので、そのままクラスコードを書きはじめることができます:
139127```
140-
141-注意: '\|'はカーソルを表し、文字は挿入されません。
128+{ TExample }
129+
130+ constructor TExample.Create;
131+ begin
132+ |
133+ end;
134+
135+ destructor TExample.Destroy;
136+ begin
137+ inherited Destroy;
138+ end;
139+```
142140
143-ヒント: Ctrl+Shift+Upでメソッドとその本体とを移動移動できます。
141+注意: '|'はカーソルを表し、文字は挿入されません。
144142
145-IDEが'inherited Destroy'呼び出しを追加したことがわかりますね。これはもし'override'キーワードがクラス定義にあれば追加されます。
143+ヒント: Ctrl+Shift+Upでメソッドとその本体とを移動移動できます。
146144
147-ではDoSomethingメソッドを追加してみましょう:
145+IDEが'inherited Destroy'呼び出しを追加したことがわかりますね。これはもし'override'キーワードがクラス定義にあれば追加されます。
148146
149-``` pascal
150- TExample = class(TObject)
151- public
152- constructor Create;
153- procedure DoSomething(i: integer);
154- destructor Destroy; override;
155- end;
147+ではDoSomethingメソッドを追加してみましょう:
156148```
157-
158-ここでCtrl+Shift+Cを押すとIDEは以下を追加します
159-
160-``` pascal
161- procedure TExample.DoSomething(i: integer);
162- begin
163- |
164- end;
149+TExample = class(TObject)
150+ public
151+ constructor Create;
152+ procedure DoSomething(i: integer);
153+ destructor Destroy; override;
154+ end;
165155```
166156
167-クラス定義と同じくCreateとDestroyの間に新しいメソッド本体が挿入されたのがわかりますね。このようにして本体はあなたが定義したのと同じ論理的順序で作成されます。挿入ポリシーは、環境 -\> コードツールオプション -\> コード作成で設定できます。
168-
169-**プロパティの補完** プロパティAnIntegerを加えましょう:
170-
171-``` pascal
172- TExample = class(TObject)
173- public
174- constructor Create;
175- procedure DoSomething(i: integer);
176- destructor Destroy; override;
177- property AnInteger: Integer;
178- end;
179-Ctrl+Shift+Cを押すと、次のようになります:
180- procedure TExample.SetAnInteger(const AValue: integer);
181- begin
182- |if FAnInteger=AValue then exit;
183- FAnInteger:=AValue;
184- end;
157+ここでCtrl+Shift+Cを押すとIDEは以下を追加します
185158```
159+procedure TExample.DoSomething(i: integer);
160+ begin
161+ |
162+ end;
163+```
186164
187-コード補完はWriteアクセス指定子と数行の共通コードを追加しました。 新しいクラスを見るにはCtrl+Shift+Upでそのクラスに移動します。
165+クラス定義と同じくCreateとDestroyの間に新しいメソッド本体が挿入されたのがわかりますね。このようにして本体はあなたが定義したのと同じ論理的順序で作成されます。挿入ポリシーは、環境 -> コードツールオプション -> コード作成で設定できます。
188166
189-``` pascal
190- TExample = class(TObject)
191- private
192- FAnInteger: integer;
193- procedure SetAnInteger(const AValue: integer);
194- public
195- constructor Create;
196- procedure DoSomething(i: integer);
197- destructor Destroy; override;
198- property AnInteger: integer read FAnInteger write SetAnInteger;
199- end;
167+**プロパティの補完** プロパティAnIntegerを加えましょう:
200168```
169+TExample = class(TObject)
170+ public
171+ constructor Create;
172+ procedure DoSomething(i: integer);
173+ destructor Destroy; override;
174+ property AnInteger: Integer;
175+ end;
176+ Ctrl+Shift+Cを押すと、次のようになります:
177+ procedure TExample.SetAnInteger(const AValue: integer);
178+ begin
179+ |if FAnInteger=AValue then exit;
180+ FAnInteger:=AValue;
181+ end;
182+```
201183
202-そのプロパティにReadとWriteアクセス指定子が追加されています。そのクラスはFAnInteger変数と'SetAnInteger'メソッドを有する'private'という新しいセクションを得ました。 変数に接頭文字F、メソッドにSetを付けるのはDelphiの共通スタイル規則です。もしこれがお気に召さなければ、環境 \> コードツールオプション -\> コード補完でこれを変更できます。
184+コード補完はWriteアクセス指定子と数行の共通コードを追加しました。 新しいクラスを見るにはCtrl+Shift+Upでそのクラスに移動します。
185+```
186+TExample = class(TObject)
187+ private
188+ FAnInteger: integer;
189+ procedure SetAnInteger(const AValue: integer);
190+ public
191+ constructor Create;
192+ procedure DoSomething(i: integer);
193+ destructor Destroy; override;
194+ property AnInteger: integer read FAnInteger write SetAnInteger;
195+ end;
196+```
203197
204-読み込み専用プロパティを作成する場合:
198+そのプロパティにReadとWriteアクセス指定子が追加されています。そのクラスはFAnInteger変数と'SetAnInteger'メソッドを有する'private'という新しいセクションを得ました。 変数に接頭文字F、メソッドにSetを付けるのはDelphiの共通スタイル規則です。もしこれがお気に召さなければ、環境 > コードツールオプション -> コード補完でこれを変更できます。
205199
206-``` pascal
200+
201+読み込み専用プロパティを作成する場合:
202+```
207203property PropName: PropType read;
208204```
209205
210-が以下のように拡張されます。
211-
212-``` pascal
206+が以下のように拡張されます。
207+```
213208property PropName: PropType read FPropName;
214209```
215210
216-書き込み専用プロパティを作成する場合:
217-
218-``` pascal
211+書き込み専用プロパティを作成する場合:
212+```
219213property PropName: PropType write;
220214```
221215
222-が以下のように拡張されます。
223-
224-``` pascal
216+が以下のように拡張されます。
217+```
225218property PropName: PropType write SetPropName;
226219```
227220
228-Read メソッドを持つ読み込み専用プロパティを作成する場合:
229-
230-``` pascal
221+Read メソッドを持つ読み込み専用プロパティを作成する場合:
222+```
231223property PropName: PropType read GetPropName;
232224```
233225
234-これはそのままで、GetPropName関数が追加されます:
235-
236-``` pascal
226+これはそのままで、GetPropName関数が追加されます:
227+```
237228function GetpropName: PropType;
238229```
239230
240-stored指定子を持つプロパティを作成する場合:
241-
242-``` pascal
231+stored指定子を持つプロパティを作成する場合:
232+```
243233property PropName: PropType stored;
244234```
245235
246-が次のように拡張されます。
247-
248-``` pascal
236+が次のように拡張されます。
237+```
249238property PropName: PropType read FPropName write SetPropName stored PropNameIsStored;
250239```
251240
252-storedはストリーミングに用いられるため、readとwrite指定子が同様に自動的に追加されます。
253-
254-ヒント: 識別子補完は不完全なプロパティも認識し、デフォルトの名前を提案します。例:
241+storedはストリーミングに用いられるため、readとwrite指定子が同様に自動的に追加されます。
255242
256-``` pascal
243+ヒント: 識別子補完は不完全なプロパティも認識し、デフォルトの名前を提案します。例:
244+```
257245property PropName: PropType read |;
258246```
259247
260-カーソルを'read'キーワードより1スペース後ろに置き、Ctrl+Spaceを押すと識別子補完が作動します。識別子補完は変数'FPropName'と手続き'SetPropName'を提案します。
248+カーソルを'read'キーワードより1スペース後ろに置き、Ctrl+Spaceを押すと識別子補完が作動します。識別子補完は変数'FPropName'と手続き'SetPropName'を提案します。
261249
262250### 前方手続き補完
263251
264-"前方手続き補完"はコード補完機能の一部で、不足している手続き本体を追加します。カーソルが前方に定義された手続き宣言の上にあるときに有効となります。
265-
266-例: 宣言部に新しい手続き宣言を追加します: procedure DoSomething; カーソルをその上に置き、Ctrl+Shift+Cを押してコード補完を呼び出すと、実行部が作成されます:
252+"前方手続き補完"はコード補完機能の一部で、不足している手続き本体を追加します。カーソルが前方に定義された手続き宣言の上にあるときに有効となります。
267253
268-procedure DoSomething; begin
254+例: 宣言部に新しい手続き宣言を追加します: procedure DoSomething; カーソルをその上に置き、Ctrl+Shift+Cを押してコード補完を呼び出すと、実行部が作成されます:
269255
270-```text
271- |
256+procedure DoSomething; begin
272257```
273-
274-end; ヒント: Ctrl+Shift+Upでメソッドとその本体とを移動移動できます。
258+|
259+```
275260
276-新しい手続き本体がクラスメソッドの前に追加されます。もし宣言部に既にいくつかの手続きがあれば、IDEはその順序を維持しようとします。 例:
261+end; ヒント: Ctrl+Shift+Upでメソッドとその本体とを移動移動できます。
277262
278-``` pascal
263+新しい手続き本体がクラスメソッドの前に追加されます。もし宣言部に既にいくつかの手続きがあれば、IDEはその順序を維持しようとします。 例:
264+```
279265procedure Proc1;
280-procedure Proc2; // 新しい proc
281-procedure Proc3;
266+ procedure Proc2; // 新しい proc
267+ procedure Proc3;
282268```
283269
284-もしProc1とProc3の本体が既に存在すれば、Proc2の本体はProc1とProc3の間に挿入されます。この動作は環境 -\> コードツールオプション -\>コード作成 で設定できます。
285-
286-``` pascal
270+もしProc1とProc3の本体が既に存在すれば、Proc2の本体はProc1とProc3の間に挿入されます。この動作は環境 -> コードツールオプション ->コード作成 で設定できます。
271+```
287272Multiple procedures:
288- procedure Proc1_Old; // 本体が存在
289- procedure Proc2_New; // 本体がまだない
290- procedure Proc3_New; // "
291- procedure Proc4_New; // "
292- procedure Proc5_Old; // 本体が存在
273+ procedure Proc1_Old; // 本体が存在
274+ procedure Proc2_New; // 本体がまだない
275+ procedure Proc3_New; // "
276+ procedure Proc4_New; // "
277+ procedure Proc5_Old; // 本体が存在
293278```
294279
295-コード補完は3つの手続き本体 (Proc2_New, Proc3_New, Proc4_New)を追加します。
280+コード補完は3つの手続き本体 (Proc2_New, Proc3_New, Proc4_New)を追加します。
296281
297-なぜそれを前方手続き補完と呼ぶのでしょうか?
282+なぜそれを前方手続き補完と呼ぶのでしょうか?
298283
299-なぜならそれは宣言部に定義された手続きにのみ作用するのではなく、"forward" 指定子をもつ手続きにも同様に作用するからです。そしてそのコードツールが宣言部内の暗黙の'forward' 指定子をもつ手続きを扱うからです。
284+なぜならそれは宣言部に定義された手続きにのみ作用するのではなく、"forward" 指定子をもつ手続きにも同様に作用するからです。そしてそのコードツールが宣言部内の暗黙の'forward' 指定子をもつ手続きを扱うからです。
300285
301-### イベント 代入補完
286+
302287
303-"イベント代入補完"はコード補完機能の一部で、単一のイベント:=\| 文を補います。これはカーソルがイベントへの代入のすぐ後ろにあるときに呼び出されます。
288+### イベント 代入補完
304289
305-例: あるメソッド, 例えばFormCreateイベントで、'OnPaint:='という行を追加してみます:
290+"イベント代入補完"はコード補完機能の一部で、単一のイベント:=| 文を補います。これはカーソルがイベントへの代入のすぐ後ろにあるときに呼び出されます。
306291
307-``` pascal
308- procedure TForm1.Form1Create(Sender: TObject);
309- begin
310- OnPaint:=|
311- end;
292+例: あるメソッド, 例えばFormCreateイベントで、'OnPaint:='という行を追加してみます:
312293```
313-
314-'\|'はカーソルを表しており、タイプすべきものではありません。 ここでCtrl+Shift+Cと押してコード補完を呼び出します。その文は次のように補完されます。
294+procedure TForm1.Form1Create(Sender: TObject);
295+ begin
296+ OnPaint:=|
297+ end;
298+```
315299
316-``` pascal
300+'|'はカーソルを表しており、タイプすべきものではありません。 ここでCtrl+Shift+Cと押してコード補完を呼び出します。その文は次のように補完されます。
301+```
317302OnPaint:=@Form1Paint;
318303```
319304
320-新しいメソッドForm1PaintがTForm1クラスに追加されます。それからクラス補完が作動し、次のようになります:
321-
322-``` pascal
305+新しいメソッドForm1PaintがTForm1クラスに追加されます。それからクラス補完が作動し、次のようになります:
306+```
323307procedure TForm1.Form1Paint(Sender: TObject);
324-begin
325- |
326-end;
308+ begin
309+ |
310+ end;
327311```
328312
329-これはちょうどオブジェクトインスペクタでメソッドを追加するような動作です。
330-
331-注意: カーソルは':='代入の後ろに置いてください。カーソルをその識別子 (e.g. OnPaint)の上に置いた場合、 コード補完は"ローカル変数補完"を呼び出してしまいます(そしてそれは失敗します。なぜならOnPaintは既に宣言されているから)。
313+これはちょうどオブジェクトインスペクタでメソッドを追加するような動作です。
332314
333-ヒント: 新しいメソッド名をあなた自身で定義することもできます。例えば:
315+注意: カーソルは':='代入の後ろに置いてください。カーソルをその識別子 (e.g. OnPaint)の上に置いた場合、 コード補完は"ローカル変数補完"を呼び出してしまいます(そしてそれは失敗します。なぜならOnPaintは既に宣言されているから)。
334316
335-``` pascal
336- OnPaint:=@ThePaintMethod;
317+ヒント: 新しいメソッド名をあなた自身で定義することもできます。例えば:
337318```
319+OnPaint:=@ThePaintMethod;
320+```
338321
339322### 変数宣言補完
340323
341-"変数宣言補完"もコード補完の一部で、ローカル変数定義を識別子:=Term; 文に追加します。これはカーソルが代入識別子もしくは変数の上にある時に呼び出せます。
342-
343-例:
324+"変数宣言補完"もコード補完の一部で、ローカル変数定義を識別子:=Term; 文に追加します。これはカーソルが代入識別子もしくは変数の上にある時に呼び出せます。
344325
345-``` pascal
326+例:
327+```
346328procedure TForm1.Form1Create(Sender: TObject);
347-begin
348- i:=3;
349-end;
329+ begin
330+ i:=3;
331+ end;
350332```
351333
352-カーソルを i もしくはその後ろに置いてみて下さい。それからCtrl+Shift+Cを押してコード補完を呼び出すと次のようになります:
353-
354-``` pascal
334+カーソルを i もしくはその後ろに置いてみて下さい。それからCtrl+Shift+Cを押してコード補完を呼び出すと次のようになります:
335+```
355336procedure TForm1.Form1Create(Sender: TObject);
356-var
357- i: Integer;
358-begin
359- i:=3;
360-end;
337+ var
338+ i: Integer;
339+ begin
340+ i:=3;
341+ end;
361342```
362343
363-このコードツールはまず識別子 i が既に定義されているかどうかをチェックし、もしなかったら宣言 'var i: integer;'を追加します。識別子の型は代入 ':=' 演算子の右辺から推測されます。3のような数値はデフォルトでIntegerと判断されます。
364-
365-もうひとつの例:
344+このコードツールはまず識別子 i が既に定義されているかどうかをチェックし、もしなかったら宣言 'var i: integer;'を追加します。識別子の型は代入 ':=' 演算子の右辺から推測されます。3のような数値はデフォルトでIntegerと判断されます。
366345
367-``` pascal
346+もうひとつの例:
347+```
368348type
369- TWhere = (Behind, Middle, InFront);
370-
371- procedure TForm1.Form1Create(Sender: TObject);
372- var
373- a: array[TWhere] of char;
374- begin
375- for Where:=Low(a) to High(a) do writeln(a[Where]);
376- end;
349+ TWhere = (Behind, Middle, InFront);
350+
351+ procedure TForm1.Form1Create(Sender: TObject);
352+ var
353+ a: array[TWhere] of char;
354+ begin
355+ for Where:=Low(a) to High(a) do writeln(a[Where]);
356+ end;
377357```
378358
379-カーソルをWhereの上に置き、 Ctrl+Shift+Cで コード補完を呼び出すと、次のようになります:
380-
381-``` pascal
382- procedure TForm1.Form1Create(Sender: TObject);
383- var
384- a: array[TWhere] of char;
385- Where: TWhere;
386- begin
387- for Where:=Low(a) to High(a) do writeln(a[Where]);
388- end;
359+カーソルをWhereの上に置き、 Ctrl+Shift+Cで コード補完を呼び出すと、次のようになります:
389360```
390-
391-0.9.11以降Lazarusは引数も補完できるようになりました。 例:
392-
393-``` pascal
394- procedure TForm1.FormPaint(Sender: TObject);
395- begin
396- with Canvas do begin
397- Line(x1,y1,x2,y2);
398- end;
399- end;
361+procedure TForm1.Form1Create(Sender: TObject);
362+ var
363+ a: array[TWhere] of char;
364+ Where: TWhere;
365+ begin
366+ for Where:=Low(a) to High(a) do writeln(a[Where]);
367+ end;
400368```
401369
402-カーソルをx1の上に置き、Ctrl+Shift+Cでコード補完を呼び出すと、次のようになります:
370+0.9.11以降Lazarusは引数も補完できるようになりました。 例:
371+```
372+procedure TForm1.FormPaint(Sender: TObject);
373+ begin
374+ with Canvas do begin
375+ Line(x1,y1,x2,y2);
376+ end;
377+ end;
378+```
403379
404-``` pascal
405- procedure TForm1.FormPaint(Sender: TObject);
406- var
407- x1: integer;
408- begin
409- with Canvas do begin
410- Line(x1,y1,x2,y2);
411- end;
412- end;
380+カーソルをx1の上に置き、Ctrl+Shift+Cでコード補完を呼び出すと、次のようになります:
413381```
382+procedure TForm1.FormPaint(Sender: TObject);
383+ var
384+ x1: integer;
385+ begin
386+ with Canvas do begin
387+ Line(x1,y1,x2,y2);
388+ end;
389+ end;
390+```
414391
415392### コメントとコード補完
416393
417-コード補完はコメントをそれが属する場所に留めようとします。 例:
418-
419-``` pascal
420- FList: TList; //TComponentのリスト
421- FInt: integer;
394+コード補完はコメントをそれが属する場所に留めようとします。 例:
422395```
423-
424-新しい変数をFListとFIntの間に挿入しようとすると、そのコメントはFListの行に保たれます。これは次のような場合にも同様です。
425-
426-``` pascal
427- FList: TList; {TComponentのリスト
428- これはFListの行から始まる数行に渡るコメントで、
429- コードツールはこれがFListの行に属するものとして
430- 扱い、この関係を壊しません。コードはこのコメントの
431- 後ろに挿入されます。}
432- FInt: integer;
396+FList: TList; //TComponentのリスト
397+ FInt: integer;
433398```
434399
435-コメントが次の行から始まっている場合、それはそれがそれ以下のコードに属するものとして扱われます。 例:
400+新しい変数をFListとFIntの間に挿入しようとすると、そのコメントはFListの行に保たれます。これは次のような場合にも同様です。
401+```
402+FList: TList; {TComponentのリスト
403+ これはFListの行から始まる数行に渡るコメントで、
404+ コードツールはこれがFListの行に属するものとして
405+ 扱い、この関係を壊しません。コードはこのコメントの
406+ 後ろに挿入されます。}
407+ FInt: integer;
408+```
436409
437-``` pascal
438- FList: TList; // list of TComponent
439- {このコメントはこれ以下に属します。
440- 新しいコードはこのコメントの上で、
441- FListの行の後に挿入されます。}
442- FInt: integer;
410+コメントが次の行から始まっている場合、それはそれがそれ以下のコードに属するものとして扱われます。 例:
443411```
412+FList: TList; // list of TComponent
413+ {このコメントはこれ以下に属します。
414+ 新しいコードはこのコメントの上で、
415+ FListの行の後に挿入されます。}
416+ FInt: integer;
417+```
444418
445419## リファクタリング
446420
447421### 逆代入
448422
449-要約 : "逆代入"はいくつかの選択された文を取り上げ、すべての代入を逆にします。このツールは保存用コードから読み込み用コードに変換する際に演算を逆にしたいときに便利です。
450-
451-例:
423+要約 : "逆代入"はいくつかの選択された文を取り上げ、すべての代入を逆にします。このツールは保存用コードから読み込み用コードに変換する際に演算を逆にしたいときに便利です。
452424
453-``` pascal
454- procedure DoSomething;
455- begin
456- AValueStudio:= BValueStudio;
457- AValueAppartment :=BValueAppartment;
458- AValueHouse:=BValueHouse;
459- end;
425+例:
460426```
461-
462-代入を行っている行(beginとendの間)を選択し、逆代入します。すべての代入は逆になりインデントが自動的に追加されます。 例の結果:
427+procedure DoSomething;
428+ begin
429+ AValueStudio:= BValueStudio;
430+ AValueAppartment :=BValueAppartment;
431+ AValueHouse:=BValueHouse;
432+ end;
433+```
463434
464-``` pascal
465- procedure DoSomething;
466- begin
467- BValueStudio := AValueStudio;
468- BValueAppartment := AValueAppartment;
469- BValueHouse := AValueHouse;
470- end;
435+代入を行っている行(beginとendの間)を選択し、逆代入します。すべての代入は逆になりインデントが自動的に追加されます。 例の結果:
471436```
437+procedure DoSomething;
438+ begin
439+ BValueStudio := AValueStudio;
440+ BValueAppartment := AValueAppartment;
441+ BValueHouse := AValueHouse;
442+ end;
443+```
472444
473445### 手続きの抽出
474446
475-[[IDE Window: Extract Procedure|Extract Procedureを]]参照のこと
447+[[IDE Window: Extract Procedure|Extract Procedure]]を参照のこと
476448
477449## 定義検索
478450
479-カーソルをある識別子の上に置き、'定義検索'をすると、コードツールは識別子の宣言を検索し、そのファイルを開き、そこに移動します。
480-
481-定義検索は毎回移動位置をセットします。このことは定義検索で宣言に移動した後、検索-\>後方へ飛ぶ で簡単に戻れることを意味しています。 Delphiといくつか異なる点があります: コードツールは、コンパイラ出力を用いる代わりに通常のpascal規則に従ってソースに作用します。コンパイラは最終の型を返します。コードツールはソースを読み、その間でステップします。 例: *Visible* プロパティは初めにTControl (controls.pp)で定義され、TCustomFormで再定義され、さらにTFormで最終的に再定義されます。定義検索をVisibleについて呼び出すとまずTFormのVisibleが表示されます。それから再び定義検索を呼び出すとTCustomFormのVisibleが表示されます。さらに呼び出すとTControlのVisibleに移動します。
451+カーソルをある識別子の上に置き、'定義検索'をすると、コードツールは識別子の宣言を検索し、そのファイルを開き、そこに移動します。
482452
483-TColorのような型についても同様です。 コンパイラにとってはそれは単なるlongintです。しかしソースには次のように定義されています。
453+定義検索は毎回移動位置をセットします。このことは定義検索で宣言に移動した後、検索->後方へ飛ぶ で簡単に戻れることを意味しています。 Delphiといくつか異なる点があります: コードツールは、コンパイラ出力を用いる代わりに通常のpascal規則に従ってソースに作用します。コンパイラは最終の型を返します。コードツールはソースを読み、その間でステップします。 例: _Visible_ プロパティは初めにTControl (controls.pp)で定義され、TCustomFormで再定義され、さらにTFormで最終的に再定義されます。定義検索をVisibleについて呼び出すとまずTFormのVisibleが表示されます。それから再び定義検索を呼び出すとTCustomFormのVisibleが表示されます。さらに呼び出すとTControlのVisibleに移動します。
484454
485-``` pascal
486- TGraphicsColor = -$7FFFFFFF-1..$7FFFFFFF;
487- TColor = TGraphicsColor;
455+TColorのような型についても同様です。 コンパイラにとってはそれは単なるlongintです。しかしソースには次のように定義されています。
488456```
489-
490-そして**前方定義クラス**についても同様です。 例えばTControlにprivate 変数
491-
492-``` pascal
493- FHostDockSite: TWinControl;
457+TGraphicsColor = -$7FFFFFFF-1..$7FFFFFFF;
458+ TColor = TGraphicsColor;
494459```
495460
496-があります。TWinControlに対する定義検索は前方定義
497-
498-``` pascal
499- TWinControl = class;
461+そして**前方定義クラス** についても同様です。 例えばTControlにprivate 変数
500462```
463+FHostDockSite: TWinControl;
464+```
501465
502-そしてそれを再び呼び出すと実装の
466+があります。TWinControlに対する定義検索は前方定義
467+```
468+TWinControl = class;
469+```
503470
504-``` pascal
505- TWinControl = class(TControl)
471+そしてそれを再び呼び出すと実装の
506472```
473+TWinControl = class(TControl)
474+```
507475
508-に移動します。このようにすべての識別子について追跡でき、すべてのオーバーロードを見つけることができます。
476+に移動します。このようにすべての識別子について追跡でき、すべてのオーバーロードを見つけることができます。
509477
510-**ヒント:** Ctrl+Hで元の位置に戻れます。
478+**ヒント:** Ctrl+Hで元の位置に戻れます。
511479
512480## インクルード指令に行く
513481
514-IDEの検索メニューの"インクルード指令に行く"は現在のインクルードファイルが用いられている{\$I filename}文に移動します。
482+IDEの検索メニューの"インクルード指令に行く"は現在のインクルードファイルが用いられている{$I filename}文に移動します。
515483
516484## プロジェクトの発行
517485
518-プロジェクト全体のコピーを作成します。誰かにコードのソースとコンパイラ設定だけを送りたいときにはこの機能はとても便利です。
486+プロジェクト全体のコピーを作成します。誰かにコードのソースとコンパイラ設定だけを送りたいときにはこの機能はとても便利です。
519487
520-通常のプロジェクトディレクトリは多くの情報を含んでいます。そのほとんどは発行する際には不要です。 .lpiファイルは (キャレット位置や閉じられているユニットのブックマークのような)セッション情報を含んでおり、プロジェクトディレクトリは多くの.ppu、.oファイルと実行ファイルを含んでいます。 すべてのサブディレクトリとともに基本的な情報のみを含むlpiファイルとそのソースのみを作成するには、"プロジェクトを発行する(パブリッシュプロジェクト)"を使ってください。
488+通常のプロジェクトディレクトリは多くの情報を含んでいます。そのほとんどは発行する際には不要です。 .lpiファイルは (キャレット位置や閉じられているユニットのブックマークのような)セッション情報を含んでおり、プロジェクトディレクトリは多くの.ppu、.oファイルと実行ファイルを含んでいます。 すべてのサブディレクトリとともに基本的な情報のみを含むlpiファイルとそのソースのみを作成するには、"プロジェクトを発行する(パブリッシュプロジェクト)"を使ってください。
521489
522-**注意**: バージョン0.9.13以降、セッション情報を通常の.lpiファイルとは別個のファイルに記録できる新しい*プロジェクトオプション*ができました。この新しいファイルは.lps拡張子で終わりセッション情報のみを含んでおり、.lpiファイルをより簡潔にすることができます。
490+**注意** : バージョン0.9.13以降、セッション情報を通常の.lpiファイルとは別個のファイルに記録できる新しい _プロジェクトオプション_ ができました。この新しいファイルは.lps拡張子で終わりセッション情報のみを含んでおり、.lpiファイルをより簡潔にすることができます。
523491
524-そのダイアログで除外および包含フィルタを設定でき、そのコマンドにより出力を一つのアーカイブに圧縮することができます。
492+そのダイアログで除外および包含フィルタを設定でき、そのコマンドにより出力を一つのアーカイブに圧縮することができます。
525493
526494## Original contributors
527495
528-This page has been converted from the epikwiki [version](http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusIdeTools).
496+This page has been converted from the epikwiki [version](<http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusIdeTools>).
529497
530-- Created page and initial template - 4/6/2004 VlxAdmin
531-- Initial content posted - 4/10/2004 MattiasG
532-- Small wiki and formatting fixes - 4/11/2004 VlxAdmin
533-- Added a summary table for IdeTools shortcuts - 12 July 2004 User:Kirkpatc
498+ * Created page and initial template - 4/6/2004 [ VlxAdmin](</User:Tom_Lisjac> "User:Tom Lisjac \(page does not exist\)")
499+ * Initial content posted - 4/10/2004 MattiasG
500+ * Small wiki and formatting fixes - 4/11/2004 [ VlxAdmin](</User:Tom_Lisjac> "User:Tom Lisjac \(page does not exist\)")
501+ * Added a summary table for IdeTools shortcuts - 12 July 2004 [User:Kirkpatc](</User:Kirkpatc> "User:Kirkpatc")
534502
535503---
536-*From the Free Pascal wiki, page "Lazarus IDE Tools/ja", as it stood on 2024-03-18 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](/wiki-contact).*
504+*From the Free Pascal wiki, page "Lazarus IDE Tools/ja", as the Internet Archive kept it on 2025-01-17, last changed on 2024-03-19. 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](/wiki-contact).*

Back to history