在编译器上找不到标识符(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 := $00E7E7E7;
end;
[...]

但是在编译程序时显示以下错误代码:

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

我确定"开始"是对象检查器和。lfm文件面板的名称。

我尝试将"开始"更改为另一个名称,但错误仍然发生。

谢谢!

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

错误的一种可能是由于Start行缺失,您应该有如下内容:

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

要解决这个问题,请尝试像上面那样添加Start: TPanel;行,如果它不存在的话。

另一个选项是在文本视图中查看表单(Lazarus的.lfm和Delphi的.dfm),并找到Start的参考块,它可能看起来像:

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

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

然后你可以尝试添加一个新的面板到窗体,并命名为Start,然后你只需要链接你的事件处理程序回到新的控件。

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

最新更新