PDA

View Full Version : سوال: فراخوانی یک پروسیجر توسط چندین شئ



hector2000
جمعه 27 اردیبهشت 1392, 22:13 عصر
سلام
من در فرمم ده عدد لیبل دارم و می خواهم که وقتی ماوس بر روی هر کدام از انها رفت رنگ متن و پس زمینه ان تغییر کند و همچنین وقتی هر کدام کلیک شدن کار مخصوص به خودشان انجام شود.(شبیه toolbar)
مشکل من اینست که نتوانستم متدی را در دلفی پیدا کنم که از نوشتن رویداد برای هر کدام لیبل ها جلوگیری کند و با نوشتن یک پروسیجر کار تمام انها را انجام دهد.
من الان مجبورم برای هر کدام از لیبلها رویداد onmouseover و onmousedown و همچنین onclick را جداگانه بنویسم که حجم کد خیلی زیاد میشود.ایا راهی هست ان را خلاصه کنم؟
نتیجه رویدادیهای onmoseover و on mousedown تنها اینست که رنگ پس زمینه و فونت تغییر می کند و همگی شکل یکسانی دارند.ولی وقتی کلیک می شوند هر کدام یک کار مجزا انجام می دهند
لطفا راهنمایی کنید

یوسف زالی
جمعه 27 اردیبهشت 1392, 22:24 عصر
سلام.
1- می تونید از هک کامپوننت استفاده کنید و در کلاسی تمام لیبل ها رو هک کنید.
2- می تونید براش یک کامپوننت ارث بری شده از لیبل بسازید و اون رو نصب کنید و ازش استفاده کنید.
3- می تونید تمام لیبل ها رو انتخاب کنید و در رویداد OnMouseOver دو بار کلیک کنید و کدتون رو با استفاده ار Sender بنویسید.
4- می تونید با یک حلقه این کار رو کنید.

من روش 3 رو به شما پیشنهاد می دم.
نمونه کد روش 3 :


if Sender is TLabel then
TLabel(Sender).Color := clRed

Mahmood_M
شنبه 28 اردیبهشت 1392, 11:20 صبح
لطفا قبل از ارسال تاپیک جستجو کنید ...

http://barnamenevis.org/showthread.php?183714-%D9%88%D8%B1%D9%88%D8%AF-%D8%A8%D9%87-Edit-%D9%88-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%B1%D9%86%DA%AF

http://barnamenevis.org/showthread.php?218999-onclick-Event

http://barnamenevis.org/showthread.php?206751-Assign-%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF-%D8%A8%D9%87-%D9%87%D9%85%D9%87-%D8%A2%D8%A8%D8%AC%DA%A9%D8%AA-%D9%87%D8%A7