PDA

View Full Version : مبتدی: یه مشکل کوچولو با IF



adib202
شنبه 02 آبان 1388, 20:00 عصر
با سلام
می خواستم ببینم چطور میشه واسه رویداد کلیک یه شرط بنویسیم.مثلا فرض کنید میخواهیم بگیم اگه command1 کلیک شد سپس command2.enable=true
توجه کنید command1 خودش یک رویداد نیست.

powerboy2988
شنبه 02 آبان 1388, 20:14 عصر
يك راحش اينه كه يك متغير public از نوع boolean تعريف كني كه هر وقت command رو كليك كردي true شه و تو دستور if ازش استفاده كني...
اگر اين راه حل مشكلتو حل نكرد ... مشكلتو دقيق تر بگو .. تا ببينم كه راه حل بهتري به ذهنم مي خوره يا نه ..

Dr.Bronx
شنبه 02 آبان 1388, 20:19 عصر
به نظرم این راه خوب باشه . حالا شاید روشهای دیگه ای هم باشه

توی رویداد Command1 بنویسید

me.tag = 1

بعد بگین
if me.tag = 1 then command2.enable=true

بازم اگر درست متوجه نشدم بیشتر توضیح بدین
موفق باشید

powerboy2988
شنبه 02 آبان 1388, 20:26 عصر
به نظرم این راه خوب باشه . حالا شاید روشهای دیگه ای هم باشه

توی رویداد Command1 بنویسید

me.tag = 1

بعد بگین
if me.tag = 1 then command2.enable=true

بازم اگر درست متوجه نشدم بیشتر توضیح بدین
موفق باشید


ببين روش شما 100% كار مي كنه... اما يك پيشنهادي كه دارم اينه كه سعي كنيم از اين مدل برنامه نويسي ها پرهيز كنيم .. چون تو زمان trace برنامه ممكنه به مشكل بر بخوري ...
اين راه شما شبيه اسپاگتي نوشتن كدهاست.... اين اصلا توصيه نمي شه...

بحث اين نيست كه بگم من خيلي بهتر مي گم... منم همه اين تجربه ها رو از بقيه كسب كردم... و اين يك پيشنهاد كاملا دوستانه و محترمانه بود.

موفق باشي :چشمک:

adib202
شنبه 02 آبان 1388, 20:39 عصر
ممنون از راهنمایی هاتون . ولی شاید من منظورم رو درست نرسوندم.اون چیزی که می خوام شبیه اینه:



Private Sub command1_Click()
form1.show
If form1.command2 (clicked) Then
command3.enable=false
end if
End Sub

powerboy2988
شنبه 02 آبان 1388, 20:45 عصر
ببين منظورتون اينه.....

vbhamed
شنبه 02 آبان 1388, 23:47 عصر
سلام

خب چرا كدتون رو داخل command1_click مربوط به form1 نمي نويسيد ؟

xxxxx_xxxxx
یک شنبه 03 آبان 1388, 00:55 صبح
ببين روش شما 100% كار مي كنه... اما يك پيشنهادي كه دارم اينه كه سعي كنيم از اين مدل برنامه نويسي ها پرهيز كنيم .. چون تو زمان trace برنامه ممكنه به مشكل بر بخوري ...
اين راه شما شبيه اسپاگتي نوشتن كدهاست.... اين اصلا توصيه نمي شه..
سلام،
میشه بیشتر توضیح بدید؟!:متفکر: trace برنامه؟ چرا؟

powerboy2988
یک شنبه 03 آبان 1388, 08:56 صبح
سلام،
میشه بیشتر توضیح بدید؟!:متفکر: trace برنامه؟ چرا؟

معمولا ممكنه شما به تو برنامتون به logical error بر بخوريد كه بعضي وقت ها ممكنه مجبور شيد خودتون برنامه رو خط به خط اجرا كنيد(همون trace :لبخند:) و اگر در اين حالت شما اسپاگتي برنامه نويس نكرده باشي خيلي راحت و سريع مي توني اين كار رو انجام بدي اما اگر اسپاگتي برنامه نويسي كني بعضي وقت ها از راحت منحرف ميشي و نمي دوني بر فرض مثال فلان متغير رو واسه چي تعريف كردم و سطح دسترسيش چطوريه و ....

شايد گفته شه كه با comment مشكل حل شه.... اما چرا بايد اضافه كاري كرد؟؟

نظر من اينه... اگر اشتباه هستش خوشحال ميشم كه كمك كني تا درستشو ياد بگيرم :چشمک:

xxxxx_xxxxx
یک شنبه 03 آبان 1388, 10:48 صبح
گاهی وقتها نیاز هست تا ارتباطی بین فرمهای برنامه وجود داشته باشه. این ارتباط میتونه از طریق متغیر Public باشه و هم میتونه از طریق یکی از خصوصیتهای یکی از آبجکت ها و یا خود فرم باشه. ما اینجا میتونیم بجای تعریف متغیر اضافی از Tag شی ها استفاده کنیم. tag یک متغیر رایگان است که چه استفاده بشه و چه نشه حافظه را اشغال کرده. پس از لحاظ هزینه، استفاده از tag میتونه به صرفه باشه. کمااینکه اگر فرمی که tag آن را مقداردهی کرده ایم Unload شود کل فضای اشغال شده در حافظه آزاد شده و عمر متغیرکمکی ما (tag) پایان می پذیرد در حالی که زمان پایان عمر یک متغیر Public برابر با زمان پایان برنامه است.

در مورد اجرای خط به خط برنامه؛ اگر در Option نمایش Tooltip ها فعال باشد.(که به طور پیشفرض هست) می توانیم به سادگی از مقدار فعلی tag همانند سایر متغیرها مطلع بشیم. اینکه readability برنامه کاهش پیدا میکنه با استفاده از متغیر هم میتونه این اتفاق بیافته. مسئول خطاهای منطقی برنامه خود برنامه نویس هست، چه از tag استفاده کنه یا متغیر.

پس تنها مزیتی که متغیر نسبت به Tag دارد این هست که متغیر می تواند هرنامی داشته باشد ولی Tag همیشه Tag خواهد ماند.