在编译器上找不到标识符(Free Pascal)

Identifier not found on compiler (Free Pascal)

我正在尝试在鼠标悬停时更改 Lazarus 上面板的颜色。

我在 Lazarus 上尝试 运行 这段代码:

unit test;

{$mode objfpc}{$H+}

interface

uses
[...]

type

  { Tvendas_menu }

  Tvendas_menu = class(TForm)

    [...]
    procedure StartMouseEnter(Sender: TObject);
    [...]


  private
    { private declarations }
  public
    { public declarations }
  end;

var
[...]

implementation
[...]

procedure Tvendas_menu.StartMouseEnter(Sender: TObject);
begin
   Start.Color := [=10=]E7E7E7;
end;
[...]

但是编译程序时出现如下错误代码:

错误:找不到标识符"Start"

我确定 "Start" 是 Object Inspector 和 .lfm 文件中面板的名称。

我尝试将 "Start" 更改为其他名称,但仍然出现错误。

谢谢!

当您向表单添加控件时,它们会自动添加到表单 class 下,在您的情况下,它们将出现在 Tvendas_menu = class(TForm).

错误的一种可能是因为 Start 行丢失了,你应该有这样的东西:

type
  Tvendas_menu = class(TForm)
    Start: TPanel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

要解决此问题,请尝试像上面那样添加 Start: TPanel; 行(如果不存在)。

您的另一个选择是在文本视图中查看表单(.lfm 对于 Lazarus,.dfm 对于 Delphi)并找到 Start 的参考块,它可能类似于:

object Start: TPanel
  Left = 152
  Top = 248
  Width = 185
  Height = 41
  Caption = 'Start'
  TabOrder = 1
end

删除它,然后 return 返回到表单视图。

然后您可以尝试向窗体添加一个新面板并将其命名为 Start,然后您只需要 link 您的事件处理程序返回到新控件。

附带提示,将控件命名为 Start 并不是很有用,也许可以考虑一个更好的命名标识符,例如 panStart.