Sign in Join
Wiki copytemporary

IDE tricks/zh CN

한국어 · Deutsch · English · Français · Magyar · Slovenčina · Русский · 中文(中国) · 日本語

使用打开文件创建新文件

您可以创建一个新文件并保存它,也可以一步创建一个具有文件名和文件类型的新文件:只需打开文件 () 并选择不存在的文件名。例如:unit1.pas。IDE 将询问您是否应创建它。Ctrl+o

自定义新单元/窗体

从0.9.27开始,您可以右键单击“新单元”(新窗体)按钮并设置应创建的文件类型。您可以通过 IDEIntf 或项目模板包注册更多文件类型。

IDE macros

IDE Macros in paths and filenames

IDE directives

IDE directives

获取工程编译的命令行参数

可以从“项目”-“>编译器选项”->“显示选项”中复制参数。这里的路径是相对于项目目录的。因此,在大多数情况下,您无需调整即可复制它们。

参数也会保存到 *.compile 文件中。例如,如果您的项目名为test1.lpi,则会创建一个test1.compile。它是一个简单的XML文件,因此您只需复制选项并调整路径即可在另一台计算机上编译。该文件被放入创建可执行文件的同一目录中。

对于包,也是一样的。

这样,您就可以在Lazarus IDE之外编译您的(希望可以工作且没有错误)代码。

源代码编辑器关闭除这个文件之外的所有打开的文件

在 GTK(适用于 Linux、macOS 和 FreeBSD)下,源代码编辑器页面的页面名称右侧有一个关闭按钮。在单击按钮的同时按Ctrl关闭除单击的文件之外的所有文件。

控件面板

在控件面板中查找组件

您知道组件名称或其中的一部分,但您不知道它在哪个页面上?此工具可以帮你找到它:右键单击控件面板中的任何组件以打开弹出菜单,从菜单中选择“查看全部”;这将弹出一个对话框(您也可以通过按Ctrl+Alt+P来实现它)。在“查找”框中输入(部分)组件名称以过滤列表。

在控件面板中打开控件的包

右键单击组件以打开弹出菜单,然后选择打开包。

在组件面板中查找组件的源声明 右键单击组件以打开弹出菜单,然后选择打开单位。

我的应用程序在调试时冻结了我的 Linux 桌面

当拥有鼠标的应用程序被 gdb(调试器)停止时,X(您的桌面)可能会冻结。

使用第二个 X 会话

您可以通过以下方式打开第二个 X:

 X :1 &

使用Ctrl-Alt-F7可以切换到 :0,Ctrl-Alt-F8切换到 :1,之后您可以通过以下方式开始第二个 GNOME 会话:

 gnome-session --display=:1 &

Using VNC

您可以通过安装 tightvncserver 或 realvncserver 来使用 vncserver/client。使用以下命令启动服务器:

 vncserver :1

AFAIK,会话也已启动。您可以使用 vncviewer 连接到 vncserver。

在第二台服务器上调试应用程序

在Lazarus中,在项目的运行参数中,选中“使用显示”并输入

:1

现在,您的应用程序将在第二台服务器上运行,因此在调试时,只有第二台服务器会冻结(但这不会影响您,因为您是在第一台服务器上进行调试)。

快速编译IDE

在Lazarus上工作本身意味着多次重建IDE。如果您使用以下技巧并且有足够的内存和最新的 CPU,您应该能够在几秒钟内重新编译 IDE。

DebugLn of the IDE or a LCL application

IDE通过DebugLn编写了许多有用的提示。你可以通过这种方式得到这些:

这是常规的LCL功能。

查找 IDE 窗口的源文件

从 IDE 打开终端窗口

能够在当前项目的工作目录中打开终端通常很方便。也许要使用像git或svn这样的版本控制系统,或者出于许多其他可能的原因。以下是将菜单项添加到Lazarus's Tool的菜单的方法。感谢 taazz 和论坛帖子的其他贡献者。

最后两个在系统之间差异很大,如果您不知道第一个,请尝试查看正在运行的程序列表,“终端”一词可能会出现。第二,一旦你知道终端的名称,查找它的手册页或谷歌。

一些例子包括 -

O.S. 程序文件名 参数
Ubuntu Mate mate-terminal||--tab --working-directory=$projPath()
xfce exo-open||--launch TerminalEmulator --working-directory $ProjPath()
KDE konsole||--working-directory $projPath()
GNOME gnome-terminal||--working-directory $projPath()
Mac(见下文) /User/$HOME/bin/ttab cd $projPath()
Windows CMD.exe /k cd “$ProjPath()”

IDE Ext Tool 在Mac上,一切都变得容易得多,您所要做的就是:

  1. 安装 https://www.npmjs.com/package/ttab,它只有 665 行,请使用安装它的路径,而不是上表中显示的示例。
  2. 运行它,以便您可以勾选其安全性以访问辅助功能。
  3. 然后按照描述设置拉撒路工具设置。
  4. 然后,从Lazarus中,工具>打开终端,然后类似于3)勾选以允许Lazarus访问可访问性的东西。

在Windows上,还需要勾选“显示控制台”,如右图所示:

对象检查器:事件:帧:跳转到继承事件的源

对象检查器将继承事件的事件显示为 ClassName.MethodName。双击将创建一个新事件。 Ctrl+Mouse click将直接跳转到继承的方法主体,而不创建新方法。

对象检查器中的事件(方法属性)

事件(方法属性)是特殊属性,因为它们需要代码地址指针作为值,该指针在设计时不存在。这就是为什么Lazarus使用与Delphi IDE相同的技巧:每个方法值都可以类型转换为TMethod,其中包含Data(对象或类指针)和代码(地址指针)。在运行时,两者都已设置。但在设计时,IDE 会将“数据”设置为其内部查找表的特殊键值,并将“代码”设置为 nil。这意味着:

请勿使用:

pascal
 if OnMyEvent = NewValue then exit; // wrong, because it compares only Code

因为这只比较代码。改用

pascal
if CompareMem(@FOnMyEvent, @NewValue, SizeOf(TMethod)) then exit; // correct, checking both Data and Code

下面是 = 运算符失败的示例:

pascal
type
  TMyClass = class
  private
    FOnClick: TNotifyEvent;
    procedure SetOnClick(Value: TNotifyEvent);
  public
    procedure Click(Sender: TObject);
    property OnClick: TNotifyEvent read FOnClick write SetOnClick;
  end;

procedure TMyClass.SetOnClick(Value: TNotifyEvent);
begin
  if Value = FOnClick then exit; // bug, checks only for Code, not for data
  FOnClick := Value;
end;

var
  a, b: TMyClass;
begin
  a := TMyClass.Create;
  b := TMyClass.Create;
  a.OnClick := @a.Click;
  a.OnClick := @b.Click; // same code, but different data, a.OnClick still points to @a.Click;
end.

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.

Revision 4, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.