2014-04-17 72 views
11

在Delphi的對象檢查,我看到一個屬性名(ConnectionName*)後面的星號:Object Inspector中的星號是什麼意思?

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 
+1

是否因爲該屬性受到LiveBindings的約束? –

+0

我不能重現這個問題(我沒有安裝MySQL,但是我在一個新的乾淨的VCL表單應用程序中用SQLite和IBToGo進行了測試)。我沒有看到任何屬性上的星號。 –

+0

現場綁定是我的猜想,但從未使用它,所以不知道 –

回答

6

您似乎已經反向設計了星號的含義。因爲我猜你沒有設計時組件代碼的源代碼,所以需要依賴這種反向工程或任何可以找到的文檔。

在註釋中您會想知道組件如何導致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

因此,幾乎可以肯定的,我認爲這是你如何使用的部件是實現這一點。設計時間代碼將使用組件的狀態來確定是否附加星號。

相關問題