PDA

View Full Version : گفتگو: بهترين راه حل چيست؟



xminxmin
جمعه 12 شهریور 1389, 15:03 عصر
يه برنامه داريم كه منوهاش (يا دكمه هاش يا ...) پويا هستند. به اين معني كه ميره مثلا يه آدرس ويژه رو چك ميكنه و به ازاي هر فايل EXE يك منو ميزاره تا بشه از توي برنامه اجراش كرد.

حالا نظر شما چيه؟
چطور اين برنامه رو مي نويسين؟ شايد يك مشتري بسته به قيمت يكي از امكانات (exeها) رو نخواد. كه در اينصورت كافيه اون امكان در مسير ويژه قرار داده نشه
و يا شايد بعد از مدتي امكانات اضافي بخواد بخره! كه بديهيه كه با كپي كردن فابل اون امكان در مسير ويژه حل ميشه
بهترين راه حل چيه؟
اصلا اينكه ما امكانات رو بصورت EXE در دسترس قرار بديم درسته؟ (مثل برنامه NU يا Norton Utility)
در اينصورت چطور ميشه از خروجي يك امكان، در برنامه اصلي استفاده كرد؟
يا بهتره هر امكاني روو يك DLL كنيم كه در دسترس نباشه؟
يا ...؟
خلاصه اگر شما بوديد چكار مي كرديد؟

sari-1369
جمعه 12 شهریور 1389, 15:55 عصر
Dll و Exe فرقی ندارن . شما اگر نوع پروژتون رو به ClassLibrary تغییر بدین خروجی اون پروزه میشه یک فایل Dll.

به نظر من اگر شما میخوای با دادن و ندادن یک سری فایل کاربرت رو توی داشتن یک سری از قسمت های برنامه محدود کنی . اول همه منو هاتون رو بسازین . توی فرم لود فرم اصلیتون با این دستور چک کنید :

If System.IO.File.Exists(My.Application.Info.Director yPath & "\Gozaresh.Dll") Then
menu_gozaresh.Visible = True
End If

xminxmin
جمعه 12 شهریور 1389, 16:26 عصر
اول همه منو هاتون رو بسازین

ممنون اين راه خوبيه ولي يه سوال! اينطوري بايد كل برنامه ايجاد بشه و فقط نمايش داده نشه.
حالا اگر بخوايم كه اصلا هر DLL وقتي ايجاد بشه كه فايلش باشه چي؟
اينطوري حجم برنامه به اندازه اي هست كه بايد براي دسترسي باشه

شايد خيلي سوالم مبتديانه باشه :خجالت:و لي خب من اولين باره مي خوام پروژه ام رو ماژولار كنم.:لبخند:
يه توضيح هم مي دين كه فايل هاي DLL رو چطور اجرا مي كنن؟
در مورد EXE ها كه مثلا با دستور SHELL ميشه اجراشون كرد. DLL چي؟

sari-1369
جمعه 12 شهریور 1389, 17:11 عصر
ممنون اين راه خوبيه ولي يه سوال! اينطوري بايد كل برنامه ايجاد بشه و فقط نمايش داده نشه.


نه ، چرا کل برنامه ؟ فقط منو های دسترسی به کل برنامه ایجاد میشه . هر قسمت از برنامه شما توی یکی از فایل های Dll برنامتون هستش .



حالا اگر بخوايم كه اصلا هر DLL وقتي ايجاد بشه كه فايلش باشه چي؟



متوجه نشدم :متفکر:



يه توضيح هم مي دين كه فايل هاي DLL رو چطور اجرا مي كنن؟
در مورد EXE ها كه مثلا با دستور SHELL ميشه اجراشون كرد. DLL چي؟

شما اول از همه میای یه سلوشن برای پروژه کلیتون میسازی . بعد از اون یک پروژه که فایل نهایی اون exe هستش ایجاد مکنی . توی این پروژه اولین فرمی که با اجرای نرم افزار میاد رو قرار میدی. کلا این فایل اجرا کننده برنامه شماست .
قسمت بعدی میشه ساخت dll ها . حالا با هر تقسیم بندی که انجام دادی به ازای هر قسمت از برنامت یک پروژه از نوع ClassLibrary میسازی ، توی اون هم فرمهات رو قرار میدی .
دقت کن که شاید برخی از رفرنس هایی که توی برنامه های ویندوزی استفاده میکنی توی ClassLibraryنباشه که باید روی پروژت راست کلیک ، addrefrence و اون رفرنس مورد نظرتو اضافه کنی.

حالا نحوه دسترسی به یک dll از توی فرم اصلی یا از یک dll به dll دیگه .

شما باید هر کدوم از پروژه هایی که میخوای از توی یک پروژه دیگت صدا زده بشه رو توی پروزه اولی به عنوان رفرنس اضافه کنی .
که : روی پروژت راست کلیک ، addrefrence و تب project واز اونجا پروزه مورد نظرت رو صدا میزنی .

فرض کن پروژه ما 2 تا فایل Dll و یک فایل اصلی برنامه Exe داره .

نام فایل های dll : Dll_Part1 و Dll_part2

حالا ما توی فرم اصلیمون نیاز داریم که هردوتا فایل رو صدا بزنیم و یکی از فرمهاشو اجرا کنیم .

پس هردوی این فایل های dll رو به پروزه اصلی به عنوان رفرنس اضافه میکنیم . و اینطوری یکی از فرمهارو اجرا میکنیم .

Dim Frm as new Dll_Part1.Frm_sabt
Frm.show()

و یا

Dim Frm as new Dll_part2.Frm_Namayesh
frm.show

اگر از دورن فایل dll_part1 هم بخوایم dll دومی رو صدا بزنیم به همین صورت عمل میکنیم .

ابتا dll_part2 رو به عنوان رفرنس اضافه میکنیم و مانند مثال بالا اجرا میکنیم .


Dim Frm as new Dll_part2.Frm_Namayesh
frm.show


معذرت میخوام که خوب نتونستم توضیح بدم ، امیدوارم تونسته باشم منظورمو برسونم .

xminxmin
جمعه 12 شهریور 1389, 17:29 عصر
يك دنيا ممنون:تشویق:
نقل قول هاي من ايراد منظقي داشت. بعد از خوندن توضيحاتتون متوجه اون شدم!
خيلي هم خوب توضيح داديد.
شروع مي كنم به اميد خدا و اگر مشكلي پيش اومد از دوستان خوبي مثل شما كمك مي گيرم:لبخندساده:

ricky22
جمعه 12 شهریور 1389, 23:20 عصر
http://discuss.joelonsoftware.com/default.asp?design.4.288745.5