یک تابع مشترک برای رویدادها
می خوام برای رویدادهای چند کامپوننت مختلف یک تابع مشترک بنویسم تا از دوباره کاری جلوگیری بشه
مثلا: فرض کنید 3یا4 تا TextEdit داریم ،می خوایم وقتی وارد هر کدوم میشیم رنگ اون ادیت زرد و وقتی خارج می شیم سفید بشه.
نام کامپوننت ها : Edit1,Edit2,... غی هرچی دیگه میتونه باشه
فرض کنید تابه به این صورت باشه
void mEnter(نام کامپوننت)
وقتی وارد ادیت میشیم تابع رویدادش به این صورته
void __fastcall TForm1::Edit1Enter(TObject *Sender)
{
}
فکر کنم منظورم واضح گفته باشم
* جهت یادآوری::چشمک:
می دونم اگه تو این تابع از خصیصه color استفاده کنم مشکل حله!اما این جوری باید برای هر رویداد همون رو تکرار کنم با نام کامپوننت.می خوام نامش رو خودش تشخیص بده بعد تغییرات بده فکر می کنم با استفاده از اشاره گر Sender بشه 1کارایی کرد.اگه کسی این کارو انجام داده لطفا راهنمایی کنه. :لبخند:
ممنون
نقل قول: یک تابع مشترک برای رویدادها
void mEnter()
{
TEdit* C = (TEdit*)Form4->ActiveControl;
C->Color = clRed;
}
نقل قول: یک تابع مشترک برای رویدادها
سلام.
void __fastcall TForm1::Edit1Enter(TObject *Sender)
{
dynamic_cast< TEdit * >( Sender )->Color = 0x00FFFFFF;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
dynamic_cast< TEdit * >( Sender )->Color = 0x00808080;
}
نقل قول: یک تابع مشترک برای رویدادها
با تشکر از target# , ananas
هر دو پاسخ درسته اما به نظرم راه حل آناناس بهتره چون راه حل اول برای تابع exit باید اول رنگ کامپوننت رو تغییر داد بعد دستورات mEnter تایپ کرد و به 1 اشاره گر C هم نیازداریم در صورتی که در راه دوم این مسائل نیست.
اما واقعا از هردو ممنونم،مدتی بود بدجوری کلافم کرده بود.از اونجایی که 1مرجع درست و حسابی برای سی وجود نداره گیج شده بودم
نقل قول: یک تابع مشترک برای رویدادها
نقل قول:
نوشته شده توسط
Ananas
سلام.
void __fastcall TForm1::Edit1Enter(TObject *Sender)
{
dynamic_cast< TEdit * >( Sender )->Color = 0x00FFFFFF;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
dynamic_cast< TEdit * >( Sender )->Color = 0x00808080;
}
میشه در مورد dynamic_cast کمی توضیح بدی؟!!
نقل قول: یک تابع مشترک برای رویدادها