2014-04-17 10 views
11

In Delphi Objektinspektor, sehe ich ein Sternchen hinter einem Eigenschaftsnamen (ConnectionName*):Was bedeutet ein Sternchen im Objektinspektor?

Asterisk in object inspector

Wie es dort erhält, und vor allem: was bedeutet es?

Im Sourcecode für TMySQLConnection sehe ich nichts besonderes, also denke ich, es ist etwas Design-Time-Sache?

Update

Es hat etwas mit dem Inhalt der TSQLConnection zu tun.

Um zu reproduzieren, fügen Sie den folgenden Code in ein Formular ein.

Nach etwas herumspielen, komme ich zu dem Schluss, dass der Stern erscheint, wenn die Params-Eigenschaft bearbeitet wird, so dass es nicht mehr die Standardwerte hat. Es ist mir immer noch ein Rätsel, wie das erreicht wird.

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

Liegt es daran, dass die Eigenschaft an LiveBindings gebunden ist? –

+0

Ich kann das Problem nicht reproduzieren (Ich habe MySQL nicht installiert, aber ich habe mit SQLite und IBToGo in einer neuen, sauberen VCL-Formular-App getestet). Ich sehe kein Sternchen auf einer der Eigenschaften. –

+0

Live Bindings wäre meine Vermutung, aber nie verwendet, so würde ich nicht wissen –

Antwort

6

Sie haben scheinbar die Bedeutung des Sterns umgekehrt entwickelt. Da ich denke, dass Sie keine Quelle für den Komponentencode für die Entwicklungszeit haben, müssen Sie sich auf ein solches Reverse Engineering oder auf die Dokumentation verlassen, die Sie finden können.

In den Kommentaren fragen Sie sich, wie die Komponente den Objektinspektor veranlassen könnte, das Sternchen anzuzeigen. Um dies zu tun, würde die Komponente einen Eigenschaftseditor registrieren, der TPropertyEditor.GetName überschreibt. Auf diese Weise kann ein beliebiger Name zurückgegeben werden, und der Objektinspektor zeigt diesen Namen getreulich an.

Zur Veranschaulichung ich einen meiner eigenen Eigenschaft Editoren genommen haben, und es gehackt um etwa so:

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

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

Und nun die Eigenschaften, die wie folgt von diesem Immobilien Editor bedient werden im Objektinspektor angezeigt:

enter image description here

So scheint es mir fast sicher, dass dies ist, wie die Komponente, die Sie mit arbeiten wird dies bewirken. Der Entwurfszeitcode verwendet den Status der Komponente, um zu bestimmen, ob der Stern angefügt werden soll oder nicht.

Verwandte Themen