PDA

View Full Version : چطوری می شه یه فرم را قفل کرد؟



ali2914
شنبه 22 اسفند 1383, 07:33 صبح
سلام من در برنامه ام چند فرم دارم که باید اطلاعات در اونها وارد بشه و کاربر می تونه همزمان به همه فرمها دسترسی داشته باشه اما زمانی که کاربر می خواد اطلاعاتی در یکی از فرمها وارد کنه نیاز دارم که فرم قفل بشه در واقع فرم باید تبدیل به فرم Modal بشه و با پایان وارد کردن اطلاعات باید این قفل باز بشه یعنی دسترسی به سایر فرمها مهیا بشه کسی می دون چطوری می شه این کارو کرد؟
من خودم از کد زیر استفاده کردم اما زیاد نپسندیدم

Private Sub Form_LostFocus()
If Lock=True then Me.SetFocus
End Sub

کسی راه بهتری سراغ داره؟ :گیج:

Hamedm
شنبه 22 اسفند 1383, 09:13 صبح
سلام :)

متد Show در فرم دو پارامتر داره. که پارامتر اول کارتو راه می اندازه (بشکل توجه کنید).

البته با تابع API زیر هم میشه این کارو انجام داد.

Declare Function EnableWindow Lib "user32" Alias "EnableWindow" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
این تابع رو قبلا توضیح دادم کمی جستجو کنی پیدا میکنی.

موفق باشید و پرتوان

ali2914
شنبه 22 اسفند 1383, 13:23 عصر
حامد جان سلام .در سایت گشتم و قسمتی که گفتین دیدم از جوابت ممنون اما راستش منظور من این نبود!
ببین درسته که می شه از این کد استفاده کرد:

Form1.Show 1
و این چیزیه که من می خوام و فرم تبدیل به فرم Modal می شه که فوکاس به سایر فرمها انتقال پیدا نمی کنه اما اشکال اینه که استفاده از این دستور فقط زمان Load فرم امکان پذیره و پس از Load فرم نمی شه این حالت را ایجاد کرد و یا فرم را به فرم عادی نمی شه تبدیل کرد
من نیاز دارم که یه فرم زمانی که کاربر داره اطلاعات وارد می کنه تبدیل به فرم Modal بشه یعنی تنها فرمی باشه که فوکاس رو دریافت می کنه تا جامعیت داده ها حفظ بشه و بعد از اتمام ورود اطلاعات قفل باز بشه و سایر فرمها هم بتونن فوکاس بگیرن
در ضمن چون از فرمهای آرایه ای استفاده می کنم و فرمها RunTime ساخته می شه نمی شه تعیین کرد که در زمان اجرای برنامه چند فرم وجود داره که فرمها رو Enabled=False کنم
گفتم که از این کد استفاده می کنم:


Private Sub Form_LostFocus()
If Lock=True then Me.SetFocus
End Sub


در این حالت فرمی که اطلاعاتش وارد می شه اگه فوکاس رو از دست بده سریع دوباره فوکاس رو پس می گیره اما من می خوام اصلا فوکاس رو از دست نده نمی دونم چقدر منظورمو رسوندم؟!! حالا می تونین کمک کنین؟

Hamedm
شنبه 22 اسفند 1383, 15:22 عصر
سلام

تابع EnableWindow بکارت نمیاد؟

موفق باشید و پرتوان

حامد مصافی
شنبه 22 اسفند 1383, 15:54 عصر
Public Sub EnableAllForms()
Dim f As Form
For Each f In Forms
If f.Name <> Name Then f.Enabled = True
Next f
End Sub

Public Sub DisableAllForms()
Dim f As Form
For Each f In Forms
If f.Name <> Name Then f.Enabled = False
Next f
End Sub

ali2914
شنبه 22 اسفند 1383, 21:51 عصر
ممنون کدی که دادین همونی بود که نیاز داشتم و مشکلمو حل کرد :wink: مرسی