PDA

View Full Version : تبدیل مشخصات یک Object به Object دیگر



سیروس مقصودی
یک شنبه 21 آذر 1389, 12:30 عصر
با سلام

آیا در دلفی امکانی وجود دارد که مشخصات یک object را به object ديگر تبدیل کرد بطور مثال من در برنامه هایی که نوشته ام از Panel خود دلفی استفاده نموده ام و روی Panel مورد نظر dbgrid و edit های زیادی گذاشته ام و روی آنها کدهای زیادی نوشته ام من میخواهم Panel مورد نظر را به Spanel (که از Objectهاي كامپوننت AlphaControls میباشد) تبدیل نمایم و دیگر نمیخواهم کدهایی را که نوشته ام باز نویسی کنم . آیا این امکان تبدیل وجود دارد ؟ اگر وجود دارد چگونه ؟

با تشکر فراوان ...

hossein_h62
یک شنبه 21 آذر 1389, 15:40 عصر
شما spanel رو جایگزین panel قبلی کنید بعدش هم توی یونیت مورد نظر نام کامپوننت جدید رو Replace کنید. Ctrl+R
63488

vcldeveloper
دوشنبه 22 آذر 1389, 02:49 صبح
شما spanel رو جایگزین panel قبلی کنید بعدش هم توی یونیت مورد نظر نام کامپوننت جدید رو Replace کنید. Ctrl+R
همچین کاری فقط به درد سورس کدهای ساده میخوره. راه اصولی اش این هست که بعد از جایگزین کردن Panel با Spanel در داخل Form Designer؛ در داخل سورس کد، با استفاده از ابزار Refactoring نام شی مربوطه را تغییر بدید.

فرق Refactor کردن با یک Replace ساده در این هست که Refactor عملیات مربوطه را در محدوده ایی که براش در نظر گرفتید، با توجه به ساختار کد انجام میده، در حالی که برای Replace معمولی، فرقی نمیکنه عبارت Panel در کجای کد نوشته شده باشه، چه اسم شی باشه، چه اسم یک متغیر محلی در داخل یک تابع، یا یک کلمه در داخل توضیحات کد، و غیره؛ همه را به یک چشم میبینه.

سیروس مقصودی
دوشنبه 22 آذر 1389, 09:47 صبح
عذر میخواهم من متوجه نشدم منظور شما از جایگزین کردن این است که در سورس برنامه و در قسمت Type عنوان Panel را به spanel تغيير بدهم و اگر این نیست چگونه بایستی عملیات جایگزینی را انجام بدهم و منظور شما از Refactor چیست و در کجا میتوان این عمل را انجام داد

باتشکر ...

vcldeveloper
دوشنبه 22 آذر 1389, 17:56 عصر
عذر میخواهم من متوجه نشدم منظور شما از جایگزین کردن این است که در سورس برنامه و در قسمت Type عنوان Panel را به spanel تغيير بدهم و اگر این نیست چگونه بایستی عملیات جایگزینی را انجام بدهم
من با AlphaControls کار نمی کنم که ببینم Panel اش چقدر با TPanel دلفی سازگاری داره. با فرض اینکه بین این دو سازگاری وجود داره، و Panel مربوط به AlphaControls یکسری امکانات اضافه داره؛ می تونید کامپوننت مربوطه را روی فرم تان بیاندازید، اندازه اش را به اندازه پنل قبلی تعیین کنید، کل کنترل های موجود در پنل قبلی را Copy\Paste کنید روی پنل جدید، پنل قبلی را حذف کنید. پنل جدید را در محل پنل قدیمی قرار بدید.

یک راه دیگه اش دستکاری فایل DFM فرم هست، که با توجه به اینکه من با AlphaControls آشنایی ندارم، و نمیدونم اون پنل چه خصوصیاتی را به چه شکلی تعریف کرده، اون رو توصیه نمی کنم، ولی اگر خواستید، می تونید امتحانش کنید: فایل DFM فرم مربوطه را به صورت Text باز کنید، محل تعریف پنل مربوطه را در فایل پیدا کنید، و نام و نوع پنل را در فایل تغییر بدید، و فایل را ذخیره کنید. فرم را مجددا در دلفی باز کنید. اگر فایل بدون خطا در دلفی باز شد، خیلی عالی؛ اگر در هنگام باز کردن فایل دلفی خطا داد، همون راه اول را برید.


منظور شما از Refactor چیست
http://en.wikipedia.org/wiki/Code_refactoring


در کجا میتوان این عمل را انجام داد
در همون IDE دلفی.