пятница, августа 25, 2006

Class Helpers

Еще один способ облегчить себе жизнь воспользовавшись прелестями BDS 2006, а именно прелестью вынесенной в заголовок. Об этом я тоже уже упоминал но повторить (да еще и самого себя) не помешает. Итак:

Type

// Класс-хелпер для класса TObject
TObjectClassHelper = Class Helper For TObject

Private

{$REGION ' Методы доступа к значениям свойств '}

Function GetThis : TObject; Inline;
Function GetThisAssigned : Boolean; Inline;

{$ENDREGION}

Public

Property This : TObject Read GetThis;
Property ThisAssigned : Boolean Read GetThisAssigned;

End;

Implementation

{ TObjectClassHelper }

//
Function TObjectClassHelper.GetThis : TObject;
Begin

Result := Self;

End;
//

//
Function TObjectClassHelper.GetThisAssigned : Boolean;
Begin

Result := Assigned(Self);

End;
//


Удобно использовать в коде требующем ссылку на объект раскрытый оператором With. В зависимости от стиля программирования такое может случаться довольно часто ;) Примеры:


  With TRegion.CreateAssigned(ARegion, amSharing) Do
Try

Result := TakeFrom(TRegion(This), ALastError);

Finally

Free;

End;
 With FindControl(0) Do
If ThisAssigned Then
Caption := Caption + 'OK';

Комментариев нет: