نمایش نتایج 1 تا 4 از 4

نام تاپیک: آیا لازمه که حتما برای تغییر پروپرتی در زمان اجرا یه پروسیجر برای Read تعریف کنم؟

  1. #1
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    963
    سلام
    فرض کنین من یه کامپوننت دارم که یه پروپرتی با نام 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)
    Private
    FPosition: Integer;
    Procedure SetPosition(P:Integer);
    .
    .
    Published
    Property Position:Integer read FPosition write SetPosition default 0;
    end;
    یه سوال کوچولوی دیگه: چرا مقدار Default بی اثره و مجبورم در Create پروپرتی رو مقداردهی کنم؟
    آخرین ویرایش به وسیله mbshareat : شنبه 06 خرداد 1391 در 19:49 عصر

  2. #2
    کاربر دائمی آواتار SAASTN
    تاریخ عضویت
    خرداد 1385
    محل زندگی
    تهران
    سن
    39
    پست
    730

    نقل قول: آیا لازمه که حتما برای تغییر پروپرتی در زمان اجرا یه پروسیجر برای Read تعریف کنم؟

    من امتحان کردم دیدم که اگه Read و Write هردو مستقیما با یک فیلد (متغیری با پیشوند F!) کار کنند در زمان طراحی با تغییر اون پروپرتی تغییری رخ نمی ده.
    آقا سلام،
    خوب همونطور که خودت گفتی اون تغییرات تو Paint اعمال میشه، پس تا وقتی که Paint یه بار اجرا نشه آخرین تغییرات دیده نمی شن. حالا اگه شما Read و Write پراپرتی رو به فیلد وصل کنی موقع ست کردنش هیچ متدی اجرا نمی شه. اما اگه فقط Write ش رو به متد ببندی و حتما تو اون متد کنترلت رو Repaint کنی، اون موقع به محض ست شدن پراپرتی تغییرات ظاهری تو کنترل دیده می شه. اما read در این زمینه نقشی نداره پس همون فیلد کفایت می کنه. اما اگه write رو به فیلد ببندی، چه زمان طراحی چه زمان اجرا، با ست کردن پراپرتی هیچ تغییر ظاهری دیده نمی شه و باید منتظر اولین ترسیم باشی.
    یه سوال کوچولوی دیگه: چرا مقدار Default بی اثره و مجبورم در Create پروپرتی رو مقداردهی کنم؟
    اون مقدار هیچ ارتباطی به مقدار اولیه دادن به پراپرتی نداره، تنها کارش اینه که در زمان طراحی و توی ObjectInspector اگه مقدار پراپرتی برابر Default باشه با قلم عادی ترسیم میشه و اگه مقدار برابر نباشه با قلم Bold ترسیم میشه!

  3. #3
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    963

    نقل قول: آیا لازمه که حتما برای تغییر پروپرتی در زمان اجرا یه پروسیجر برای Read تعریف کنم؟

    سلام
    یعنی من می تونم اصلا Read برای پروپرتی نذارم؟
    با قلم عادی ترسیم میشه و اگه مقدار برابر نباشه با قلم Bold ترسیم میشه!
    منظورتون مثال زدنه یا Defult فقط به درد فونت می خوره؟

  4. #4
    کاربر دائمی آواتار SAASTN
    تاریخ عضویت
    خرداد 1385
    محل زندگی
    تهران
    سن
    39
    پست
    730

    نقل قول: آیا لازمه که حتما برای تغییر پروپرتی در زمان اجرا یه پروسیجر برای Read تعریف کنم؟

    یعنی من می تونم اصلا Read برای پروپرتی نذارم؟
    نه، پراپرتی که بدون read نمیشه! ولی لازم نیست به متد ببندیش، فیلد کفایت می کنه.
    پراپرتی حتما باید read داشته باشه، ولی اگه write براش نذاری readonly میشه.
    منظورتون مثال زدنه یا Defult فقط به درد فونت می خوره؟
    نه منظورم مثال زدن نیست، اگه دقت کرده باشی توی ObjectInspector وقتی مقدار یه پراپرتی با پیشفرض کلاس یکی باشه، مقدار رو با فونت معمولی می نویسه، ولی وقتی مقدار رو تغییر بدی با فونت Bold شده می نویسه. این Default فقط برای تعیین مقدار پیشفرض پراپرتی هست نه مقداردهی اولیه اون.

تاپیک های مشابه

  1. سوال: چطور می تونم پنجره برنامه دیگه ای رو فعال کنم؟
    نوشته شده توسط mbshareat در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 0
    آخرین پست: جمعه 25 فروردین 1391, 21:16 عصر
  2. سوال: چطور می تونم content کنترل radEditor از کامپوننت های Telerik رو rtl کنم
    نوشته شده توسط dontspeak در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: دوشنبه 20 تیر 1390, 19:00 عصر
  3. سوال: چطور می تونم یه فایل robotd.txt استاندارد طراحی کنم؟
    نوشته شده توسط phpweb در بخش طراحی وب (Web Design)
    پاسخ: 3
    آخرین پست: چهارشنبه 17 فروردین 1390, 18:12 عصر
  4. پاسخ: 3
    آخرین پست: چهارشنبه 03 آذر 1389, 23:59 عصر
  5. چطور می تونم به اطلاعات یه Email دسترسی پیدا کنم؟
    نوشته شده توسط afsar در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: شنبه 03 اردیبهشت 1384, 17:23 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •