PDA

View Full Version : سوال: فرم ساز برای برنامه تحت ویندوز



علیرضا حسن زاده
شنبه 25 اردیبهشت 1389, 18:43 عصر
سلام
دوستان چه روش یا روش هایی رو برای فرم سازی توسط کاربر در برنامه های ویندوزی پیشنهاد می کنن منظورم اینه که کاربر بتونه به اختیار خودش یسری فیلدها رو انتخاب کنه و با اونها یه فرم سفارشی برای خودش درست کنه روش کار هم پویا باشه من برای این کار از DataGrid استفاده می کنم ولی یه جورایی به نظرم ظاهرش خوب نیست به نظر شما راه بهتر چیه
فیلدها میتونه Textbox، Checkbox و... و انواع دیگه کنترل های دات نت که تو یه فرم می تونه قرار داشته باشه هستن البته تو روشی که من با DataGrid استفاده می کنم یه محدودیت وجود داره اونم اینه که کلا از دو ستون استفاده می کنم یکی برای متن که نمایشگر عنوان فیلد باشه مشابه همون Label توفرم های معمولی و از ستون دیگه برای دریافت مقدار فیلد ولی نوع فیلد دوم رو نمیشه تغییر داد یعنی همه Columnهای یک ستون باید از یک نوع باشن (البته من اینجوری میدونم شاید اینطوری نباشه).
حالا در صورت امکان شما هم ایده های خودتون رو بگین؟:متفکر:

cardano7
یک شنبه 26 اردیبهشت 1389, 23:16 عصر
سلام
منظور شما یک چیزی شبیه Designer خود #C هست؟

علیرضا حسن زاده
دوشنبه 27 اردیبهشت 1389, 03:13 صبح
بله چیزی شبیه به اون ولی با امکاناتی که کاربر غیر برنامه نویس هم بتونه واسه خودش یه فرم سفارشی برای داده هایی که می خواد دریافت بشه ایجاد کنه. مثلا کاربر بتونه فرمی برای فاکتورهای خاص طراحی کنه در اون فیلدهای خاصی که می خواد دریافت کنه رو ایجاد کنه کلا طراحی فرم به صورت کاملا سفارشی توسط کاربر انجام بشه
یا کاربرد دیگه: مثلا کاربر یه منشی تو شرکت هست که یه متن رو به عنوان الگو وارد سیستم میکنه بعد یه سری فیلدها که مخصوص همون نامه هست رو مثلا عنوان نامه و یه سری مشخصات دیگه که باید توسط کاربر وارد بشه رو تو متن مشخص میکنه حالا باید بتونه یه فرم ورود اطلاعات برای اون متن ایجاد کنه که هر بار با انتخاب اون متن از طریق فرم ایحاد شده مقادیر فیلدها رو وارد کنه و نامه رو ذخیره یا چاپ ... کنه.(این روش تقریبا همون Marge Mail برنامه ورد هست ولی خوب اکثر کاربرا کار با اون رو بلد نیستن (یا اصلا اسمشو نشنیدن) و دنبال یه راه راحت تر می گردن)

من برای این روش تو پایگاه داده یه جدول برای تعریف انواع فیلدها ایجاد کردم (کد،نام) و یه جدول دیگه برای نگه داری مقادیر فیلدها (کدفرم، کد فیلد، مقدار فیلد) و جدول فیلدهای فرم(کد فرم، کدفیلد).کاربر میتونه تعدادی فیلد ایجاد کنه و بعد از انتخاب فیلدها برای یه متن یا فاکتور مشخص امکان ایجاد، حذف، و ویرایش اطلاعات رو داره. مشکل اینه که من برای طراحی فرم سفارشی ورود اطلاعات از دیتاگرید استفاده می کنم و کاربر میتونه به هر تعداد و هرنامی که می خواد فیلد برای فرم ایجاد کنه ولی این روش انعطاف پذیری لازم رو نداره مثلا نمیشه راحت مشخص کرد که نوع فیلد عددی هست یا تاریخ یا هر چیزی که کاربر میتونه ایجاد کنه البته روی یه قسمت فرمول ساز هم کار می کنم که کاربر بتونه فرمول های خاص رو ایجاد کنه و بعضی از فیلدها با توجه به مقادیر دیگر فیلدهای فرم مقدار دهی بشن
اگه بتونم این روش رو با انعطاف پذیری خوب طراحی کنم امکان طراحی یه موتور گزارش ساز سفارشی هم وجود خواهد داشت البته شرکت های مثل همکاران سیستم با استفاده از موتور Crystal همچین کاری میکنن ولی نمیدونم چه جوری؟
اگه ممکنه نظرات و پیشنهاد هاتون رو بگین تا بتونم بهتر عمل کنم

taghvajou
دوشنبه 27 اردیبهشت 1389, 04:00 صبح
سلام به همه
یه سوال: میخوای یه نرم افزار فرم ساز درست کنی یا میخوای تو یکی از برنامه هات امکان سفارش سازی فرم بدی؟

cardano7
دوشنبه 27 اردیبهشت 1389, 11:29 صبح
سلام به همه
یه سوال: میخوای یه نرم افزار فرم ساز درست کنی یا میخوای تو یکی از برنامه هات امکان سفارش سازی فرم بدی؟

به نظر من بهتره که از reflector ها استفاده کنی. تا نیازی نداشته باشی که برای هر خاصیت از کلاس مجبور بشی یک دستور بنویسی. با یک حلقه ی for به همه ی اونا دسترسی پیدا می کنی.
در جواب این سوای که پرسیدم:
http://www.codeproject.com/Questions/61715/How-to-extract-all-members-of-a-class.aspx
این جواب را گرفتم:
http://msdn.microsoft.com/en-us/library/system.reflection.fieldinfo(VS.80).aspx

حالا نیاز داری که یک فرم داشته باشی که در اون property ها لیست شده و کاربر می تونه مقادیر اونا رو تغییر بده.
reflector ها قابیت تشخیص نوع اعضا(متد، property و فیلد) را دارند.
همچنین می تونند مقادیر اونا را تغییر بدند.

Qermezkon
دوشنبه 27 اردیبهشت 1389, 11:34 صبح
كتاب Pro Dynamic .NET 4.0 Applications - Data-Driven Programming for the .NET Framework رو بخون يك فصلش در همين رابطه س ، جز به جز نوشته با #C

taghvajou
دوشنبه 27 اردیبهشت 1389, 12:18 عصر
میشه لینک دانلود کتاب رو هم لطف کنین. چند موردی هم که بعد از جستجو پیدا کردم، فیلتر بودند؟؟؟؟:گیج:

علیرضا حسن زاده
دوشنبه 27 اردیبهشت 1389, 14:36 عصر
سلام به همه
یه سوال: میخوای یه نرم افزار فرم ساز درست کنی یا میخوای تو یکی از برنامه هات امکان سفارش سازی فرم بدی؟
الان یه پروژه دارم که می خوام تو اون ازش استفاده کنم (البته با روشی که تو پستهای قبلی توضیح دادم استفاده می کنم) اگر هم روش خوبی شد تو نرم افزار های دیگه هم استفاده کنم و در صورت امکان هم تو سایت قرار بدم
اگه ایده ای به ذهنتون میرسه بفرمایید؟:متفکر:

علیرضا حسن زاده
دوشنبه 27 اردیبهشت 1389, 14:40 عصر
به نظر من بهتره که از reflector ها استفاده کنی. تا نیازی نداشته باشی که برای هر خاصیت از کلاس مجبور بشی یک دستور بنویسی. با یک حلقه ی for به همه ی اونا دسترسی پیدا می کنی.
در جواب این سوای که پرسیدم:
http://www.codeproject.com/Questions/61715/How-to-extract-all-members-of-a-class.aspx
این جواب را گرفتم:
http://msdn.microsoft.com/en-us/library/system.reflection.fieldinfo(VS.80).aspx (http://msdn.microsoft.com/en-us/library/system.reflection.fieldinfo%28VS.80%29.aspx)

حالا نیاز داری که یک فرم داشته باشی که در اون property ها لیست شده و کاربر می تونه مقادیر اونا رو تغییر بده.
reflector ها قابیت تشخیص نوع اعضا(متد، property و فیلد) را دارند.
همچنین می تونند مقادیر اونا را تغییر بدند.

فکر کنم شما متوجه موضوع نشدید. من نمی خوام Property ها رو تغییر بدم می خوام کاربر بتونه خودش رو فرم کنترل های مختلف ایجاد کنه:متفکر:؟

علیرضا حسن زاده
دوشنبه 27 اردیبهشت 1389, 14:49 عصر
كتاب Pro Dynamic .NET 4.0 Applications - Data-Driven Programming for the .NET Framework رو بخون يك فصلش در همين رابطه س ، جز به جز نوشته با C#‎‎
لینک کتابی که معرفی شده:
http://rapidshare.com/files/337278119/BR-1661-PDN4A.rar

سایتی که لینک رو قرار داده:
http://www.freshwap.net/ebooks

cardano7
دوشنبه 27 اردیبهشت 1389, 15:29 عصر
فکر کنم شما متوجه موضوع نشدید. من نمی خوام Property ها رو تغییر بدم می خوام کاربر بتونه خودش رو فرم کنترل های مختلف ایجاد کنه:متفکر:؟

خوب بعد اینکه یک کنترل به یک فرم اضافه شد نباید مکان و ابعاد و دیگر خصوصیاتش هم تعیین بشند؟

taghvajou
دوشنبه 27 اردیبهشت 1389, 15:48 عصر
خوب در مورد نیاز اولتون روش رو خدمتتون عرض کنم.
تو رویداد فرم لود برنامه تون، یه تابع بره کنترلهای اضافی (و به قول علیرضا1363 با تمام ویژگیهاشون) که برای این فرم در نظر گرفته شده رو از پایگاه داده واکشی کنه، بعد بعد از متد اینیشیالایز از اون کنترلها و با ویژگیهای داده شده، بساز.

قدم بعدی تکلیف تغییر در تابع ذخیره ای که زیر دکمه اوکی فرم قرار گرفته! باید دستور اس کیو ال این تابع هم به استناد این کنترل جنتریت (Generate) بشه!

بهترین کار اینه که با حوصله اول قسمت دوم کار رو تمرین کنی بعد بری سراغ بخش اول

لذا اول یه کلاس درست کن مثلا اسمشو بذار دامپ کنترلز، بعد برای سه چهار تا ویژگی اصلی تعریف کن مثل نوع، نام و پوزیشن.
حالا تو صفحه ای که میخوای مثلا کنترلهای از قبل طراحی شدتون، نمایان بشه، یه نمونه از کلاس بالایی درست کن و مقدار ویژگیهاشم بده! حالا کنترل مورد نظر رو داری.
تو رویداد لود فرم، کنترل مورد نظرت رو نیو کن.

تا اینجا کنترل رو ساختیم و نمایش دادیم.

حالا باید یه تابع بنویسی که مشخصات کنترل رو بگیره و بهت یه کوئری مثلا اضافه کردن برگردونه!
بعدش یه تابع بنویس که کوئری بگیره و اجراش کنه!
این تابع رو تو رویداد کلیک دکمه اوکی فرمت اجرا کن

بعد از انجام این تمرین، دیگه یواش یواش گسترش بده!

hamid_rezaei
دوشنبه 15 اسفند 1390, 21:21 عصر
سلام دوست محقق عزیز
با استفاده از نرم افزار تولید شده در داخل با نام فرا این امکان فراهم شده که بتونید فرم دلخواه خودتون را با انواع کنترل ها (Text Box,Combo,List,Date,Check Box,DataGrid و ...) طراحی کنید و برای فرمتون پرینت قدرتمند طراحی کنید(مثلاً پرینت فاکتور). در ضمن در این نرم افزار امکان فرمول نویسی در حد وسیعی برای نیازهای مختلف تعبیه شده.
در صورت تمایل برای دریافت نرم افزار با شماره 09178186530 تماس بگیرید براتون ایمیل کنم.