E1012常量表达式违反Delphi XE4中的子范围界限错误

E1012常量表达式违反Delphi XE4中的子范围界限错误,delphi,delphi-7,delphi-xe4,Delphi,Delphi 7,Delphi Xe4,Delphi XE4中有下面一行给了我错误:E1012常量表达式违反了子范围界限 Message.WParam := clBtnFace; 当我调试代码时,得到的值是clBtnFace=-16777201 同样适用于Delphi7代码 我在stackoverflow上找到以下链接,但无法使其解决我的问题: 在现代Delphi版本中,Windows数据类型的声明与Windows头文件中的定义保持一致。和WPARAM是并且一直是一种无符号类型。但在旧版本的Delphi中,它被错误地声明为已签名 因

Delphi XE4中有下面一行给了我错误:
E1012常量表达式违反了子范围界限

Message.WParam := clBtnFace;
当我调试代码时,得到的值是
clBtnFace=-16777201

同样适用于Delphi7代码

我在stackoverflow上找到以下链接,但无法使其解决我的问题:

在现代Delphi版本中,Windows数据类型的声明与Windows头文件中的定义保持一致。和
WPARAM
是并且一直是一种无符号类型。但在旧版本的Delphi中,它被错误地声明为已签名

因此,要在现代Delphi中生成代码编译器,需要将值转换为与
Message.WParam
相同的类型。该类型为
WPARAM

Message.WParam := WPARAM(clBtnFace);

在现代Delphi版本中,Windows数据类型的声明与Windows头文件中的定义保持一致。和
WPARAM
是并且一直是一种无符号类型。但在旧版本的Delphi中,它被错误地声明为已签名

因此,要在现代Delphi中生成代码编译器,需要将值转换为与
Message.WParam
相同的类型。该类型为
WPARAM

Message.WParam := WPARAM(clBtnFace);