PDA

View Full Version : قرار دادن فرمهای برنامه در DLL



ابوذر محمودی
چهارشنبه 26 تیر 1387, 13:33 عصر
سلام . دوستان فرض بر اینه که من اصلا کلاس نویسی تو وی بی رو بلد نیستم . حالا با این فرض کسی می تونه کامل در این زمینه منو راهنمایی کنه . ببینید من می خوام فرم های برنامه ام رو به صورت DLL طراحی کنم (فرم در داخل فایل dll باشه). به عنوان مثال می خوایم فرم ثبت اطلاعات به صورت یه فایل dll مثلا به نام save.dll باشه ؛ حالا وقتی کاربر می خواد اطلاعاتی رو ثبت کنه این فایل فراخوانی بشه .

ابوذر محمودی
چهارشنبه 26 تیر 1387, 15:14 عصر
سلام .

آقای بیگلری عزیز (mbt)

فکر می کنم این باید تو حیطه کاری شما باشه . چون تنها کسی که تو بخش به اکتیوایکس نویسی کاملاً مسلطه باید شما باشید .

mpmsoft
چهارشنبه 26 تیر 1387, 18:38 عصر
اینم یک نمونه ساده

ابوذر محمودی
چهارشنبه 26 تیر 1387, 18:59 عصر
اینم یک نمونه ساده

سلام .

این برنامه ای که گذاشتین رو سیستم من خطا میده

پروژه رو به صورت DLL ذخیره کردم ولی بازم خطا می ده .

پیغام خطا اینه :

User-defined type not defined
مربوط به فرم لود پروژه اول هستش خط زیر.

Dim cls As New Project2.Class1



من منظورم این بود که ابتدا توی یک کلاس فرم رو طراحی کنم بعد به صورت یک فایل DLL ذخیره و ازش توی پروژه های مختلف استفاده کنم.

r0ot$harp
چهارشنبه 26 تیر 1387, 21:19 عصر
سلام .

این برنامه ای که گذاشتین رو سیستم من خطا میده

پروژه رو به صورت DLL ذخیره کردم ولی بازم خطا می ده .

پیغام خطا اینه :

User-defined type not definedمربوط به فرم لود پروژه اول هستش خط زیر.

Dim cls As New Project2.Class1

من منظورم این بود که ابتدا توی یک کلاس فرم رو طراحی کنم بعد به صورت یک فایل DLL ذخیره و ازش توی پروژه های مختلف استفاده کنم.

دوست عزیز شما بعد از اینکه فایل DLL رو کامپایل کردین به Project 1 برین و از references دوباره DLL رو به برنامه اضافه کنید . هیچ مشکلی ندارد من کار کردم تشکر می کنم از mpmsoft


باتشکر احسان

ابوذر محمودی
پنج شنبه 27 تیر 1387, 00:41 صبح
سلام .

دوستانی که تو مبحث آپدیت برنامه حضور داشتند ، کم کم دارند منظور من رو از این سوال و جوابها می فهمند .

کار جالبی انجام دادم مگه نه !!!

حالا یه سوال دیگه ؟

شما فایل رو از references وارد برنامه می کنید ، حالا اگه این برنامه رو تو یه سیستم دیگه بخواین اجرا کنید باید فایل DLL تو همون مسیری که فراخوانی شده ؛ قرار بگیره .

سوال اینجاست که چه طوری باید فایل dll رو فراخوانی کنیم که آدرس نسبی بخواد .

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

چون تمامی dll هایی که این قابلیت رو دارند می شه کنار فایل اصلی برنامه قرار داد و تو هر سیستمی که بخواین اجراش کنید. دقیقا مثل فایلهای OCX

r0ot$harp
پنج شنبه 27 تیر 1387, 01:06 صبح
سلام .

دوستانی که تو مبحث آپدیت برنامه حضور داشتند ، کم کم دارند منظور من رو از این سوال و جوابها می فهمند .

کار جالبی انجام دادم مگه نه !!!

حالا یه سوال دیگه ؟

شما فایل رو از references وارد برنامه می کنید ، حالا اگه این برنامه رو تو یه سیستم دیگه بخواین اجرا کنید باید فایل DLL تو همون مسیری که فراخوانی شده ؛ قرار بگیره .

سوال اینجاست که چه طوری باید فایل dll رو فراخوانی کنیم که آدرس نسبی بخواد .

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

چون تمامی dll هایی که این قابلیت رو دارند می شه کنار فایل اصلی برنامه قرار داد و تو هر سیستمی که بخواین اجراش کنید. دقیقا مثل فایلهای OCX

نه دوست عزیز احتیاج به قرار دادن مسیر ثابت نیست شما باید از برنامه های اینستالر استفاده کنی و DLL رو در System32 کپی کنی همین .


باتشکر احسان

ابوذر محمودی
پنج شنبه 27 تیر 1387, 01:58 صبح
نه دوست عزیز احتیاج به قرار دادن مسیر ثابت نیست شما باید از برنامه های اینستالر استفاده کنی و DLL رو در System32 کپی کنی همین .

[/color]
باتشکر احسان



ببینید دوست عزیز !
این که کامپوننت نیست که بخوایم تو سیستم 32 کپی کنیم .

این قسمتی از برنامه هستش که به صورت dll ذخیره شده و باید همراه برنامه باشه یعنی جایی که برنامه اصلی قرار داره . نه تو سیستم 32

در ضمن dll یه کم با ocx فرق می کنه .
شما اصلا به عرایض بنده توجه نکردید ، یه کمی تامل کنید می فهمید منظور من چیه !!!!

شما فایل رو از references وارد برنامه می کنید ، حالا اگه این برنامه رو تو یه سیستم دیگه بخواین اجرا کنید باید فایل DLL تو همون مسیری که فراخوانی شده ، قرار بگیره .

سوال اینجاست که چه طوری باید فایل dll رو فراخوانی کنیم که آدرس نسبی بخواد .

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

چون تمامی dll هایی که این قابلیت رو دارند می شه کنار فایل اصلی برنامه قرار داد و تو هر سیستمی که بخواین اجراش کنید. دقیقا مثل فایلهای OCX

r0ot$harp
پنج شنبه 27 تیر 1387, 02:08 صبح
ببینید دوست عزیز !
این که کامپوننت نیست که بخوایم تو سیستم 32 کپی کنیم .

این قسمتی از برنامه هستش که به صورت dll ذخیره شده و باید همراه برنامه باشه یعنی جایی که برنامه اصلی قرار داره . نه تو سیستم 32

در ضمن dll یه کم با ocx فرق می کنه .
شما اصلا به عرایض بنده توجه نکردید ، یه کمی تامل کنید می فهمید منظور من چیه !!!!

اهان فهمیدم منظورتون چیه !!! :قهقهه::متعجب:

واقعا معذرت می خوای من هواسم برفت به اینکه این DLL‌ حاوی توابع هست و احتیاجی نیست کناره برنامه باشه .


باتشکر احسان

koruir
پنج شنبه 27 تیر 1387, 02:18 صبح
سلام. البته من از اکتیوایکس نویسی چيزي نميدونم.
اما چرا بجاي DLL از OCX استفاده نميکني؟ که مسيرش هم زياد مهم نباشه؟
اگه قصد شما همون قابل Update بودن برنامه باشه که OCX هم جواب ميده. درسته؟

ابوذر محمودی
پنج شنبه 27 تیر 1387, 02:52 صبح
سلام .


سلام. البته من از اکتیوایکس نویسی چيزي نميدونم.
اما چرا بجاي DLL از OCX استفاده نميکني؟ که مسيرش هم زياد مهم نباشه؟
اگه قصد شما همون قابل Update بودن برنامه باشه که OCX هم جواب ميده. درسته؟

آره دوست عزیز
Ocx هم جواب می ده ولی یه مشکلی داره ، اونم اینه که هر فردی می تونه از اون OCX استفاده کنه و یه جورایی تابلو می شه که برنامه بر مبنای چی هستش !!
ولی استفاده از یک فایل dll به مراتب نسبت به ocx مشکل تره .
واسه همین من DLL رو پیشنهاد میکنم . فقط مشکل تو مسیر دهی فایلهای dll هستش .

البته اینو بگم که این امکان داره که مثل فایلهای ocx مسیردهی بشن .
من چند تا dll دارم که با کشیدن و انداختن توی برنامه ازشون استفاده می کنم ، نکته اینجاست که فقط dll هایی که اینطوری وارد برنامه می شه ، می تونه مثل ocx رفتار کنه
* دیگه نمیدونم چه جوریه ؟؟ اینو باید اهل فن شرح بدن

koruir
پنج شنبه 27 تیر 1387, 03:06 صبح
يه OCX داشتم به اسم AnyGif.ocx که وقتي ميخواستي ازش تو برنامه استفاده کني Error ميداد و اين Errorها ادامه داشت تا زماني که برنامه رو بخري و رجيستر کني.
دوست عزيز فکر کنم بتوني تو کنترلي که مينويسي براي درست کار کردنش يه سري شرط بذاري. مثلا Form Caption رو چک کني اگه Caption با برنامه شما يکي بود کار کنه و ...
با کمي خلاقيت ميشه شرط هاي جالبي براش گذاشت که به فکر هرکسي نرسه و برنامه براتون Safe بشه/

mpmsoft
پنج شنبه 27 تیر 1387, 09:44 صبح
دوست عزیز فرقی نمی کنه Dll رو کجا کپی می کنی

مهم اینه که تو چه مسیری اونو Register می کنی

یعنی چه Dll کنار فایل اجرایت باشه و چه در جای دیگه زمانی که اون رو رجیستر می کنی سیستم عامل اون رو می شناسه و دیگه نیازی نیست مسیر فایل Dll رو جایی معرفی کنی

ابوذر محمودی
پنج شنبه 27 تیر 1387, 10:39 صبح
دوست عزیز فرقی نمی کنه Dll رو کجا کپی می کنی

مهم اینه که تو چه مسیری اونو Register می کنی

یعنی چه Dll کنار فایل اجرایت باشه و چه در جای دیگه زمانی که اون رو رجیستر می کنی سیستم عامل اون رو می شناسه و دیگه نیازی نیست مسیر فایل Dll رو جایی معرفی کنی

سلام . دوست عزیزم خیلی ممنون . اصلاً حواسم به این موضوع نبود . فکر می کنم دیگه بچه ها خودشون راحت بتونند کاری رو که تو تاپیک آپدیت برنامه بود رو به راحتی انجام بدن .

ابوذر محمودی
پنج شنبه 27 تیر 1387, 11:04 صبح
يه OCX داشتم به اسم AnyGif.ocx که وقتي ميخواستي ازش تو برنامه استفاده کني Error ميداد و اين Errorها ادامه داشت تا زماني که برنامه رو بخري و رجيستر کني.
دوست عزيز فکر کنم بتوني تو کنترلي که مينويسي براي درست کار کردنش يه سري شرط بذاري. مثلا Form Caption رو چک کني اگه Caption با برنامه شما يکي بود کار کنه و ...
با کمي خلاقيت ميشه شرط هاي جالبي براش گذاشت که به فکر هرکسي نرسه و برنامه براتون Safe بشه/

سلام .

نکته جالبی رو اشاره کردید ولی با رجیستر کردن برنامه مشکل کار با فایل DLL نیز برطرف شد .

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

هر وقت نتونستیم با dll کاری رو که میخواهیم انجام بدیم ، می ریم سر وقت ocx .

آفرین به همه بچه ها:تشویق:

r0ot$harp
یک شنبه 30 تیر 1387, 12:44 عصر
دو سوال برای من پیش اومده ؟

1) آیا نمی شه فرمهای داخل فایل DLL رو استخراج کرد ؟

2) من داخل پروژه اصلی 5 Module دارم . حالا چی کار کنم که وقتی من فورمی رو در داخل فایل DLL گذاشتم بتونه از توابع داخل Module ها استفاده کنه در صورتی که فورم ها در یه فایل DLL جدا هستند و فایل های Module در یک پروژه ی دیگر .


باتشکر احسان

mpmsoft
یک شنبه 30 تیر 1387, 14:19 عصر
شما بصورت مستقیم فکر نمی کنم بتونید به Module های ریفرنس های دیگه دسترسی پیدا کنید

ماژولها زیر مجموعه کلاسها هستند