Les attributs qui ne peuvent être écrites en interne


Il est parfois nécessaire de permettre à des attributs qui sont en lecture seule à être accessible en écriture par l'objet lui-même
- je faire cela
1) Créer une propriété InternalChangeCount sur votre classe de base, dans les tagged values assurez-vous que l'audace sait que c'est un Delphi attribut, avec un CHAMP pour l'accès en lecture et pas d'accès en écriture
2) Créer les méthodes privées
procédure TBusinessClassesRoot.StartInternalChange
begin
& nbsp & nbsp Inc(fInternalChangeCount)
fin
procédure TBusinessClassesRoot.EndInternalChange
begin
& nbsp & nbsp si InternalChangeCount = 0, alors
& ! & ! & ! & nbsp raise Exception.Create('EndInternalChange sans StartInternalChange')
& nbsp & nbsp Dec(fInternalChangeCount)
fin
fonction de TBusinessClassesRoot.IsInternalChange: Boolean
begin
& nbsp & nbsp Résultat := fInternalChangeCount > 0
fin
3) Remplacer les suivantes
procédure TBusinessClassesRoot.AfterConstruction
begin
& nbsp & nbsp fInternalChangeCount := 0
fin
{j'ai jamais pris la peine avec ce un moi-même}
destructeur TBusinessClassesRoot.Détruire
begin
& nbsp & nbsp si InternalChangeCount > 0, alors
& ! & ! & ! & nbsp raise Exception.Create('StartInternalChange sans EndInternalChange')
& nbsp & nbsp hérité
fin

Maintenant, tous vos classes ont la capacité de le faire
StartInternalChange

& nbsp & nbsp SomeReadOnlyAttribute := 32
enfin
& nbsp & nbsp EndInternalChange
fin
Dans vos classes descendantes vous devez substituer ReceiveQueryFromOwned puis....
begin
& nbsp & nbsp Résultat := hérité ReceiveQueryFromOwned(etc, etc, etc)
& nbsp & nbsp si Résultat
& nbsp & nbsp commencer
& ! & ! & ! & nbsp si OriginalEvent = bqMayModify puis
& ! & ! & ! & ! & ! & nbsp si IsInternalChange puis
& ! & ! & ! & ! & ! & ! & ! & nbsp Résultat := True
& ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & nbsp si l'Expéditeur = M_SomeReadOnlyAttribute puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Résultat := False
& ! & ! & ! & ! & ! & nbsp fin
& nbsp & nbsp fin
fin









Les attributs qui ne peuvent etre ecrites en interne


Les attributs qui ne peuvent etre ecrites en interne : Plusieurs milliers de conseils pour vous faciliter la vie.


Il est parfois necessaire de permettre a des attributs qui sont en lecture seule a etre accessible en ecriture par l'objet lui-meme
- je faire cela
1) Creer une propriete InternalChangeCount sur votre classe de base, dans les tagged values assurez-vous que l'audace sait que c'est un Delphi attribut, avec un CHAMP pour l'acces en lecture et pas d'acces en ecriture
2) Creer les methodes privees
procedure TBusinessClassesRoot.StartInternalChange
begin
& nbsp & nbsp Inc(fInternalChangeCount)
fin
procedure TBusinessClassesRoot.EndInternalChange
begin
& nbsp & nbsp si InternalChangeCount = 0, alors
& ! & ! & ! & nbsp raise Exception.Create('EndInternalChange sans StartInternalChange')
& nbsp & nbsp Dec(fInternalChangeCount)
fin
fonction de TBusinessClassesRoot.IsInternalChange: Boolean
begin
& nbsp & nbsp Resultat := fInternalChangeCount > 0
fin
3) Remplacer les suivantes
procedure TBusinessClassesRoot.AfterConstruction
begin
& nbsp & nbsp fInternalChangeCount := 0
fin
{j'ai jamais pris la peine avec ce un moi-meme}
destructeur TBusinessClassesRoot.Detruire
begin
& nbsp & nbsp si InternalChangeCount > 0, alors
& ! & ! & ! & nbsp raise Exception.Create('StartInternalChange sans EndInternalChange')
& nbsp & nbsp herite
fin

Maintenant, tous vos classes ont la capacite de le faire
StartInternalChange

& nbsp & nbsp SomeReadOnlyAttribute := 32
enfin
& nbsp & nbsp EndInternalChange
fin
Dans vos classes descendantes vous devez substituer ReceiveQueryFromOwned puis....
begin
& nbsp & nbsp Resultat := herite ReceiveQueryFromOwned(etc, etc, etc)
& nbsp & nbsp si Resultat
& nbsp & nbsp commencer
& ! & ! & ! & nbsp si OriginalEvent = bqMayModify puis
& ! & ! & ! & ! & ! & nbsp si IsInternalChange puis
& ! & ! & ! & ! & ! & ! & ! & nbsp Resultat := True
& ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & nbsp si l'Expediteur = M_SomeReadOnlyAttribute puis
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Resultat := False
& ! & ! & ! & ! & ! & nbsp fin
& nbsp & nbsp fin
fin


Les attributs qui ne peuvent être écrites en interne

Les attributs qui ne peuvent être écrites en interne : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation