امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
چطوري مي شه يه فرم را قفل كرد؟
نویسنده پیام
ali2914 آفلاین
تازه وارد

ارسال‌ها: 3
موضوع‌ها: 2
تاریخ عضویت: اسفند ۱۳۸۳

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #1
چطوري مي شه يه فرم را قفل كرد؟
سلام من در برنامه ام چند فرم دارم كه بايد اطلاعات در اونها وارد بشه و كاربر مي تونه همزمان به همه فرمها دسترسي داشته باشه اما زماني كه كاربر مي خواد اطلاعاتي در يكي از فرمها وارد كنه نياز دارم كه فرم قفل بشه در واقع فرم بايد تبديل به فرم Modalبشه و با پايان وارد كردن اطلاعات بايد اين قفل باز بشه يعني دسترسي به ساير فرمها مهيا بشه كسي مي دون چطوري مي شه اين كارو كرد؟
من خودم از كد زير استفاده كردم اما زياد نپسنديدم

Private Sub Form_LostFocus()
Me.SetFocus
End Sub
كسي راه بهتري سراغ داره؟
۲۱-اسفند-۱۳۸۳, ۱۷:۵۴:۱۶
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #2
 
به اين كار مي گن On top of كه يه API هم داره به گردي پيدا ميشه

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۲۲-اسفند-۱۳۸۳, ۰۷:۴۳:۳۹
وب سایت ارسال‌ها
پاسخ
NabiKAZ آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 520
موضوع‌ها: 48
تاریخ عضویت: اسفند ۱۳۸۲

تشکرها : 6
( 60 تشکر در 46 ارسال )
ارسال: #3
 
شايدم منظورت اين باشه كه فرم رو اينجوري فراخواني كني:
form1.show 1

با زدن عدد يك جلوي متد show باعث ميشه باقي فرم ها قفل بشن و كارهاي كاربر محدود به اون فرم بشه فقط...

منظورت چيز ديگست توضيح بده ...

نبي

۲۲-اسفند-۱۳۸۳, ۱۳:۳۰:۴۲
وب سایت ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #4
 
دوست من سلام
در زمان اجرا هيچ راهي براي تغيير خاصيت فرم از Modal به Modalless وجود نداره چون اين خاصيت قبل از ايجاد يه فرم ست ميشه توي حافظه . پس بهترين كار اينه كه اول پنجره رو On the Top كني با استفاده از اين تابع API
کد:
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

بعدش با دستور

SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, &H1 Or &H2

پنجره مورد نظر رو On the top كني . بعدش از همون تكنيكي كه خود شما هم اشاره كردي استفاده كني . تركيبي از اين دوخاصيت يه حالت قفل به پنجره شما ميده و از اون حالت پرش و ظاهر شدن مجدد فرم شما هم جلوگيري ميكنه .

براي خارج كردن فرم از حالت On the Top از دستور

SetWindowPos Me.hwnd, -2, 0, 0, 0, 0, &H1 Or &H2

استفاده كني . من توي اون برنامه كيبوردي كه گذاشتم از اين تكنيك استفاده كردم .

اميدوارم مشكل شما بر طرف بشه ! :wink:

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۲۲-اسفند-۱۳۸۳, ۱۶:۲۷:۰۱
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  فونت منو ها رو تو ويبي چطوري ميشه عوض كرد؟ Mohandese_Javan 6 6,874 ۱۶-بهمن-۱۳۸۸, ۲۳:۰۲:۳۸
آخرین ارسال: CRazYFULL
  چطوري شكل برنامه رو زيبا كنم morvared 16 11,318 ۰۱-مرداد-۱۳۸۷, ۲۰:۴۲:۳۲
آخرین ارسال: Aref_Alikhani
  چطوري از محتويات ديتاگريد پرينت بگيرم alaska 5 5,258 ۰۷-فروردین-۱۳۸۷, ۱۹:۳۷:۴۹
آخرین ارسال: alaska
  چطوري ميشه محتويات datagrid را scroll كرد birezai 0 1,717 ۱۴-اردیبهشت-۱۳۸۵, ۱۵:۵۹:۳۶
آخرین ارسال: birezai
  چطوري پاك كنم؟ Soheilvb 2 2,018 ۰۸-بهمن-۱۳۸۴, ۲۱:۳۴:۵۹
آخرین ارسال: Soheilvb

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS