واضح آرشیو وب فارسی:سایت ریسک: ارسال دستور از mbd به master sibil 29 مهر 1386, 05:21سلام به تمام بروبچه های مجید آنلاین . یه سوال حیاتی داشتم که اگر کارمو راه بندازین ، کلی دعاتون می کنم . میخواستم ببینم چجوری میشه از یه فایل mbd به برنامه اصلی دستور داد . یعنی مثلا من در mbdدستور next page رو دادم ، ولی می خواهم اون دستور به پنجره اصلی داده بشه . لطفا کمک کنید . [SaMaN] 29 مهر 1386, 09:43سلام میشه دقیقا توضیح بدی چی می خوای ؟؟؟ فکر می کنم یکم گنگه... تا بعد...! silvercover 29 مهر 1386, 10:15منظورتون این هست که میخاین از فایلی که توسط دستور RunMBD اجرا شده یه دستور به برنامه اصلی ارسال کنید؟ gholonbeh 29 مهر 1386, 12:24منظورتون این هست که میخاین از فایلی که توسط دستور RunMBD اجرا شده یه دستور به برنامه اصلی ارسال کنید؟ منم فك مي كنم منظور اين دوستمون همين باشه حامد [SaMaN] 30 مهر 1386, 11:43سلام اگه سوال این باشه خیلی جالبه !! آخه من تاحالا واسم پیش نیومده !! تا بعد...! silvercover 30 مهر 1386, 14:10من یه نمونه برای این کار ساختم. در نمونه از دو روش برای برقراری ارتباط استفاده کردم. یکی از روش Command Line هست که اگر توی راهنمای بیلدر دنبالش بگردین دربارش مطلب پیدا می کنین و دیگری با استفاده از clipboard سیستم. در حالت اول برنامه باید با گزینه Allow only one instance کامپایل شده باشه. چونکه در روش Command Line ما از فرمان Run استفاده می کنیم و اگر اون گزینه موقع کامپایل انتخاب نشده باشه با هر بار کلیک روی دکمه ارسال فرمان یک نسخه دیگه از برنامه نمایان و اجرا میشه. برای تست این مثال هم حتما باید اون (فایل Media 2.mbd) رو کامپایل کنید. فایل Media 1.mbd همون فایلی هست که قرار با دستور RunMBD اجرا بشه. کلا از این تکنیک ها می تونین توی برنامه هاتون برای ایجاد ارتباط بین پنجره ها و برنامه استفاده کنید. البته برنامه هایی که با بیلدر ساخته شدن. sibil 30 مهر 1386, 17:52دوستان دقیقا منظورم همین بود . از جناب silvercoverهم به خاطر پیوستشون بسیار ممنونم . اما 2 مورد هست که باید ذکر کن مثال کلیپ بورد کمتر کارآمد است . - مثال دوم که فکر می کنم خیلی بهتر باشه . پیغام زیر رو میده . چرا ؟ silvercover 30 مهر 1386, 17:57جناب sibil شما به گفته های من توجه نکردین. من گفتم که برای تست نمونه باید کامپایل بشن ( تبدیل به فایل EXE) . این پیامی که شما باهاش مواجه شدی درش گفته شده که در زمان اجرا ( اجرا در حالتی که برنامه کامپایل شده باشه) فایل در پنجره ای دیگر نمایش داده خواهد شد و نهایتا اینکه درست کار خواهد کرد. ضمنا هر دوی این فایل ها مکمل هم هستن و مثال جداگانه نیستن. sibil 30 مهر 1386, 18:05واقعا ممنونم . همون طوری بود که شما گفتین . به نظر شما میشه اون رو تو ابعاد بزرگتر هم استفاده کرد . مثلا در یک mbd صد و چند دکمه باشد و هر کئوم دستور خاصی را به main ارسال کنند . . . ؟ silvercover 30 مهر 1386, 18:15بله امکانش هست. sibil 30 مهر 1386, 18:24ممنون........................................ .................................................. .............................................. sibil 03 آبان 1386, 00:49با عرض معذرت از جناب silvercover : میشه یه آموزش کلی در مورد این کار و نحوه ی عملکردش بدید . خیلی ممنون میشم . silvercover 03 آبان 1386, 23:06 خب مختصر و مفيد خدمتتون توضيح ميدم. همون طور که گفتم من در اين نمونه از دو مدل Command Line و Clipboard استفاده کردم. اول Clipboard رو توضيح ميدم. در اين مدل همانند حالتي که شما توسط دستور کپي يک متن يا عکس را به حافظه منتقل مي کنيد و در جايي که مد نظرتون هست اون رو Paste ميکنين، عمل شده. يعني از ساير برنامه هايي که قرار هست با برنامه اصلي ارتباط داشته باشن مقاديري در clipboard ريخته ميشه و از اونجايي که همه به کليپ برد دسترسي دارن ميشه مکانيزمي ( حلقه) رو تدارک ديد تا مدام اين کليپ برد رو پايش ( Scan) کنه تا به محض ورود مقداري جديد وارد عمل بشه. البته اين مدل روش ساده ترين مدل برقراري ارتباط بين موجوديت هاست. هنگامي که تعداد موجوديت ها زياد بشه و قرار باشه از اين مدل استفاده بشه تداخل به وجود مياد و بايد راهي انديشيده بشه تا هر موردي که مياد و ميره شناسه اي منحصر به فرد داشته باشه تا بشه مبداش رو تشخيص داد. خب ما به همون مدل سادش بسنده کرديم. البته بايد هوشمندي به خرج بديم و به هنگامي که از مقادير ارسالي استفاده شد Clipboard رو با فرستادن يک مقدار تهي خالي کنيم. همانند آن چيزي که در نمونه مي بينيد. در متد دوم که موسوم به Command Line هست از يک آرايه سراسري ( قابل دسترس در همه جا) به نام [CmdLineParam$[n استفاده ميشه. به اين ترتيب که برنامه مقصد به همراه پارامترهاي لازم همانند مثال فراخواني ميشه و در برنامه مقصد توسط همين آرايه سراسري [CmdLineParam$[n دريافت ميشه. برای نمونه کد زیر دو پارامتر رو که توسط Space از هم جدا شدن رو به برنامه MyApp.exe ارسال میکنه : MyApp.exe param1 param2 خب حالا برای اینکه برنامه MyApp بتونیه این مقادیر رو دریافت کنه یک شی اسکریپت به نام CBK_CMDLINE در Master Top Layer قرار میدیم و کدهای پردازشی لازم رو درش قرار میدیم. مثل زیر: n=VAL(CmdLineParam$[0]) ** if number of parameters is > 0 then... If (n>0) Then ** This loop simply enumerate the passed parameters For i=1 To n ** ..and show the obtained parameters in message box (or do anything you want) Message("Command line parameter:","CmdLineParam$[i]") Next i End اندیس صفر آرایه رشته ای [CmdLineParam$[0 همیشه تعداد پارامترهای ارسال شده رو نگه میداره که در اینجا میشه 2 تا. به همین ترتیب و توسط حلقه ای که می بینین میشه در آرایه پیمایش کرد و مقادیر رو دریافت کرد. به این نکته توجه کنید که وقتی میخای به برنامه ای مقادیری رو به این ترتیب ارسال کنید و نیاز دارید که تنها یک نسخه از برنامه در آن واحد در حالت اجرا باشه باید موقع کامپایل گزینه Allow only one instance رو انتخاب کنید. بنده در استفاده از تکنیک Command Line از ثابت CBK_CMDLINE استفاده نکردم. دلیل خاصی نداشته. اما شما میتونین بر اساس چیزی که گفتم ازش استفاده کنید. sibil 14 آبان 1386, 01:08از توضیحاتتون واقعا ممنونم . اگر چه کمی در اعلام کرم .آخه چند روزی بود که سفر بودم .
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 426]