Sign in Join
Wiki copytemporary

IDE tricks/zh CN: what changed

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

OldNewLine
1+## Contents
2+
3+ * 1 使用打开文件创建新文件
4+ * 2 自定义新单元/窗体
5+ * 3 IDE macros
6+ * 4 IDE directives
7+ * 5 获取工程编译的命令行参数
8+ * 6 源代码编辑器关闭除这个文件之外的所有打开的文件
9+ * 7 控件面板
10+ * 7.1 在控件面板中查找组件
11+ * 7.2 在控件面板中打开控件的包
12+ * 7.3 我的应用程序在调试时冻结了我的 Linux 桌面
13+ * 7.4 使用第二个 X 会话
14+ * 7.5 Using VNC
15+ * 7.6 在第二台服务器上调试应用程序
16+ * 8 快速编译IDE
17+ * 9 DebugLn of the IDE or a LCL application
18+ * 10 查找 IDE 窗口的源文件
19+ * 11 从 IDE 打开终端窗口
20+ * 12 对象检查器:事件:帧:跳转到继承事件的源
21+ * 13 对象检查器中的事件(方法属性)
22+
123## 使用打开文件创建新文件
224
3-您可以创建一个新文件并保存它,也可以一步创建一个具有文件名和文件类型的新文件:只需打开文件 () 并选择不存在的文件名。例如:unit1.pas。IDE 将询问您是否应创建它。Ctrl+o
25+您可以创建一个新文件并保存它,也可以一步创建一个具有文件名和文件类型的新文件:只需打开文件 () 并选择不存在的文件名。例如:unit1.pas。IDE 将询问您是否应创建它。Ctrl+o
426
527## 自定义新单元/窗体
628
7-从0.9.27开始,您可以右键单击“新单元”(新窗体)按钮并设置应创建的文件类型。您可以通过 IDEIntf 或项目模板包注册更多文件类型。
29+从0.9.27开始,您可以右键单击“新单元”(新窗体)按钮并设置应创建的文件类型。您可以通过 IDEIntf 或项目模板包注册更多文件类型。
830
931## IDE macros
1032
1133[[IDE Macros in paths and filenames]]
1234
1335## IDE directives
1436
1537[[IDE directives]]
1638
1739## 获取工程编译的命令行参数
1840
19-可以从“项目”-“\>编译器选项”-\>“显示选项”中复制参数。这里的路径是相对于项目目录的。因此,在大多数情况下,您无需调整即可复制它们。
41+可以从“项目”-“>编译器选项”->“显示选项”中复制参数。这里的路径是相对于项目目录的。因此,在大多数情况下,您无需调整即可复制它们。
2042
21-参数也会保存到 *.compile 文件中。例如,如果您的项目名为test1.lpi,则会创建一个test1.compile。它是一个简单的XML文件,因此您只需复制选项并调整路径即可在另一台计算机上编译。该文件被放入创建可执行文件的同一目录中。
43+参数也会保存到 *.compile 文件中。例如,如果您的项目名为test1.lpi,则会创建一个test1.compile。它是一个简单的XML文件,因此您只需复制选项并调整路径即可在另一台计算机上编译。该文件被放入创建可执行文件的同一目录中。
2244
23-对于包,也是一样的。
45+对于包,也是一样的。
2446
25-这样,您就可以在Lazarus IDE之外编译您的(希望可以工作且没有错误)代码。
47+这样,您就可以在Lazarus IDE之外编译您的(希望可以工作且没有错误)代码。
2648
2749## 源代码编辑器关闭除这个文件之外的所有打开的文件
2850
29-在 GTK(适用于 Linux、macOS 和 FreeBSD)下,源代码编辑器页面的页面名称右侧有一个关闭按钮。在单击按钮的同时按<span class="kbd">Ctrl</span>关闭除单击的文件之外的所有文件。
51+在 GTK(适用于 Linux、macOS 和 FreeBSD)下,源代码编辑器页面的页面名称右侧有一个关闭按钮。在单击按钮的同时按`Ctrl`关闭除单击的文件之外的所有文件。
3052
3153## 控件面板
3254
3355### 在控件面板中查找组件
3456
35-您知道组件名称或其中的一部分,但您不知道它在哪个页面上?此工具可以帮你找到它:右键单击控件面板中的任何组件以打开弹出菜单,从菜单中选择“查看全部”;这将弹出一个对话框(您也可以通过按<span class="kbd">Ctrl+Alt+P</span>来实现它)。在“查找”框中输入(部分)组件名称以过滤列表。
57+您知道组件名称或其中的一部分,但您不知道它在哪个页面上?此工具可以帮你找到它:右键单击控件面板中的任何组件以打开弹出菜单,从菜单中选择“查看全部”;这将弹出一个对话框(您也可以通过按`Ctrl+Alt+P`来实现它)。在“查找”框中输入(部分)组件名称以过滤列表。
3658
3759### 在控件面板中打开控件的包
3860
39-右键单击组件以打开弹出菜单,然后选择打开包。
61+右键单击组件以打开弹出菜单,然后选择打开包。
4062
41-在组件面板中查找组件的源声明 右键单击组件以打开弹出菜单,然后选择打开单位。
63+在组件面板中查找组件的源声明 右键单击组件以打开弹出菜单,然后选择打开单位。
4264
4365### 我的应用程序在调试时冻结了我的 Linux 桌面
4466
45-当拥有鼠标的应用程序被 gdb(调试器)停止时,X(您的桌面)可能会冻结。
67+当拥有鼠标的应用程序被 gdb(调试器)停止时,X(您的桌面)可能会冻结。
4668
4769### 使用第二个 X 会话
4870
49-您可以通过以下方式打开第二个 X:
50-
51-` X :1 &`
52-
53-使用<span class="kbd">Ctrl-Alt-F7</span>可以切换到 :0,<span class="kbd">Ctrl-Alt-F8</span>切换到 :1,之后您可以通过以下方式开始第二个 GNOME 会话:
71+您可以通过以下方式打开第二个 X:
72+```
73+X :1 &
74+```
5475
55-` gnome-session --display=:1 &`
76+使用`Ctrl-Alt-F7`可以切换到 :0,`Ctrl-Alt-F8`切换到 :1,之后您可以通过以下方式开始第二个 GNOME 会话:
77+```
78+gnome-session --display=:1 &
79+```
5680
5781### Using VNC
5882
59-您可以通过安装 tightvncserver 或 realvncserver 来使用 vncserver/client。使用以下命令启动服务器:
60-
61-` vncserver :1`
83+您可以通过安装 tightvncserver 或 realvncserver 来使用 vncserver/client。使用以下命令启动服务器:
84+```
85+vncserver :1
86+```
6287
63-AFAIK,会话也已启动。您可以使用 vncviewer 连接到 vncserver。
88+AFAIK,会话也已启动。您可以使用 vncviewer 连接到 vncserver。
6489
6590### 在第二台服务器上调试应用程序
6691
67-在Lazarus中,在项目的运行参数中,选中“使用显示”并输入
68-
69-`:1`
92+在Lazarus中,在项目的运行参数中,选中“使用显示”并输入
93+```
94+:1
95+```
7096
71-现在,您的应用程序将在第二台服务器上运行,因此在调试时,只有第二台服务器会冻结(但这不会影响您,因为您是在第一台服务器上进行调试)。
97+现在,您的应用程序将在第二台服务器上运行,因此在调试时,只有第二台服务器会冻结(但这不会影响您,因为您是在第一台服务器上进行调试)。
7298
7399## 快速编译IDE
74100
75-在Lazarus上工作本身意味着多次重建IDE。如果您使用以下技巧并且有足够的内存和最新的 CPU,您应该能够在几秒钟内重新编译 IDE。
101+在Lazarus上工作本身意味着多次重建IDE。如果您使用以下技巧并且有足够的内存和最新的 CPU,您应该能够在几秒钟内重新编译 IDE。
76102
77-- 将Lazarus源放在快速硬盘或固态驱动器上。不在慢速网络文件系统上。
78-- 仅安装所需的软件包。
79-- 设置 USESVN2REVISIONINC=0 以跳过 revision.inc 文件的更新。
103+ * 将Lazarus源放在快速硬盘或固态驱动器上。不在慢速网络文件系统上。
104+ * 仅安装所需的软件包。
105+ * 设置 USESVN2REVISIONINC=0 以跳过 revision.inc 文件的更新。
80106
81107## DebugLn of the IDE or a LCL application
82108
83-IDE通过DebugLn编写了许多有用的提示。你可以通过这种方式得到这些:
109+IDE通过DebugLn编写了许多有用的提示。你可以通过这种方式得到这些:
84110
85-- Windows:使用命令行参数 --debug-log=filename.txt 启动 Lazarus。
86-- Linux/FreeBSD/macOS/Solaris:只需在终端中启动Lazarus即可。
111+ * Windows:使用命令行参数 --debug-log=filename.txt 启动 Lazarus。
112+ * Linux/FreeBSD/macOS/Solaris:只需在终端中启动Lazarus即可。
87113
88-这是常规的LCL功能。
114+这是常规的LCL功能。
89115
90116## 查找 IDE 窗口的源文件
91117
92-- 打开 IDE 窗口。
93-- 按下<span class="kbd">Ctrl+Shift+F1</span> 可打开帮助编辑器。
94-- 记住窗口类名。关闭窗口。
95-- 使用“[[IDE Window: Find in files|在文件中查找]]”查找类的源文件。
118+ * 打开 IDE 窗口。
119+ * 按下`Ctrl+Shift+F1` 可打开帮助编辑器。
120+ * 记住窗口类名。关闭窗口。
121+ * 使用“[[IDE Window: Find in files|在文件中查找]]”查找类的源文件。
96122
97123## 从 IDE 打开终端窗口
98124
99-能够在当前项目的工作目录中打开终端通常很方便。也许要使用像git或svn这样的版本控制系统,或者出于许多其他可能的原因。以下是将菜单项添加到Lazarus's Tool的菜单的方法。感谢 taazz 和论坛帖子的其他贡献者。
125+能够在当前项目的工作目录中打开终端通常很方便。也许要使用像git或svn这样的版本控制系统,或者出于许多其他可能的原因。以下是将菜单项添加到Lazarus's Tool的菜单的方法。感谢 taazz 和论坛帖子的其他贡献者。
100126
101-- 单击工具,配置外部工具
102-- 单击“添加”以添加新菜单项(在“工具”下)。
103-- 将标题设置为(例如)“打开终端”
104-- 将程序文件名设置为系统上打开终端的命令,以下是一些建议。
105-- 将参数设置为终端在命令行上期望打开特定目录和指向那里的 Lazarus var \$projPath() 的任何内容。
127+ * 单击工具,配置外部工具
128+ * 单击“添加”以添加新菜单项(在“工具”下)。
129+ * 将标题设置为(例如)“打开终端”
130+ * 将程序文件名设置为系统上打开终端的命令,以下是一些建议。
131+ * 将参数设置为终端在命令行上期望打开特定目录和指向那里的 Lazarus var $projPath() 的任何内容。
106132
107-最后两个在系统之间差异很大,如果您不知道第一个,请尝试查看正在运行的程序列表,“终端”一词可能会出现。第二,一旦你知道终端的名称,查找它的手册页或谷歌。
133+最后两个在系统之间差异很大,如果您不知道第一个,请尝试查看正在运行的程序列表,“终端”一词可能会出现。第二,一旦你知道终端的名称,查找它的手册页或谷歌。
108134
109-一些例子包括 -
135+一些例子包括 -
110136
111-| O.S. | 程序文件名 | 参数 |
112-|----|----|----|
113-| Ubuntu Mate | mate-terminal\|\|--tab --working-directory=\$projPath() | |
114-| xfce | exo-open\|\|--launch TerminalEmulator --working-directory \$ProjPath() | |
115-| KDE | konsole\|\|--working-directory \$projPath() | |
116-| GNOME | gnome-terminal\|\|--working-directory \$projPath() | |
117-| Mac(见下文) | /User/\$HOME/bin/ttab | cd \$projPath() |
118-| Windows | CMD.exe | /k cd “\$ProjPath()” |
137+O.S. | 程序文件名 | 参数
138+---|---|---
139+Ubuntu Mate | mate-terminal | \--tab --working-directory=$projPath()
140+xfce | exo-open | \--launch TerminalEmulator --working-directory $ProjPath()
141+KDE | konsole | \--working-directory $projPath()
142+GNOME | gnome-terminal | \--working-directory $projPath()
143+Mac(见下文) | /User/$HOME/bin/ttab | cd $projPath()
144+Windows | CMD.exe | /k cd “$ProjPath()”
145+
146+[![IDE Ext Tool](/wiki-images/3/30/ExtTool.PNG)](</File:ExtTool.PNG> "IDE Ext Tool")
119147
120-<img src="ExtTool.PNG" title="IDE Ext Tool" width="250" alt="IDE Ext Tool" /> **在Mac上**,一切都变得容易得多,您所要做的就是:
148+**在Mac上** ,一切都变得容易得多,您所要做的就是:
121149
122-1. 安装 <https://www.npmjs.com/package/ttab,它只有> 665 行,请使用安装它的路径,而不是上表中显示的示例。
123-2. 运行它,以便您可以勾选其安全性以访问辅助功能。
124-3. 然后按照描述设置拉撒路工具设置。
125-4. 然后,从Lazarus中,工具\>打开终端,然后类似于3)勾选以允许Lazarus访问可访问性的东西。
150+ 1. 安装 <https://www.npmjs.com/package/ttab,它只有> 665 行,请使用安装它的路径,而不是上表中显示的示例。
151+ 2. 运行它,以便您可以勾选其安全性以访问辅助功能。
152+ 3. 然后按照描述设置拉撒路工具设置。
153+ 4. 然后,从Lazarus中,工具>打开终端,然后类似于3)勾选以允许Lazarus访问可访问性的东西。
126154
127-**在Windows上**,还需要勾选“显示控制台”,如右图所示:
155+**在Windows上** ,还需要勾选“显示控制台”,如右图所示:
128156
129157## 对象检查器:事件:帧:跳转到继承事件的源
130158
131-对象检查器将继承事件的事件显示为 ClassName.MethodName。双击将创建一个新事件。 <span class="kbd">Ctrl+Mouse click</span>将直接跳转到继承的方法主体,而不创建新方法。
159+对象检查器将继承事件的事件显示为 ClassName.MethodName。双击将创建一个新事件。 `Ctrl+Mouse click`将直接跳转到继承的方法主体,而不创建新方法。
132160
133161## 对象检查器中的事件(方法属性)
134162
135-事件(方法属性)是特殊属性,因为它们需要代码地址指针作为值,该指针在设计时不存在。这就是为什么Lazarus使用与Delphi IDE相同的技巧:每个方法值都可以类型转换为**TMethod**,其中包含*Data*(对象或类指针)和代码(地址指针)。在运行时,两者都已设置。但在设计时,IDE 会将“数据”设置为其内部查找表的特殊键值,并将“代码”设置为 nil。这意味着:
136-
137-- 在运行时,当程序加载 .lfm 文件时,将使用实际方法(数据 + 代码)
138-- 在设计时,方法值可以是实际方法(Data\<\>nil 和 Code\<\>nil),也可以是假方法(Data\<\>nil,Code=nil)
139-- 编译器对于德尔菲兼容性有一些关于比较方法值的特殊信息。
140-- = 和 \<\> 运算符仅检查代码,而不检查数据。
163+事件(方法属性)是特殊属性,因为它们需要代码地址指针作为值,该指针在设计时不存在。这就是为什么Lazarus使用与Delphi IDE相同的技巧:每个方法值都可以类型转换为**TMethod** ,其中包含 _Data_ (对象或类指针)和代码(地址指针)。在运行时,两者都已设置。但在设计时,IDE 会将“数据”设置为其内部查找表的特殊键值,并将“代码”设置为 nil。这意味着:
141164
142-请勿使用:
165+ * 在运行时,当程序加载 .lfm 文件时,将使用实际方法(数据 + 代码)
166+ * 在设计时,方法值可以是实际方法(Data<>nil 和 Code<>nil),也可以是假方法(Data<>nil,Code=nil)
167+ * 编译器对于德尔菲兼容性有一些关于比较方法值的特殊信息。
168+ * = 和 <> 运算符仅检查代码,而不检查数据。
143169
144-``` pascal
145- if OnMyEvent = NewValue then exit; // wrong, because it compares only Code
170+请勿使用:
146171```
147-
148-因为这只比较代码。改用
172+if OnMyEvent = NewValue then exit; // wrong, because it compares only Code
173+```
149174
150-``` pascal
175+因为这只比较代码。改用
176+```
151177if CompareMem(@FOnMyEvent, @NewValue, SizeOf(TMethod)) then exit; // correct, checking both Data and Code
152178```
153179
154-下面是 = 运算符失败的示例:
155-
156-``` pascal
180+下面是 = 运算符失败的示例:
181+```
157182type
158- TMyClass = class
159- private
160- FOnClick: TNotifyEvent;
161- procedure SetOnClick(Value: TNotifyEvent);
162- public
163- procedure Click(Sender: TObject);
164- property OnClick: TNotifyEvent read FOnClick write SetOnClick;
165- end;
166-
167-procedure TMyClass.SetOnClick(Value: TNotifyEvent);
168-begin
169- if Value = FOnClick then exit; // bug, checks only for Code, not for data
170- FOnClick := Value;
171-end;
172-
173-var
174- a, b: TMyClass;
175-begin
176- a := TMyClass.Create;
177- b := TMyClass.Create;
178- a.OnClick := @a.Click;
179- a.OnClick := @b.Click; // same code, but different data, a.OnClick still points to @a.Click;
180-end.
183+ TMyClass = class
184+ private
185+ FOnClick: TNotifyEvent;
186+ procedure SetOnClick(Value: TNotifyEvent);
187+ public
188+ procedure Click(Sender: TObject);
189+ property OnClick: TNotifyEvent read FOnClick write SetOnClick;
190+ end;
191+
192+ procedure TMyClass.SetOnClick(Value: TNotifyEvent);
193+ begin
194+ if Value = FOnClick then exit; // bug, checks only for Code, not for data
195+ FOnClick := Value;
196+ end;
197+
198+ var
199+ a, b: TMyClass;
200+ begin
201+ a := TMyClass.Create;
202+ b := TMyClass.Create;
203+ a.OnClick := @a.Click;
204+ a.OnClick := @b.Click; // same code, but different data, a.OnClick still points to @a.Click;
205+ end.
181206```
182207
183208---
184-*From the Free Pascal wiki, page "IDE tricks/zh CN", as it stood on 2023-02-04 after a change by Clzwf, 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).*
209+*From the Free Pascal wiki, page "IDE tricks/zh CN", as the Internet Archive kept it on 2024-07-16. 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