PDA

View Full Version : Action Manager و نادیده گردفتن رویدادهای دیگر



dkhatibi
یک شنبه 11 آذر 1386, 21:55 عصر
من از Action های استاندارد DataSet استفاده کردم و اونا را به چندتا Bitbtn نسبت دادم. درون هر دکمه کدهایی نوشته شده که اون اصلا عمل نمی کنن.
تا اونجا که یادمه قبلا این مشکل رو نداشتم.
ضمنا موقع زدن دکمه ی Insert باید این دکمه غیرفعال شه که نمی شه
؟

vcldeveloper
دوشنبه 12 آذر 1386, 02:08 صبح
درون هر دکمه کدهایی نوشته شده که اون اصلا عمل نمی کنن.
درون هر دکمه یعنی چی؟! منظورتون اینکه که برای OnClick دکمه ها کد نوشتید؟ اگر دکمه به یک Action متصل باشه، طبیعی هست که با کلیک بر روی آن کد مربوط به OnExecute آن Action اجرا شود.

dkhatibi
دوشنبه 12 آذر 1386, 06:21 صبح
پیشنهادتون چیه؟ من یک Action دارم و از اون در نمام برنامه استفاده می کنم. ضمنا فعال و غیرفعال کردن دکمه ها با کئنویسی کار مسخره ای به نظر می رسه!

Bahmany
دوشنبه 12 آذر 1386, 07:27 صبح
ضمنا موقع زدن دکمه ی Insert باید این دکمه غیرفعال شه که نمی شه
کدی برای این منظور وارد کرده اید در کدوم رویداد بوده ؟

vcldeveloper
سه شنبه 13 آذر 1386, 02:06 صبح
پیشنهادتون چیه؟ من یک Action دارم و از اون در نمام برنامه استفاده می کنم.
گفتم که، کد را باید در OnExecute آن Action بنویسید. البته Action های استاندارد دلفی احتیاج به کدنویسی ندارند، چون کدشان از قبل نوشته شده.


ضمنا فعال و غیرفعال کردن دکمه ها با کئنویسی کار مسخره ای به نظر می رسه!
رویداد OnUpdate را برای همین منظور طراحی کردند تا کد مربوط به Enable\Disable کردن Action را در آن بنویسید.

احساس می کنم هنوز خوب متوجه مفهوم Action ها و نحوه بکار گیری آنها نشدید.

dkhatibi
سه شنبه 13 آذر 1386, 06:13 صبح
[QUOTE]احساس می کنم هنوز خوب متوجه مفهوم Action ها و نحوه بکار گیری آنها نشدید.[/

QUOTE]
دقیقا!
اما علاوه بر اینکه Action استاندارد باید رخ دهد. در کنار اون باید چند کار دیگه هم اتفاق بیفته مثلا بعضی ار Dbedit ها ReadOnly بشن.
پس باید من برای هر فرم یک ActionManager بگذارم و اونو نسبت بدم . در حالی که الان فقط از یک Actionmanager استفاده کردم و در هر فرم فقط DataSource منتسب به اونو تغییر می دم.

vcldeveloper
چهارشنبه 14 آذر 1386, 03:41 صبح
دقیقا!
قبلا چند بار درباره Action ها در این سایت توضیح داده شد. در سایت CodeGear هم می تونید مقالات بسیار خوبی درباره Action ها و نحوه بکار گیری آنها پیدا کنید.


اما علاوه بر اینکه Action استاندارد باید رخ دهد. در کنار اون باید چند کار دیگه هم اتفاق بیفته مثلا بعضی ار Dbedit ها ReadOnly بشن.
در این صورت باید خودتون کد مربوطه را برای رویداد OnExecute آن Action بنویسید. دقت کنید که برای Action های استاندارد، اگر کدی برای OnExecute نوشته شود، عمل پیش فرض تعریف شده برای آن Action انجام نمیشه و شما باید آن را هم خودتان در OnExecute بنویسید. یک راه ساده برای پرهیز از نوشتن کد مربوط به Action های استاندارد آن است که در کد مربوط به رویداد OnExecute آن Action، متد ExecuteTarget را فراخوانی کنید. این فراخوانی باعث اجرای عمل پیش فرض آن Action استاندارد می شود. به عنوان پارامتر باید به متد ExecutrTarget نام DataSource ایی که به Action متصل است را پاس کنید.

Bahmany
دوشنبه 19 آذر 1386, 10:48 صبح
احساس می کنم هنوز خوب متوجه مفهوم Action ها و نحوه بکار گیری آنها نشدید.Action به نظر بنده رویدادهایی هستند برای موقعی است شما می خواهید آنها را بین چند event برای Object هاتون داشته باشید و آنها رو بصورت بهینه مدیریت کنید و از ازدیاد کد نیز جلوگیری کنید. و همینطور از خصوصیت Sender نیز می توانید به Object ی که Action مورد نظر را به آن نصب داده اید برسید و ...

vcldeveloper
سه شنبه 20 آذر 1386, 05:20 صبح
Action به نظر بنده رویدادهایی هستند برای موقعی است شما می خواهید آنها را بین چند event برای Object هاتون داشته باشید و آنها رو بصورت بهینه مدیریت کنید و از ازدیاد کد نیز جلوگیری کنید.
مطلبی که ازش نقل قول کردید خطاب به جناب dkhatibi (http://barnamenevis.org/forum/member.php?u=19109) بود.


همینطور از خصوصیت Sender نیز می توانید به Object ی که Action مورد نظر را به آن نصب داده اید برسید
خیر، Sender ایی که به OnExecute یک Action پاس داده میشه، خود شی Action هست، نه کنترل متصل به آن.