PDA

View Full Version : اضافه کردن دکمه به MsgBox



ehsan-ets
جمعه 17 مرداد 1382, 23:30 عصر
با سلام خدمت تمامی استادان
من می خواستم برنامه ای بنوسم که یک پیغام به کاربر بده(در قبال انجام کاری که می کنه) می خواستم بدونم که چی جوری می شه دکمه هایی رو برای این پیغام بزارم(می خواستم بدونم چه دکمه هایی هست و آیا می شه دکمه های جدید هم ساخت؟)
همچنین چی جوری می شه که شکل عنوان(سمت چپ عنوان) رو انتخاب کرد(دلخواه به نظر برنامه نویس)

ehsan-ets
جمعه 17 مرداد 1382, 23:35 عصر
در ضمن یادم رفت بگم
چی جوری می شه که به رویدادهای مربوط به کلیک روی هر کدوم از کلید ها پاسخ داد؟
مثلا:
یک پیغام داریم که از کاربر می پرسه که می خوای ادامه بدی یا نه؟
اگر بگه بله به مرحله بعد بره(یا یک پیغام جدید بدیم) و اگر بگه نه به مرحله قبل برگرده
حالا چی جوری می شه این رویداد رو تنظیم کرد؟

Ali_Mor
شنبه 18 مرداد 1382, 03:00 صبح
با سلام
دومین آرگومان تابعMsgBox تعداد و نوع دکمه های فرم را مشخص می کند
در هنگام نوشتن این آرگومان(هنگامی که بعد از آرگومان اول " , " را تایپ میکنید ) لیستی از انواع دکمه هائی که امکان دارد در روی فرم قرار دهید ظاهر میشود که می توانید یکی از آنها را انتخاب نمائید. اگر بعد از این انتخاب "+" را تایپ کنید لیستی از آیکونهائی را که میتوانید در کنار دکمه قرار دهید ظاهر می گردد که می توانید یکی از آنها را انتخاب نمائید.
مثلا اگر چنین بنویسد
<span dir=ltr>i = MsgBox("test...", vbAbortRetryIgnore + vbQuestion)</span>
یک جعبه پیام با سه دکمه Abortو IgnoreوRetry به همراه یک آیکون علامت سوال دیده میشود.
این تابع مقادیری از نوعVbMsgBoxResultرا بر می گرداند که مثلا در مثال فوق می توانید i را چنین تعریف کنید
<span dir=ltr>dim i as VbMsgBoxResult </span>
در این صورت اگر کاربر مثلا دکمه Ignoreرا کلیک کندنام ثابتvbIgnore (با مقدار 5) در i قرار میگیرد ,که با بررسی i میتوانید دکمه فشرده شده را یافته و برای آن رویدادی بنویسید.
توصیه میکنم از Object Browserبرای آشنائی با توابع , متدها و ... درVB استفاده نمائید.
</span>

ehsan-ets
شنبه 18 مرداد 1382, 13:20 عصر
شما دستور رو به این شکل نوشتید
= MsgBox("test...", vbAbortRetryIgnore + vbQuestion)
ولی مگه
= MsgBox("test...", vbAbortRetryIgnore , vbQuestion)
درست نیست
همچنین من کاری که گفتید کردم ولی لیستی ظاهر نشد :( :oops: :wink:

بمب منطقی
شنبه 18 مرداد 1382, 17:39 عصر
سلام:
تمام چیزی که Ali_Mor گفتن درسته جز یک چیز , باید متغیر( i) رو از نوع integer بگیری وبه صورت زیر کد دستور رو بنویسی:
dim i as integer
i=msgbox("this is sample",vbyesno+vbQuestion)' this is body masage
کد کلید yes برابر با 6 و کد کلید No برابر با 7 می باشد. پس در ادامه می نویسیم:
...if (i=6) then
...if (i=7) then
شما بجای سه نقطه هر دستوری رو می تونید قرار بدید مثلا " text1.text="salam

با تشکر.

ehsan-ets
شنبه 18 مرداد 1382, 19:00 عصر
من به جای اینکه رویداد مربوط به کلیک رو به این صورت(if (i=6) then..( بنویسم یک راست نوشتم 6=...... که البته کار هم کرد :D
حالا برای بعدها آیا دچار مشکل می شه یا نه؟ :roll:

Ali_Mor
شنبه 18 مرداد 1382, 19:09 عصر
با سلام خدمت بمب منطقی عزیز
جسارتا عرض میکنم:
اگر دقت نمائید تعریف تابع در Object Browserچنین است, که نتیجه ان از نوع VbMsgBoxResultمیباشد.
<span dir=ltr>Function MsgBox(Prompt, [Buttons As VbMsgBoxStyle = vbOKOnly], [Title], [HelpFile], [Context]) As VbMsgBoxResult</span>
البته من هم میدانم که ابن نوع در حقیقت مجموعه ای از ثوابتی با مقادبر عددی(integer )می باشد, ولی استفاده از نوع VbMsgBoxResultنه تنها خوانائی برنامه زیاد میکند بلکه برای چک کردن مقدار آن نبز میتوانیم از نام ثوابت (مانندvbCancel ) استفاده کنیم و دیگر نیازی به حفظ کردن مقادیر عددی آنها نیست.
<span dir=ltr>if i=vbOK then ...</span>

اما در مورد سوال اخیر اقا احسان فکر نمیکنم مشکلی به وجود آید.

ehsan-ets
شنبه 18 مرداد 1382, 19:27 عصر
یه نفر دیده و گفته که مثل اینکه یک مشکل تو کل برنامه هست
اما نگفت کجا :cry: موندم که آیا اینه یا نه :?:

بمب منطقی
یک شنبه 19 مرداد 1382, 09:33 صبح
با سلام:
آقا علی واقعا ممنونم که این مورد رو به من متذکر شدی. هر وقت کسی , چیزی به من یاد بده من مخلصش می شم (طبق فرموده حضرت علی (ع) , البته به صورت عامیانه :P ).بعد از این سعی می کنم تو برنامه هام از این روش استفاده کنم.

بازم ممنونم. :oops: :oops:

jannati
یک شنبه 19 مرداد 1382, 15:34 عصر
با اجازه اساتید
دوست عزیز اگه دوست داشته باشی میتونی به msgboxهات آیکون هم اضافه کنی .اول در formloadکد زیر رو وارد کن:


Private Sub Form_Load&#40;&#41;
mbuttontype = vbYesNo
mbuttonicon = 16
mmodal = vbApplicationModal
end sub

شماره 16 شکل آیکون را تعیین میکند که میتونه 8 یا 32 یا 64 باشه.
بعد msgboxرا اینطوری صدا بزن:


r = MsgBox&#40;"تمام‌اسامی زیرگروه پاک میشود.آیامطمئن هستید؟", mbuttontype + mbuttonicon + mmodal, "هشدار"&#41;

امیدوارم برنامه‌ات قشنگ بشه

Ali_Mor
یک شنبه 19 مرداد 1382, 18:13 عصر
سلام
بمب منطقی جان
شما لطف دارید . از اینکه در این سایت با شما دوستان آشنا شدم و از رهنمودها و کمکهای شما بهره بردم بسیار خوشحال هستم وخداوند را شاکرم.
:D :) :lol: :lol:

بمب منطقی
یک شنبه 19 مرداد 1382, 18:45 عصر
سلام:
اول از جنتی تشکر می کنم که این موضوع رو گفتن چون این یکی از مشکلات من بود.
دوم: خدمت علی آقا , که امیدوارم در مراحل بعدی تحصیل علم مشکلات همدیگه رو حل کنیم و پشتیبان هم باشیم. :P

با تشکر.