При работе со сторонними компонентами и библиотеками, иногда может возникнуть несогласие с автором. В частности рассмотрим такой момент, когда автор класса сторонней библиотеки создал property, которую нельзя изменить, но нам очень хочется. Данный приём имеет ряд ограничений. Поэтому я не буду брать какой-то конкретный класс, а нарисую примитивный для примера. Допустим, есть такой класс: TStrikeCatsControl = class(TControl) private FCorrectValue: Integer; public constructor Create(AOwner: TComponent); override; published property CorrectValue: Integer read FCorrectValue; end;
...
constructor TStrikeCatsControl.Create(AOwner: TComponent); begin inherited; FCorrectValue := Screen.DesktopWidth div 2; end; Вобщем какой-то сторонний компонент, у которого есть проперти CorrectValue. Автор контрола считает, что данное проперти не нуждается в записи, а должно вычисляться автоматом. Мы же считаем, что оно должно быть другим. Например Screen.Width div 2; Как быть? Изменить исходники компонента? Логично, но нехорошо. Да их может и не быть. Можно использовать нехитрый трюк.