PDA

View Full Version : سوال: استفاده از گروه در پروژه



RezaS_1354
سه شنبه 30 تیر 1394, 22:17 عصر
با سلام خدمت دوستان
من یک پروژه دارم که شامل دو فاز میشه که هر فازش شامل فرمهای زیادی هست حالا فاز اول تموم شده و میخام فاز دوم رو شروع کنم ولی ازونجایی که فرمهای فاز دوم به فرمهای فاز یک مرتبطه نمیتونم پروژه دوم را در یک محیط جدید دیگه شروع کنم از طرفی هم تعداد فرمها فاز یک همینطور زیاد هستن که باعث سردرگمی میشن چه برسه دیگه فرمهای فاز دوم هم بهشون اضافه بشن
بهرحال تو محیط فاز اول یک پروژه دیگه باز کردم که یک فایل Group خودش اتومات اضافه کرد که حالا مشکلی اینجاس که نمیدونم چطور میتونم بین این دو پروژه ارتباط برقرار کنم ؟
آیا اصلا اینکار قابل انجام هست یا نه یا اگر هست به چه صورت و اگر نیست دوستان راه دیگه ای به ذهنشون میرسه ؟؟؟ یا نهایتا اسم فرمها رو باید یه جور نامگذاری کنم که به ترتیب نشون بده
مثالا پروژه اول یک فرم داره بنام Form1 که میخام از توی اون یکی از فرمهای پروژه 2 رو صدا کنم ؟ ناگفته نماند mdiform هم درون پروژه یک میباشد یعنی دیگه پروژه دومی MdiForm نداره همه فرمهای پروژه دوم از همون منوهای MdiForm پروژه اول فراخوانی میشن
با تشکر

RezaS_1354
پنج شنبه 01 مرداد 1394, 12:28 عصر
سلام
دوستان واقعا سوالم سخته یا هیچ راهی و جوابی نداره که بی پاسخ مونده ممنون میشم بنده رو از شک و شبهه با جواباتون نجات بدید
با تشکر

vbhamed
پنج شنبه 01 مرداد 1394, 20:55 عصر
سلام

Group کردن پروژه ها بیشتر به خاطر راحتی مدیریت پروژه های به هم مرتبط استفاده میشه، پروژه های درون یک گروه کاملا از هم مستقل هستند و هیچ ارتباطی با هم ندارند پس نمی‌تونید از درون یک پروژه فرم پروژه دیگه رو فراخوانی کنید

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

راهی که شما دارید اینه که یکی یا چند تا از پروژه ها به صورت اکتیوایکس یا Dll باشن و رفرنس اونها در پروژه های دیگه استفاده شده باشه، این کار مثل اینه که یک پروژه ocx درست کردین و فایل ocx اون رو هم ساختید و در پروژه دوم از این ocx استفاده کردین، فقط خوبیش اینه که هر دو تای این پروژه ها همزمان و یکجا در محیط وی بی باز هستن و قابل ویرایش و دائم نیاز نیست بین دو تا ویژوال بیسیک سوئیچ کنید ولی همونطور که گفتم این پروژه ها هیچگونه ارتباطی به همدیگه ندارن

چیزی که شما انتظار دارین مثل اینه که دو تا ماشین رو با زنجیر به هم وصل کنیم و انتظار داشته باشیم ماشین اولی بتونه از بنزین ماشین دومی استفاده کنه و این کار تا زمانی که یک راه ارتباطی براش ایجاد نکنیم غیر ممکنه (راه ارتباطی مثلا شیلنگی که به باک ماشین دوم وصل باشه)

و این راه ارتباطی برای پروژه های ویژوال بیسیک چند روش است

1 - یکی از پروژه ها از نوع DLL, OCX باشه و به صورت کتابخانه در پروژه دیگه استفاده بشه (بهترین راه)

2 - دو تا پروژه از نوع Standard EXE باشن و با استفاده از Winsock و پورتها با هم ارتباط داشته باشن

3 - Dynamic Data Exchange یا DDE که دیگه یک روش منسوخ شده حساب میشه و شاید تو ویندوزهای جدید قابل استفاده نباشه

4 - فراخوانی پروژه دوم با دستور Shell از توی پروژه اول و پاس دادن متغیرها به صورت پارامتر به اون که برای این مورد خاص اصلا توصیه نمیشه

RezaS_1354
پنج شنبه 01 مرداد 1394, 21:11 عصر
سلام خدمت استاد گرامی
حامد جان تمام فرمایشات شما صحیح فقط یه سئوال اگه نخوام هیچ ارتباطی برقرار کنم فقط از منو های فرم MdiForm پروژه اول فرمهای پروژه دوم را باز کنم ایا اینکار امکان دارد یا نه فقط همین ناگفته نماند یه بار دیگه بگم یه پروژه دارم که مثلا 30تا فرم داره میخام درون همون پروژه یه پروژه Standard EXE دیگه که 30 تا دیگه فرم داره باز کنم که دیگه فرم مادر MdiForm نداره همه فرمها پروژه اول و دوم از همون منو های فرم MdiForm پروژه اول باز شه یعنی ارتباط داخلی همین حالا اینکار امکان داره یا ؟؟؟ نه با تشکر

vbhamed
جمعه 02 مرداد 1394, 03:49 صبح
سلام
ظاهرا شما هنوز ارتباطی بین دو پروژه مختلف می‌بینید
این کارها فقط به طریقی که گفته شد قابل پیاده سازی است، شما اصلا تصور کنید Project Group وجود نداره و با دو پروژه کاملا مستقل که در دو محیط ویژوال بیسیک که همزمان باز هستند طرف هستید و با این دید برنامتون رو بنویسید

البته میشه فرم یک برنامه رو آورد تو یک برنامه دیگه اونم با تابع SetParent به شرط اینکه هندل اون فرم رو داشته باشید، اینطوری حتی می‌تونید مثلا پنجره اصلی Microsoft Word رو توی دل فرم خودتون نشون بدین