ورود

View Full Version : سوال در مورد کامپوننت نویسی



Cave_Man
جمعه 18 آبان 1386, 11:54 صبح
با سلام
در نظر بگیرید که ما دو property برای کامپوننت قرار بدیم بطوریکه مقادیر Value آنها به هم وابسته باشد , مثلا اگر مقدار property اول غیر از صفر بود بلافاصله مقدار property دوم صفر شود یا یک رابطه ریاضی بین آنها برقرار باشد و....
راه حل چیست؟
فراوان تشکر !

vcldeveloper
جمعه 18 آبان 1386, 15:54 عصر
برای هر Property می تونید متدهای getter و setter داشته باشید که به ترتیب هنگام خواندن مقدار یک Property و موقع تغییر مقدار یک property فراخوانی میشند. می تونید با کمک این متدها تغییرات مورد نظر خود را اعمال کنید. مثلا:


TMyClass = class
private
FMyProp: integer;
function GetMyProp: integer;
procedure SetMyProp(Value: integer);
public
property MyProp: integer read GetMyProp write SetMyProp;
end;

Cave_Man
جمعه 18 آبان 1386, 23:42 عصر
تشکر فراوان از اقای کشاورز
هنگامی که یک property مقدارش تغییر کرد متد مربوطه در write فرخوانی میشود.این مفهوم رو درک کردم
اما هنوز دقیقا نمیدونم که read در چه مورد فراخوانی میشه

vcldeveloper
شنبه 19 آبان 1386, 03:01 صبح
اما هنوز دقیقا نمیدونم که read در چه مورد فراخوانی میشه
Read زمانی فراخوانی میشه که شما بخواید مقدار Property را بخوانید. مثلا فرض کنید property شما به فیلد خاصی در کلاس مربوط نیست و باید مقدار آن از طریق یک محاسبه بدست بیاید، می تونید این محاسبه را در متد مربوط به Read انجام بدید. نتیجه این متد هر چی باشه، بصورت مقدار property برگشت داده میشه.

dkhatibi
یک شنبه 20 آبان 1386, 07:06 صبح
Property ها چیز عجیبی در برنامه نویسی شی گرا هستند!!!