PDA

View Full Version : برنامه محدودیت دسترسی کابر به کنترل های برنامه



mehrnoosh_al62
سه شنبه 29 مرداد 1387, 14:51 عصر
سلام دوستان
ممکنه بگید ایراد کد من کجاست؟
میخوام از بانک بخونم و در لود برنامه کنترل هایی که در بانک هست به صورت Invisible در بیان. جدول بانک به صورت تصویریه که ضمیمه کردم. نام قبل از "، " نام فرممه و نام بعدش نام کنترل موجود در اون فرمه:


کدی که نوشتم ظاهرا ارور نمیده ولی بعد لود شدن کنترل های که باید به صورت invisible در بیان همچنان visible هستند و در واقع هیچ تغییری نمیکنند. برنامه رو که trace کردم حتی وارد شرط if هم میشه و اروری نداره ولی در ظاهر هیچ تغییری در برنامه ایجاد نمیشه...:ناراحت:


For i As Integer = 0 To tbl2.Rows.Count - 1
Dim index As Integer = tbl2.Rows(i)(2).ToString().IndexOf(",")
Dim frmstr As String = tbl2.Rows(i)(2).ToString().Substring(0, index)
Dim ctrlstr As String = tbl2.Rows(i)(2).ToString().Substring(index + 1)
For Each frm As Form In clevel.ReturnForms()
If (frm.Name = frmstr) Then
For Each ctrl As Control In frm.Controls
If (ctrl.Name = ctrlstr) Then
ctrl.Enabled = False
End If
Next
End If
Next
Next

Keyvan_Y
چهارشنبه 30 مرداد 1387, 02:00 صبح
جواب دادن به سوال شما یکم سخته , چون طراحی فرم شما رو ندیدم. ولی دقت کنید که کنترلهایی که داخل Panel,TabControl,GroupBox,... هستند به عنوان Child های Form شناخته نمی شوند.
شاید مشکل از اینجا ناشی می شه. چون شما فقط در Form.Controls میگردید

mehrnoosh_al62
چهارشنبه 30 مرداد 1387, 08:31 صبح
جواب دادن به سوال شما یکم سخته , چون طراحی فرم شما رو ندیدم. ولی دقت کنید که کنترلهایی که داخل Panel,TabControl,GroupBox,... هستند به عنوان Child های Form شناخته نمی شوند.
شاید مشکل از اینجا ناشی می شه. چون شما فقط در Form.Controls میگردید

تو یه برنامه ساده بدون هیچ کدوم از این کنترل هایی که گفتید هم کار نمیکنه...

HadiVB
چهارشنبه 30 مرداد 1387, 09:31 صبح
ForEach ctrl As Control In frm.Controls
If (ctrl.Name = ctrlstr) Then
ctrl.Enabled = False
EndIf
بجای control از object استفاده کنید
ForEach ctrl As object In frm.Controls
If (ctrl.Name = ctrlstr) Then
ctrl.Enabled = False
EndIf

mehrnoosh_al62
چهارشنبه 30 مرداد 1387, 10:05 صبح
ممنونم ولی بازم کار نکرد... ببینید وقتی به جای frm تو همین حلقه دقیقا اسم فرم رو مینویسم درست اجرا میشه . ممکنه هر چی هست به خاطر همون باشه...
واقعا کلافم کرده... یکی کمک برسونه...

Dariuosh
چهارشنبه 30 مرداد 1387, 16:25 عصر
شما 3 سري حقوق دسترسي ميتونيد برا برنامتون تعريف کنيد
1 - در سطح کله برنامه : یعني مثلاً يه سري فرما ديده بشن يا نه
2 - در سطح هر فرم (که فکر کنم منظورتون اين باشه): که برا اين کار تا فرمتون Load نشه که شما کاري از پيش نميبريد يعني در حاله Load شدن شما بايد کنترلهاي مورد نظرت رو Visibleاشون رو True و False کني
3 - در زمان اجرايه فرمان : يعني مثلاً کاربر حق ويرايش يا تائيد يا اختتام سند رو داره يا نه

mehrnoosh_al62
پنج شنبه 31 مرداد 1387, 07:59 صبح
مرسی ولی برنامم باید داینامیک باشه. نمیتونم هر بار تو لود هر فرمی کد رو بذارم. مشکل کد خودم چیه؟
اگه باید تو لود هر فرم باشه پس چرا وقتی تو کد خودم به جای Frm اسم خود فرمو میذارم کار میکنه...؟

Dariuosh
پنج شنبه 31 مرداد 1387, 09:09 صبح
مرسی ولی برنامم باید داینامیک باشه. نمیتونم هر بار تو لود هر فرمی کد رو بذارم. مشکل کد خودم چیه؟
اگه باید تو لود هر فرم باشه پس چرا وقتی تو کد خودم به جای Frm اسم خود فرمو میذارم کار میکنه...؟
شما از همين clevel.ReturnForms براي Show کردن فرمات استفاده ميکني ؟

mehrnoosh_al62
پنج شنبه 31 مرداد 1387, 09:21 صبح
شما از همين clevel.ReturnForms براي Show کردن فرمات استفاده ميکني ؟

نه... باید از این تابع استفاده کنم...؟

Dariuosh
پنج شنبه 31 مرداد 1387, 15:22 عصر
من نميدونم شما تو برنامتون چي کار دارين ميکنين ولي در هر صورت وقتي شما رو يه نمونه از کلاسي کار ميکنيد و تغييرات ميدين از همون نمونه هم بايد انتظار تغيير داشته باشين .