Что означает звездочка в Инспекторе объектов?

В инспекторе объектов 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;

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

введите описание изображения здесь

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

Другие вопросы по тегам