Что означает звездочка в Инспекторе объектов?
В инспекторе объектов 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
1 ответ
Вы, кажется, полностью изменили значение звездочки. Так как я полагаю, что у вас нет исходного кода для кода времени разработки, вам нужно полагаться на такой реверс-инжиниринг или любую документацию, которую вы можете найти.
В комментариях вас интересует, как компонент может заставить инспектор объектов отображать звездочку. Для этого компонент должен зарегистрировать редактор свойств, который переопределяет TPropertyEditor.GetName
, Таким образом он может вернуть любое имя, которое ему нравится, и инспектор объектов точно отобразит это имя.
Чтобы проиллюстрировать это, я взял один из моих собственных редакторов свойств и взломал его так:
type
TMinMaxGridColumnProperty = class(TFloatProperty)
public
function GetName: string; override;
....
end;
function TMinMaxGridColumnProperty.GetName: string;
begin
Result := inherited GetName + '*';
end;
И теперь свойства, обслуживаемые этим редактором свойств, отображаются в Инспекторе объектов следующим образом:
Так что мне кажется почти уверенным, что именно так компонент, с которым вы работаете, влияет на это. Код времени разработки будет использовать состояние компонента, чтобы определить, добавлять ли звездочку или нет.