Подтвердить что ты не робот

Что означает звездочка в Object Inspector?

В инспекторе объектов Delphi я вижу звездочку за именем свойства (ConnectionName*):

Asterisk in object inspector

Как это получается, и прежде всего: что это значит?

В исходном коде для 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
4b9b3361

Ответ 1

У вас, похоже, было обратное проектирование значения звездочки. Поскольку я полагаю, что у вас нет источника кода компонента времени разработки, вам нужно будет полагаться на такую ​​обратную разработку или любую документацию, которую вы можете найти.

В комментариях вам интересно, как компонент может заставить Object Inspector отобразить звездочку. Для этого компонент зарегистрировал бы редактор свойств, который переопределяет TPropertyEditor.GetName. Таким образом, он может вернуть любое имя, которое он представляет, и инспектор объектов точно отобразит это имя.

Чтобы проиллюстрировать, я взял один из моих собственных редакторов свойств и взломал его так:

type
  TMinMaxGridColumnProperty = class(TFloatProperty)
  public
    function GetName: string; override;
    ....
  end;

function TMinMaxGridColumnProperty.GetName: string;
begin
  Result := inherited GetName + '*';
end;

И теперь свойства, которые обслуживаются этим редактором свойств, выглядят следующим образом в Object Inspector:

enter image description here

Поэтому мне почти наверняка кажется, что именно так работает компонент, с которым вы работаете. Код времени разработки будет использовать состояние компонента, чтобы определить, добавлять или не добавлять звездочку.