Sign in Join
Wiki copytemporary

IDE tricks/ja: what changed

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

OldNewLine
11# Open file で新しいファイルを作る
22
33新しいファイルをつくって、保存することができます。または、1回の操作で新しいファイルをファイル名とファイルタイプを指定して、作成することもできます。
44
55ただ、open file (Ctrl+o)で、存在しないファイルを指定します。たとえば、unit1.pasを指定すると、IDEはそのファイルを作るかどうか、尋ねます。
66
77# 新規のユニット、フォーム
88
990.9.27以降の場合、'New unit' (New form)のスピードボタンを右クリックし、生成するファイルタイプを指定することができます。 IDEIntfか、project templates パッケージで指定することで、別のファイルタイプを登録することもできます。
1010
1111# IDE マクロ
1212
1313[[IDE Macros in paths and filenames/ja]]
1414
1515# IDEが作成したコマンドラインパラメータをコンパイラで取得する方法
1616
1717Project -\> Compiler Options -\> Show Options でパラメータをコピーすることができます。ここに、プロジェクトディレクトリまでの相対パスがあります。多くの場合、調整することなく、これをコピーして使うことが出来ます。
1818
1919これらのパラメータは *.compiled ファイルにも保存されます。たとえば、test1.lpiというプロジェクトに対しては、test1.compiledというファイルが生成されます。これは、単純なテキストのxmlファイルになっていて、オプションやパスを簡単に他のコンピュータにコピーすることができます。 このファイルは実行ファイルが作成されるのと同じディレクトリにおかれます。
2020
2121パッケージも同じ仕組みになっています。
2222
2323このように、lazarus IDEがなくても、(願わくばバグがなく、動く)コードをコンパイルすることができます。
2424
2525# 1つを残して、他のエディタファイルをすべて閉じる方法
2626
2727gtk環境においては、ソースエディタページは、ページ名の右側に閉じるボタンがあります。Ctrlキーを押しながら、そのボタンを押すと、クリックしたもの以外の全ファイルが閉じます。
2828
2929# コンポーネントパレット
3030
3131## パレットの中のコンポーネントを見つける
3232
3333どのページになるかしならくても、コンポーネントの名前を一部でも知っていれば、コンポーネントを見つけることができます。 コンポーネントパレット上で右クリックをして、popupメニューを出します。'Find component'を選択します。 名前の一部をタイプすると、リストがフィルタされます。
3434
3535## パレットのコンポーネントのパッケージを開く
3636
3737コンポーネントパレット上で右クリックをして、popupメニューを出します。'Open package'を選択します。
3838
3939## パレットのコンポーネントの宣言を見つける
4040
4141コンポーネントパレット上で右クリックをして、popupメニューを出します。'Open unit'を選択します。
4242
4343# リナックスで、デバッグ中にアプリケーションがフリーズします。
4444
4545マウスを捕捉しているアプリケーションがgdb(デバッガ)によって停止させられると、X (デスクトップ) がフリーズすることがあります。
4646
4747## 2番目のXセッションを使う
4848
49492番目のXを次のように開始することができます。
5050
51-`  X :1 &`
51+```text
52+ X :1 &
53+```
5254
5355Ctrl-Alt-F7 で、:0 へ切り替えることができます。同様に、 Ctrl-Alt-F8 で :1 へ切り替えることができます。
5456
5557この後で、2番目のgnomeセッションを次のように開始します。
5658
57-`  gnome-session --display=:1 &`
59+```text
60+ gnome-session --display=:1 &
61+```
5862
5963## VNCを使う
6064
6165tightvncserver/realvncserverによる VNCサーバ/クライアントをインストールすることで使うことも出来ます。
6266
6367サーバを開始するには、
6468
65-`  vncserver :1`
69+```text
70+ vncserver :1
71+```
6672
6773セッションも同時に開始されます。vncviewerを通してvncserverに接続します。
6874
6975## アプリケーションをセカンドサーバでデバッグする
7076
7177Lazarusではプロジェクトのrun parameterで、"use display"にチェックを入れて :1を入力してください。
7278
7379これでアプリケーションは2番目のXサーバで実行されます。アプリケーションがデバッグされて停止することがあっても、2番目のXサーバがフリーズするだけで、最初のXサーバーには影響することがないでしょう。
7480
7581# IDEのコンパイルを速くする
7682
7783Lazarus自身を開発する作業をしていると、IDEを何度もリビルドすることがあります。 もし、次のような裏技をつかうと、沢山のメモリと最新のCPUがあれば、あっという間にIDEをコンパイルすることができます。
7884
7985- Lazarusのソースは高速なハードディスクにおいてください。ネットワーク上におくと遅くなります。
8086- 必要なパッケージのみインストールしてください。
8187- USESVN2REVISIONINC=0 にして、revision.incのアップデートをスキップしてください。
8288- 部分だけをコンパイルしてください。パッケージ登録が再コンパイルされると、全てのインストールされているパッケージも再コンパイルされます。IDEIntfが再コンパイルされると、すべての設計時パッケージが再コンパイルされます。
8389
8490# IDEウインドウのソースファイルを探す
8591
8692- IDE ウインドウを開きます.
8793- Ctrl+Shift+F1を押してヘルプエディタを開きます。
8894- ウインドウのクラス名を覚えて、閉じます。
8995- 'Find In Files'を使って、そのクラスのソースファイルを探します。
9096
9197# オブジェクトインスペクタ: Events: Frames: 継承されたイベントにジャンプする
9298
9399オブジェクトインスペクタは、*ClassName.MethodName*として継承されたイベントを表示します。 ダブルクリックすることで、新規のイベントを生成します。 コンボボックス上で、Ctrlとマウスクリックをすると、新規のイベントを生成せずに、継承されたメソッド本体にジャンプします。
94100
95101# オブジェクトインスペクタ上のイベント(メソッドプロパティ)
96102
97103イベント(メソッドプロパティ)は、特別なプロパティで、アドレスポインタを必要とします。 これらは、設計時には存在しません。 LazarusはDelphi IDEと同じ方法を使っています。 すべてのメソッドの値は、TMethodでキャストできます。 TMethodは、*Data*(オブジェクトかクラスポインタ)と、*Code*(アドレスポインタ)から成っています。 通常、両方ともnilではありません。IDEは*Data*に特別なキー値を設定し、Codeにはnilをセットしています。 これは、次のことを意味しています。
98104
99105- 実行時は、プログラムが.lfmファイルをロードして、本当のメソッド(Data+Code)が使われます。
100106- 設計時は、本当のメソッドか、仮のメソッド(Data\<\>nilでCode=nil)のどちらかになっています。
101107- コンパイラはDelphiとの互換性を保つ形で、メソッド値を比較する機能をもっています。
102108
103109次のようにしてはいけません:
104110
105111``` pascal
106112if OnMyEvent<>nil then OnMyEvent(...); // wrong, because it checks Data too
107113```
108114
109115これは、DataとCodeの両方をチェックして、仮のメソッドを実行するかもしれません。結果的にnilにジャンプすることがあります。この場合、例外を生成しますので、たいした害はないかもしれませんが、IDEはユーザーにエラーダイアログを表示します。
110116
111117次のように、Assigned関数を使ってください。
112118
113119``` pascal
114120if Assigned(OnMyEvent) then OnMyEvent(...); // Codeだけを比較するので正しい
115121```
116122
117123また、次のようにしてもいけません。
118124
119125``` pascal
120126if OnMyEvent=NewValue then exit; // Codeだけを比較するので正しくない
121127```
122128
123129なぜなら、Codeだけを比較するからです。次のようにしてください。
124130
125131``` pascal
126132if CompareMem(@FOnMyEvent,@NewValue,SizeOf(TMethod)) then exit; // DataとCodeの両方をチェックするので正しい。
127133```
128134
129135---
130136*From the Free Pascal wiki, page "IDE tricks/ja", as it stood on 2020-02-17 after a change by Trev, 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).*

Back to history