2010-12-14 4 views
1

Je voudrais demander comment définir la propriété par défaut dans une classe delphi 7? Donc, il peut être accédé en écrivant simplement >> class: = '..'; < < si la propriété par défaut est text. donc nous ne devons pas écrire class.text: = '..';Propriété par défaut pour la classe dans delphi 7

+0

Bienvenue sur StackOverflow. Dans vos commentaires aux réponses, vous avez indiqué quelques informations supplémentaires (que vous voulez un exemple Delphi semblable à un code VB). Je pense que vous devriez éditer votre question, mettre à la fois un exemple VB qui fonctionne, et une maquette de Delphi (qui ne fonctionne pas nécessairement) pour nous montrer ce que vous êtes vraiment après. Également étiqueter votre question pour la version VB (VB6, VB.NET, etc) que vous utilisez comme arrière-plan. –

+0

Par exemple, Read est une classe qui possède des propriétés Display et Say (type de données booléen). Et 'say' est la propriété par défaut pour la classe 'Read', dans vb si vous voulez accéder 'say' nous pouvons écrire class = true c'est pareil avec write.say = true. Ce que je demande est si nous pouvons faire une propriété comme propriété par défaut pour une classe comme ci-dessus? (la partie vb n'est pas importante car ce que je demande est si delphi 7 peut le faire? et comment le faire si cela est possible?) – eta

Répondre

0

Je crains que vous ne pouvez pas. Une classe peut avoir une propriété par défaut de tableau ou une propriété par défaut de type ordinal mais pas une chaîne.

+1

Pouvons-nous vraiment avoir une propriété par défaut ordinale? –

+5

@Sertac - J'étais sur le point de demander cela - je suppose qu'il fait référence au spécificateur de stockage. Notez que la version Delphi peut avoir plusieurs propriétés de tableau par défaut, à condition qu'elles aient des signatures différentes, par exemple: 'property ByName [AName: string] ...; default' et' property ByIndex [AIndex: Integer] ... ; default' –

+0

@Gerry - Je ne connaissais pas les propriétés par défaut multiples, sympa .. Un index 'chaîne'? Oh! ça marche ... Personne ne me l'a dit. Merci Gerry, tu as été vraiment utile! –

1

Vous ne pouvez pas faire cela car cela conduit à une situation ambiguë.

Par exemple, vous avez une classe:

type 
    TMyClass = class 
    public 
    property MyProperty: TMyClass read FMyProperty; default; 
    end; 
var 
    a, b : TMyClass; 

begin 
    // ... 
    a := b; // Do we assign to a or to MyProperty 
    // ... 
end; 

Il aurait pu travailler pour d'autres types (de base), mais il est encore confus. En outre, il suffit de quelques caractères supplémentaires à taper.

+0

Exemple parfait! –

+0

Non, ce n'est pas comme ça. Ce que je veux dire, c'est comment fonctionne TAdoQuery, par exemple, QRY: TAdoquery, vous voulez accéder à la valeur pour chaque champ que vous avez, vous pouvez simplement écrire QRY ['field_name'] qui mène à Qry.fieldByName ('field_name'). Maintenant, je veux changer cette propriété par défaut à quelque chose d'autre. pouvons-nous faire cela? – eta

+0

Vous avez raison, en utilisant le mot-clé par défaut fonctionne, propriété MyProperty: TMyClass read FMyProperty; par défaut; ... Merci. – eta

Questions connexes