سلام
فرض کنین من یه کامپوننت دارم که یه پروپرتی با نام Colored داره که از نوع Boolean باشه.
توی Paint کامپوننت مقدار این پروپرتی بررسی میشه و بر طبق مقدارش ترسیم ظاهر کامپوننت انجام میشه.
من امتحان کردم دیدم که اگه Read و Write هردو مستقیما با یک فیلد (متغیری با پیشوند F!) کار کنند در زمان طراحی با تغییر اون پروپرتی تغییری رخ نمی ده.
فرض کنین داشته باشیم:
TClrProgress= class(TCustomControl)
Private
FPosition: Integer;
.
Published
Property Position:Integer read FPosition write FPosition default 0;
end;
وقتی کامپوننت رو روی فرم میذاریم با تغییر مقدار Position تغییری منعکس نمیشه ولی وقتی برنامه رو اجرا می کنیم تازه اثر مقداردهی معلوم میشه.
آیا ممکنه این به دلیل نسخه قدیمی دلفی من باشه یا راه دیگه ای هم هست که بدون تعریف پروسیجر برای مقداردهی Position تغییر مقدار این پروپرتی در زمان طراحی هم در کامپوننت منعکس بشه.
آیا حتما باید چنین چیزی بنویسیم؟:
TClrProgress= class(TCustomControl)یه سوال کوچولوی دیگه: چرا مقدار Default بی اثره و مجبورم در Create پروپرتی رو مقداردهی کنم؟
Private
FPosition: Integer;
Procedure SetPosition(P:Integer);
.
.
Published
Property Position:Integer read FPosition write SetPosition default 0;
end;