ورود

View Full Version : اضافه کردن شی به msgbox



alizanganeh
شنبه 23 دی 1391, 00:53 صبح
سلام

میخواستم بدونم آیا به هر روشی که میشه ، امکانش هست که مثلا یک checkbox به msgbox خاصی اضافه کنیم؟

ممنون

حمید محمودی
شنبه 23 دی 1391, 01:27 صبح
بله؛ این امکان وجود داره...

Private Declare Function SHMessageBoxCheck Lib "shlwapi" Alias "#185" (ByVal hWnd As Long, ByVal lpszText As String, ByVal lpszTitle As String, ByVal dwType As VbMsgBoxStyle, ByVal iDefault As Long, ByVal lpszId As String) As Long
Private Sub Form_Load()

SHMessageBoxCheck Me.hWnd, "text", "title", vbOKOnly, 1, ""

End Sub

البته خودتون هم میتونید، بصورت دستی این کارو انجام بدید؛ مثلا این پروژه (http://www.vbforums.com/attachment.php?attachmentid=68007&d=1229621095) رو نگاه کنید؛روش کار ساده و مشخصه.

alizanganeh
شنبه 23 دی 1391, 09:33 صبح
توی فایلی که دادید میاد بجای msgbox فرم طراحی شده رو نشون میده؟

alizanganeh
شنبه 23 دی 1391, 09:44 صبح
و این کدی که دادید فکر میکنم با فعال کردن checkbox مقداری داخل ریجستری مبنی بر عدم نمایش دوباره ی این پیام میریزه
درسته؟

و اگر اینطور هست یا نه ، در هر صورت چطور میتونم کاری کنم که این پیام دوباره بیاد ؟

ممنون

حمید محمودی
شنبه 23 دی 1391, 12:53 عصر
توی فایلی که دادید میاد بجای msgbox فرم طراحی شده رو نشون میده؟ بله، منتها الان نگاه کردم اون checkbox رو جایی ذخیره نکرده مقدارش رو که نمایش بده/نده دفعه بعد. برای همین شما میتونید یک کد بهش اضافه کنید برای ذخیره اون مقدار.
برای نمایشش کافیه که مقداری که توی ریجستری/فایل یا هرجای دیگه ذخیره کردید که نمایش پیدا نکنه رو، توی تنظیمات برنامه تون یه checkbox بذارید بشه اون مقدار رو دستکاری کرد و اگر کاربر خواست نمایش بده/نده...


و این کدی که دادید فکر میکنم با فعال کردن checkbox مقداری داخل ریجستری مبنی بر عدم نمایش دوباره ی این پیام میریزه
درسته؟بله؛ در مسیر زیر ذخیره میشه....


HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer
LowRegistry
DontShowMeThisDialogAgain




در هر صورت چطور میتونم کاری کنم که این پیام دوباره بیاد
همون کاری که تازه عرض کردم؛ یک چک باکس بذارید در تنظیمات برنامه و اون مقدار رو بخونید از ریجستری و تا کنترل رو به دست کاربر بسپارید....

mehran901
شنبه 23 دی 1391, 13:29 عصر
دوستان میدونم که میدونید سایت های مختلفی برای ارائه سورس ویبی موجوده ولیکن سایت زیر از بهترین هاشه ... کامپوننت یوزرکنترل هرنوع سورسی بهزبان های مختلف رو رایگان ارائه می کنه....!
گفتم شاید بتونید با سرچ کردن نمونه خوبی پیدا کنید
http://www.planetsourcecode.com/

شخصا سورس هایی که تو سایت های فارسی نمی تونم درموردشون اطلاعاتی پیدا کنم رو اینجا پیدا میکنم ....

alizanganeh
شنبه 23 دی 1391, 13:45 عصر
بله؛ در مسیر زیر ذخیره میشه....


HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer
LowRegistry
DontShowMeThisDialogAgain





خیلی ممنون
ولی این مسیر رو چک کردن هیچ چیزی جز همون default نبود
ولی وقتی برنامه ای که دادی رو باز میکنم اون پیغام نمایش داده نمیشه !!!

و میشه یک کدی بدید که بتونم مقدارشو طوری تغییر بدم که با وضعیت checkbox نمایش داده بشه یا نشه
ممنون

حمید محمودی
شنبه 23 دی 1391, 14:03 عصر
ولی وقتی برنامه ای که دادی رو باز میکنم اون پیغام نمایش داده نمیشه !!!جالبه! توی مستندات MSDN به اون مسیر اشاره شده بود. ولی الان چک کردم دیدم در مسیر زیر کلید هاشو میسازه و با مقادیر YES/NO مقداردهی میکنه. پس، برید به مسیر زیر:



HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\DontShowMeThisDialogAgain


و دقت داشته باشید که متنی که به جای MyText در کد زیر میدید، به جای کلید هست که اگر YES باشه اون پیغام نمایش پیدا میکنه، اگر NO باشه نمایش پیدا نمیکنه.


SHMessageBoxCheck Me.hWnd, "text", "title", vbOKOnly, 1, "MyText"



میشه یک کدی بدید که بتونم مقدارشو طوری تغییر بدم که با وضعیت checkbox نمایش داده بشه یا نشه
با توضیحات بالا این سوال شما هم پاسخ داده شده. ونیازی به کار دیگه ای نیست. ولی اگر میخواید اون مثالی که با فرم در پست 1 به شما دادم رو کاری کنید که مقدار چک باکس، در جایی ذخیره بشه، توی همین فروم یا توی گوگل بگردید، چطوری میشه مقدار ریجستری رو خوند و/یا ویرایش کرد.
موفق باشید.

alizanganeh
یک شنبه 24 دی 1391, 08:28 صبح
ممنون حمید جان
فقط یک مشکل

وقتی میرم توی این مسیر میبینم یک مقدار مثلا با نام My Text ایجاد شده که وقتی مقدارش NO باشه نمایش داده نمیشه و وقتی YES باشه نمایش داده میشه

ولی فقط وقتی عملیه که برم بصورت دستی داخل مقادیر YES یا NO رئ بنویسم
خودش تغییری نمیده
ینی با فعال کردن checkbox باز هم پیام نمایش داده میشه و مقدار به NO تغییر داده نمیشه

بعدش من میخوام یک checkbox خارج از این پیام بذارم که با فعال بودنش این پیام نمایش داده بشه
ولی اگر این کد رو روی اون checkbox هم بذارم ، هربار که روش کلیک کنیم اون پیام نمایش داده میشه

چه کنم داداش؟
کدی نداری بدون پیام تغییرات ایجاد کنه؟
ممنون

حمید محمودی
یک شنبه 24 دی 1391, 12:31 عصر
ولی فقط وقتی عملیه که برم بصورت دستی داخل مقادیر YES یا NO رئ بنویسم
خودش تغییری نمیده
ینی با فعال کردن checkbox باز هم پیام نمایش داده میشه و مقدار به NO تغییر داده نمیشه
بعدش من میخوام یک checkbox خارج از این پیام بذارم که با فعال بودنش این پیام نمایش داده بشه
ولی اگر این کد رو روی اون checkbox هم بذارم ، هربار که روش کلیک کنیم اون پیام نمایش داده میشهبه حرفهایی که در پست قبلی گفته شد توجه کردید؟ در پست قبلی بیان نشد که بیاییداون کد رو در یک چک باکس قرار بدید تا کاربر روش کلید بکنه!
شما باید یک چکباکس بزارید روی فرم و با استفاده از توابع کار با ریجستری، بیاید به کلیدی که بجای MyText گذاشتید و مقداری که توش هست رو دستکاری بکنید. این یعنی چی؟ یعنی کنترل دست خودتون هست، و لازم نیست که هر دفعه برید توی ریجستری و مقادیر رو بصورت دستی تغییر بدید.


با توضیحات بالا این سوال شما هم پاسخ داده شده. ونیازی به کار دیگه ای نیست. ولی اگر میخواید اون مثالی که با فرم در پست 1 به شما دادم رو کاری کنید که مقدار چک باکس، در جایی ذخیره بشه، توی همین فروم یا توی گوگل بگردید، چطوری میشه مقدار ریجستری رو خوند و/یا ویرایش کرد.
با توجه به توضیحاتی که قبلا ارائه شد، تنها کاری که باید بکنید اینه که، بگردید دنبال این که چطوری مقداری رو از ریجستری بخونید و ذخیره کنید. توی همین فروم و یا در گوگل بگردید مثال های زیادی هست....

alizanganeh
یک شنبه 24 دی 1391, 14:44 عصر
حمید جان خیلی عصبی هستیااااا !!!

ولی جدا از این مسائل با کدی که شما دادید مگه نباید با فعال کردن اون چک باکس ، دیگه پیام نشو داده نشه؟
پس چرا هنوزم نشون میده؟

حمید محمودی
یک شنبه 24 دی 1391, 15:29 عصر
نه شما پست ها رو با ملاطفت بخون سو تفاهم برطرف میشه؛ :لبخند: نه شما کاری کردی که دلیل برعصبانیت باشه، نه حسش هست که ادم اینترنتی هم بخواد عصبانی بشه :چشمک:
منتها چیزی که هست اینه که، نمیدونم چرا خیلی ها یاد گرفتند که فقط کد رو بهشون بدیم و اونها، طی یک فرایند بسیار پیچیده و دشوار( کپی و Paste کردن!)، اون کد ها رو بدون کوچکترین تغییر به برنامه شون انتقال بدند و جواب بگیرند، و ماجرا به خوبی و خوشی به پایان برسه :لبخند:


با کدی که شما دادید مگه نباید با فعال کردن اون چک باکس ، دیگه پیام نشو داده نشه؟پس چرا هنوزم نشون میده؟
عجیبه! من کد رو تست کردم و بعد از کلیک روی اون چکباکس نمایش نمیده. فرم زیر رو تست کنید؛ نتیجه رو بگید.

alizanganeh
یک شنبه 24 دی 1391, 18:34 عصر
نه هدفم کپی کردن نیست
من همیشه کدهایی که میگیرم رو میخونم تا متوجه بشم
ولی وقتی هیچ آشناییتی با تغییرات ریجستری ندارم ، خوب یک کد اولیه نیازه دیگه

چشم چک میکنم
ممنون

alizanganeh
یک شنبه 24 دی 1391, 18:38 عصر
خب یک سوال:
مقدار مثلا MyVB رو توی ریجستری باید به چه مقداری تغییر داد که پیام نمایش داده بشه؟
ممنون

حمید محمودی
یک شنبه 24 دی 1391, 19:36 عصر
مقدار مثلا MyVB رو توی ریجستری باید به چه مقداری تغییر داد که پیام نمایش داده بشه؟SHMessageBoxCheck یه مشکلی داشت که الان وقت نبود درستش کنم؛ پروژه1 رو تغییر دادم؛ اماده است و کار میکنه. خدمت شما....

alizanganeh
یک شنبه 24 دی 1391, 19:40 عصر
ممنون و شرمنده بابت زحماتی که بهت دادم

اگر میشه در مورد همین برنامه ای که بالا دادی یک توضیحی بدید که چطور کار میکنه و اینکه باید نمایش داده بشه یا نشه رو مجا ذخیره میکنه؟
ممنون

حمید محمودی
یک شنبه 24 دی 1391, 21:15 عصر
دو تا فرم داریم؛ که یکی بصورتی طراحی شده که میتونیم بجای MSGBOX استفاده کنیم، و یکی دیگه هم برای اجرای اون فرم قبلی مون هست. توی Command1_Click فرم1 اومدیم متنی به اون فرم قبلی فرستادیم که به کاربر نمایش پیدا کنه؛ برای ذخیره کردن تنظیمات هم از دستور SaveSetting استفاده کردیم که بصورت پیش فرض در VB6 هست و نیازی ندارید که کد خاصی بنویسید تا در ریجستری با استفاده از این دستور، در مقدار پیش فرضی که در اختیار شما قرار میده، دسترسی داشته باشید/بنویسید. و در مسیر زیر کلید ها رو میسازه :



HKEY_CURRENT_USER\Software\VB and VBA Program Settings


GetSetting هم کلیدها و Key ها رو از اون مسیر بالا میخونه؛ همین.