Wou*_*ick 11 delphi delphi-ide delphi-xe5 object-inspector
在Delphi的对象检查器中,我在属性名称(ConnectionName*)后面看到一个星号:

它是如何实现的,最重要的是:它是什么意思?
在TMySQLConnection的源代码中,我没有看到任何特别的东西,所以我想这是一些设计时间的事情?
更新
它与TSQLConnection的内容有关.
要重现,请将下面的代码粘贴到表单上.
经过一些游戏后,我得出结论,当Params属性被编辑时,星号会出现,因此它不再具有默认值.对我来说,如何实现这一目标仍然是个谜.
object SQLConnection1: TSQLConnection
ConnectionName = 'MySQLConnection'
DriverName = 'MySQL'
LoginPrompt = False
Params.Strings = (
'DriverUnit=Data.DBXMySQL'
'DriverPackageLoader=TDBXDynalinkDriverLoader,DbxCommonDriver190.' +
'bpl'
'DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borla' +
'nd.Data.DbxCommonDriver,Version=19.0.0.0,Culture=neutral,PublicK' +
'eyToken=91d62ebb5b0d1b1b'
'MetaDataPackageLoader=TDBXMySqlMetaDataCommandFactory,DbxMySQLDr' +
'iver190.bpl'
'MetaDataAssemblyLoader=Borland.Data.TDBXMySqlMetaDataCommandFact' +
'ory,Borland.Data.DbxMySQLDriver,Version=19.0.0.0,Culture=neutral' +
',PublicKeyToken=91d62ebb5b0d1b1b'
'GetDriverFunc=getSQLDriverMYSQL'
'LibraryName=dbxmys.dll'
'LibraryNameOsx=libsqlmys.dylib'
'VendorLib=LIBMYSQL.dll'
'VendorLibWin64=libmysql.dll'
'VendorLibOsx=libmysqlclient.dylib'
'MaxBlobSize=-1'
'DriverName=MySQL'
'HostName='
'Database='
'User_Name=xxx'
'Password='
'ServerCharSet='
'BlobSize=-1'
'ErrorResourceFile='
'LocaleCode=0000'
'Compressed=True'
'Encrypted=False'
'ConnectTimeout=60')
Left = 48
Top = 24
end
Run Code Online (Sandbox Code Playgroud)
你似乎已经反过来设计了星号的含义.由于我猜您没有设计时组件代码的来源,因此您需要依赖此类逆向工程或您可以找到的任何文档.
在评论中,您想知道组件如何导致Object Inspector显示星号.为此,组件将注册覆盖的属性编辑器TPropertyEditor.GetName.通过这样做,它可以返回它想要的任何名称,并且Object Inspector将忠实地显示该名称.
为了说明我已经采取了我自己的一个属性编辑器,并像这样砍掉它:
type
TMinMaxGridColumnProperty = class(TFloatProperty)
public
function GetName: string; override;
....
end;
function TMinMaxGridColumnProperty.GetName: string;
begin
Result := inherited GetName + '*';
end;
Run Code Online (Sandbox Code Playgroud)
现在,此属性编辑器提供的属性在Object Inspector中显示如下:

因此,我似乎很确定这就是您正在使用的组件如何影响这一点.设计时间代码将使用组件的状态来确定是否附加星号.
| 归档时间: |
|
| 查看次数: |
352 次 |
| 最近记录: |