Attributter som bare kan skrives internally

Det er noen ganger nødvendig å tillate attributter som blir lest-bare å være skrivbar for objektet itselfI gjøre this1) Lag en eiendom InternalChangeCount på baseklassen, i de kodede verdier sørge for at Fet vet det er en Delphi attributt, med et felt for lesetilgang og ingen skrive access2) Opprett følgende private methodsprocedure TBusinessClassesRoot.StartInternalChange, begynner Inc (fInternalChangeCount); end; prosedyre TBusinessClassesRoot.EndInternalChange, begynne hvis InternalChangeCount = 0 deretter heve Exception.Create ( 'EndInternalChange uten StartInternalChange '); Desember (fInternalChangeCount); end; funksjon TBusinessClassesRoot.IsInternalChange: Boolean, begynner Resultat: = fInternalChangeCount > 0; end; 3) Overstyrer followingprocedure TBusinessClassesRoot.AfterConstruction, begynner fInternalChangeCount: = 0; ende; {Jeg har aldri plaget med dette en selv} destructor TBusinessClassesRoot.Destroy; begynne hvis InternalChangeCount > 0 deretter øke Exception.Create ( 'StartInternalChange uten EndInternalChange'); arvet; end; Nå er alle klassene har muligheten til å gjøre thisStartInternalChange, prøv SomeReadOnlyAttribute: = 32, og endelig EndInternalChange; end; I dine kommer klassene vil du overstyre ReceiveQueryFromOwned og deretter gjøre dette .... begynne Resultat: = arvet ReceiveQueryFromOwned ( etc, etc, etc); hvis resultatet deretter begynne hvis OriginalEvent = bqMayModify så hvis IsInternalChange deretter Resultat: = True annet begynne hvis Opphavsmann = M_SomeReadOnlyAttribute deretter Resultat: = False; slutt; end, end,



Previous:
Next Page: