Atributos que sólo puede ser escrito internamente


a veces es necesario para permitir a los atributos que son de sólo lectura para ser modificable por el objeto en sí mismo
yo
1) Crear una propiedad InternalChangeCount en su base de clase, en el etiquetado valores de asegurarse de que la Negrita sabe que es un Delphi atributo, con un CAMPO para el acceso de lectura y no hay acceso de escritura
2) Crear los siguientes métodos privados
procedimiento TBusinessClassesRoot.StartInternalChange
begin
& nbsp & nbsp Inc(fInternalChangeCount)
fin
procedimiento TBusinessClassesRoot.EndInternalChange
begin
& nbsp & nbsp si InternalChangeCount = 0, entonces
& nbsp & nbsp & nbsp & nbsp elevar la Excepción.Create('EndInternalChange sin StartInternalChange')
& nbsp & nbsp Dic(fInternalChangeCount)
fin
función TBusinessClassesRoot.IsInternalChange: Boolean
begin
& nbsp & nbsp Resultado := fInternalChangeCount > 0
fin
3) Anular la siguiente
procedimiento TBusinessClassesRoot.AfterConstruction
begin
& nbsp & nbsp fInternalChangeCount := 0
fin
{nunca me han molestado con este mismo}
destructor TBusinessClassesRoot.Destruir
begin
& nbsp & nbsp si InternalChangeCount > 0, entonces
& nbsp & nbsp & nbsp & nbsp elevar la Excepción.Create('StartInternalChange sin EndInternalChange')
& nbsp & nbsp heredado
fin

Ahora, todas las clases tienen la capacidad para hacer esto
StartInternalChange
prueba
& nbsp & nbsp SomeReadOnlyAttribute := 32
finalmente
& nbsp & nbsp EndInternalChange
fin
En sus clases descendientes debería invalidar ReceiveQueryFromOwned y, a continuación, hacer esto....
begin
& nbsp & nbsp Resultado := heredado ReceiveQueryFromOwned(etc, etc, etc)
& nbsp & nbsp si el Resultado
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si OriginalEvent = bqMayModify, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si IsInternalChange, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := True
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Originador = M_SomeReadOnlyAttribute, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := False
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final
fin









Atributos que solo puede ser escrito internamente


Atributos que solo puede ser escrito internamente : Multi-millones de consejos para hacer su vida mas facil.


a veces es necesario para permitir a los atributos que son de solo lectura para ser modificable por el objeto en si mismo
yo
1) Crear una propiedad InternalChangeCount en su base de clase, en el etiquetado valores de asegurarse de que la Negrita sabe que es un Delphi atributo, con un CAMPO para el acceso de lectura y no hay acceso de escritura
2) Crear los siguientes metodos privados
procedimiento TBusinessClassesRoot.StartInternalChange
begin
& nbsp & nbsp Inc(fInternalChangeCount)
fin
procedimiento TBusinessClassesRoot.EndInternalChange
begin
& nbsp & nbsp si InternalChangeCount = 0, entonces
& nbsp & nbsp & nbsp & nbsp elevar la Excepcion.Create('EndInternalChange sin StartInternalChange')
& nbsp & nbsp Dic(fInternalChangeCount)
fin
funcion TBusinessClassesRoot.IsInternalChange: Boolean
begin
& nbsp & nbsp Resultado := fInternalChangeCount > 0
fin
3) Anular la siguiente
procedimiento TBusinessClassesRoot.AfterConstruction
begin
& nbsp & nbsp fInternalChangeCount := 0
fin
{nunca me han molestado con este mismo}
destructor TBusinessClassesRoot.Destruir
begin
& nbsp & nbsp si InternalChangeCount > 0, entonces
& nbsp & nbsp & nbsp & nbsp elevar la Excepcion.Create('StartInternalChange sin EndInternalChange')
& nbsp & nbsp heredado
fin

Ahora, todas las clases tienen la capacidad para hacer esto
StartInternalChange
prueba
& nbsp & nbsp SomeReadOnlyAttribute := 32
finalmente
& nbsp & nbsp EndInternalChange
fin
En sus clases descendientes deberia invalidar ReceiveQueryFromOwned y, a continuacion, hacer esto....
begin
& nbsp & nbsp Resultado := heredado ReceiveQueryFromOwned(etc, etc, etc)
& nbsp & nbsp si el Resultado
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si OriginalEvent = bqMayModify, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si IsInternalChange, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := True
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Originador = M_SomeReadOnlyAttribute, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := False
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final
fin


Atributos que sólo puede ser escrito internamente

Atributos que sólo puede ser escrito internamente : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación