PDA

View Full Version : کامپوننتهايي از فرم که داراي خصوصيت خاصي هستند



SADAF
شنبه 23 آذر 1387, 13:28 عصر
با سلام به همه دوستان
روالي عمومي دارم که کارش بررسي تک تک کامپوننت هاي فرمهاست و سپس با توجه به اينکه آيا کامپوننت (کنترل) مورد نظر روي فرم داراي خصوصيت خاصي ( مثل BiDiMode) است يا خير آن خصيصه را تغيير مي دهد. در حال حاضر براي نتيجه سريع دادن برنامه، روي ClassName تک تک انواع کامپوننتهاي قابل استفاده شرط دارم. ولي فکر مي کنم بتوان به راحتي از کلاسي پرسيد آيا خصيصه اي با عنوان خاصي را داراست يا خير. آيا کسي چيزي مي دونه ؟؟؟

vcldeveloper
شنبه 23 آذر 1387, 17:02 عصر
ولي فکر مي کنم بتوان به راحتي از کلاسي پرسيد آيا خصيصه اي با عنوان خاصي را داراست يا خير.
نه همیشه. بستگی داره که آیا برای آن خصوصیت RTTI تولید شده یا نه. در دلفی RTTI فقط برای خصوصیاتی که در قسمت Published یک کلاس تعریف شده باشند، و کلاس شان هم از TPersistent مشتق شده باشه، RTTI تولید میشه.
اگر RTTI برای آن وجود داشت، آن وقت میشه از توابع RTTI برای بدست آوردن اطلاعات بیشتر درباره آن کلاس استفاده کرد. البته توابع کار با RTTI در دلفی Document شده نیستند، و خودتون باید با مطالعه مقالات و راهنماهایی که در زمینه کار با RTTI در اینترنت منتشر شدند، و بررسی یونیت هایی که توابع در آنها تعریف شدند، کار مربوطه را انجام بدید. یکی از مقالاتی که می تونید تحقیقتان را باهاش شروع کنید، مقاله Run-Time Type Information (RTTI) In Delphi - Can It Do Anything For You نوشته Brian Long هست که می تونید خیلی راحت در اینترنت پیداش کنید.

Mohammad_Mnt
شنبه 23 آذر 1387, 21:12 عصر
کتاب Delphi 6 Developers Guide (توسط انتشارات غزال هم (بد)ترجمه شده) هم می تونه کمک کنه. یک فصل کامل در این مورد توضیح داده