PDA

View Full Version : سطح دسترسی در فرم ها



rezaei manesh
سه شنبه 11 بهمن 1384, 13:17 عصر
سلام
من می خوام برای برنامه هام یه سطح دسترسی برای هر فرم درست کنم(برای مثال دکمه حذف برای کدام کاربر فعال باشد و..)
گام اول:حالا می خوام ببینم که چطور می تونم به فرم های پروژه دسترسی پیدا کنم
ProjectName.FormName
با این روش همه فرم ها دیده می شند اما تعداد فرم ها و دیگر خاصییت ها رو نداره که من بتونم به کمک اونها یه کلاس بنوسم
لطفا نظر بدین -راهنمایی کنید و...

MMAASS
پنج شنبه 13 بهمن 1384, 08:40 صبح
سلام
جدا از بحث سطح دسترسی اگه بخواهی به اشیا درون هر فرم دسترسی داشته باشی باید یه متغییر از فرمت رو نیو کنی اینم کدش:
Dim frm As New FormName که می تونی به جای نام فرم ProjectName.FormName رو هم بکار ببری
بعد از این تعریف می تونی به همه اجزای فرمت دسترسی داشته باشی.

niloufar
پنج شنبه 13 بهمن 1384, 12:31 عصر
سلام
البته اینکه جناب MMAASS فرمودند از جمله معارضین با قوانین oop است که میکروسافت در راستای اهداف شبیه سازی 2005 به وی بی 6 اضافه فرموده است. برای انجام این کارها در 2003 باید کلی کد مینوشتیم و از Overload کردن New در آنها باید اینجور کارا را شبیه سازی میکردیم.

MMAASS
پنج شنبه 13 بهمن 1384, 12:47 عصر
سلام
خانم نیلوفر منظورت از کلی کد چیه؟
آخه احتیاج به کلی کد نیست که . فقط همین یک خط کافیه بعدش هم همه اجزای فرم در دسترسن (هر کجای برنامه که باشی)

rezaei manesh
شنبه 15 بهمن 1384, 08:25 صبح
آخه مشکل اینجاست من یه فرم رو نمی خوام که من همه فرم های یک پروژه رو باید پیدا کنم؟؟؟؟

niloufar
شنبه 15 بهمن 1384, 10:27 صبح
سلام
خانم نیلوفر منظورت از کلی کد چیه؟
آخه احتیاج به کلی کد نیست که . فقط همین یک خط کافیه بعدش هم همه اجزای فرم در دسترسن (هر کجای برنامه که باشی)
سلام
بنده عرض کردم اگر این کد معارض قوانین oop نبود باید Overload و این جور کارها میکردیم ولی باز عرض کردم که در 2005 در راستای اهداف شبیه سازی دات نت به وی بی 6 این کد ساپورت میشه و به قول شما با همین یه خط حله.....

niloufar
شنبه 15 بهمن 1384, 10:34 صبح
آخه مشکل اینجاست من یه فرم رو نمی خوام که من همه فرم های یک پروژه رو باید پیدا کنم؟؟؟؟
از My.Application.OpenForms استفاده کنید.

rezaei manesh
شنبه 15 بهمن 1384, 10:43 صبح
سلام
My.Application.OpenForms چیه و در کجا استفاده کنم
اگه منظورتون از My.Application نام پروژه هستش که متدی به نام openforms نداره و فقط همه فرم ها و متغیرها عمومی و ... رو داره ؟؟

Farhad.B.S
شنبه 15 بهمن 1384, 12:23 عصر
کد بالا قابل استفاده در VB.Net 2005 هستش، در 2003 هیچ امکان داخلی برای دستیابی به کالکشن فرم ها وجود نداره.

راه های دیگه ای وجود داره که یکی از اونها داشتن یک کالکشن شخصی و اضافه کردن فرمهای پروژه به اونه.
این فرم ها رو میتونی به صورت دستی به کالکشن مورد نظر اضافه کنی و در صورتیکه تعداد فرم ها خیلی زیاد باشه میبایست یک کلاس مشتق شده از Windows.Forms.Form ایجاد کنی و با Override کردن متد New کد اضافه کردن فرم به کالکشن رو در اونجا قرار بدی.
سپس میتونی کلیه فرم هات رو از نوع کلاس بالا بگیری و به این ترتیب کالکشن مورد نظر شامل تمامی فرم هایی که Create شدند خواهد بود.

M.kavyani
شنبه 15 بهمن 1384, 20:43 عصر
با سلام
دوست عزیز یکی از راه هایی که به ذهنم میرسه اینه که شما از تنظیمات استفاده کنید.
شما در بخش تنظیمات یک گزینه ایجاد کنید از نوع Bolean و بعد مقدار آنرا به False تنظیم کنید. بعد برای کابری که نمی یخواهید فعال باشید آنرا تغییر ندهدید و برای کاربری که میخواهید آن گزینه ها فعال باشند مقدار آنرا به Trueتبدیل کنید.
این گزینه برای برنامه های خوب است که دو کار بر دارند. یکی مدیر که به همه بخشی ها دسترسی دارند و دیگری کاربر عادی که به بخشهایی دسترسی ندارند. اما اگر بخواهید کاربران شما چند دسته باشند مثل مدیرکل و مدیر ارشد و مدیر معمولی و کاربر پیشرفته و کاربر عادی شما باید بخش ها رو دسته بندی کنید و در بخش تنظیات چند دسته از این نوع ایجاد کنید.
مثلا":



Head master -> False
Master -> false
User -> false


( البته این نامها سوری است و هر چه که دوست داری خودت انتخاب کن)

بعد هنگامی که نوع کاربری مشخص شد مقدار آنها رو تغییر بده مثلا" اگر مدیر اصلی بود همه اش را به True تغییر بده و ....
یک مثال هم برای شما در زیر گذاشته ام . البته از نوع اول امیدوارم به دردت بخورد.
برای اطلاعات بیشتر در زمینه تنظیمات به تاپیکی که اینجانب در همین بخش ایجاد کرده ام رجوع کن.
در پناه حق موفق و کامروا باشید.

rezaei manesh
یک شنبه 16 بهمن 1384, 10:03 صبح
سلام
اما مشکل من اینه که برای هر کاربر باید سطح دسترسی در فرم ها ایجاد بشه مثلاً یک کاربر نتونه حذف کنه و کاربر دیگه بتونه حذف کنه .در کل برای هر فرم بعضی از دکمه ها رو ببینه و بعضی رو نبینه
در ضمن من vb2005 هم ندارم این برنامه شما رو نشد تست کنم.

niloufar
یک شنبه 16 بهمن 1384, 13:25 عصر
سلام
1- خوبه از این به بعد هر کی با غیر 2005 کار میکنه بگه تا اشتباه نشه
2- جناب رضایی منش، توصیه می کنم سریعتر از 2003 دل بکنید و به 2005 روی آورید. اگه کسی یه مدت با 2005 کار کنه اصلا به گذشته خودش افسوس میخوره
3- این MY.Aplicaton هم در 2005 یه کلاسه نه نام خود پروژه

rezaei manesh
یک شنبه 16 بهمن 1384, 13:39 عصر
سلام
خانم عصبانی
ممنون از اینکه کمک کردی
باشه، به رئیس شرکت سپردم که 2005 بگیره اما میگه فعلا با همین کار کنید.
اگه کسی با 2003 بلده کمک کنه
با تشکر

Farhad.B.S
یک شنبه 16 بهمن 1384, 13:48 عصر
فکر کنم اگه یه نگاهی به صفحه قبل بندازی و پست ها رو درست بخونی ، جوابت رو پیدا کنی...

پ.ن. بعد ما انتظار داریم بچه ها جوابشون رو از طریق جستجو تو سایت بدست بیارند !!

niloufar
یک شنبه 16 بهمن 1384, 14:06 عصر
سلام
1- خوبه از این به بعد هر کی با غیر 2005 کار میکنه بگه تا اشتباه نشه
2- جناب رضایی منش، توصیه می کنم سریعتر از 2003 دل بکنید و به 2005 روی آورید. اگه کسی یه مدت با 2005 کار کنه اصلا به گذشته خودش افسوس میخوره
3- این MY.Aplicaton هم در 2005 یه کلاسه نه نام خود پروژه
انصافا از کجای این عبارات بر میاد که من عصبانیم
اتفاقا من آدم خونسردی هستم

به هر حال اگر سوء تفاهم شده، بنده عذر میخوام

M.kavyani
یک شنبه 16 بهمن 1384, 14:26 عصر
سلام
اما مشکل من اینه که برای هر کاربر باید سطح دسترسی در فرم ها ایجاد بشه مثلاً یک کاربر نتونه حذف کنه و کاربر دیگه بتونه حذف کنه .در کل برای هر فرم بعضی از دکمه ها رو ببینه و بعضی رو نبینه
در ضمن من vb2005 هم ندارم این برنامه شما رو نشد تست کنم.
به شما پیشنهاد میکنم که حتما" سراغ VS2005 برید.
در ضمن من متوجه شدم چی مخواهید بگیید. ولی مشکل این برنامه چیه؟ با این الگوریتمی که گفتم شما میتونید اینکار رو انجام بدید. اول شما به شیوه دیگری اشاره کردید ولی من این شیوه به ذهنم رسید و حتی تستش هم کردم که به نتیجه رسیدم.


سلام
خانم عصبانی
ممنون از اینکه کمک کردی
باشه، به رئیس شرکت سپردم که 2005 بگیره اما میگه فعلا با همین کار کنید.
اگه کسی با 2003 بلده کمک کنه
با تشکر
شما در منزل کامپیوتر ندارید؟؟؟؟:گیج: ( بی خیال شرکت خودت VS2005 رو بگیر ببین چیه شاید خوشت نیاد بعدا" می مونی تو اینکه این چه پیشنهادی بود که به شرکت دادی:لبخند: )
در پناه حق موفق و کاروا باشید

rezaei manesh
یک شنبه 16 بهمن 1384, 18:37 عصر
سلام
من منظورم به پست قبلی تون بود-خواهش می کنم برای شوخی گفتم
خوب من خونه 2005 نصب کنم و اینو درست هم کنم به چه درد من می خوره؟؟؟ من برای پرو/زه های شرکت می خوام که الان هم با 2003 نوشته شده هستش

rezaei manesh
یک شنبه 14 اسفند 1384, 16:52 عصر
سلام
من بعد از مدت ها دوباره اومدم من این پروژه ام دیگه تموم شده فقط همین تعیین سطح دسترسی مونده


اما مشکل من اینه که برای هر کاربر باید سطح دسترسی در فرم ها ایجاد بشه مثلاً یک کاربر نتونه حذف کنه و کاربر دیگه بتونه حذف کنه .در کل برای هر فرم بعضی از دکمه ها رو ببینه و بعضی رو نبینه
.
همین اتفاق برای این دو کاربر ممکنه در یه فرم دیگه کاملا عکس فرم اول باشه یعنی کاربر دوم در فرم دوم برخلاف کاربر اول بتونه حذف کنه اما کاربر اول در این فرم نتونه به خاطر همین فکر کنم نمیشه از روش شما استفاده کنم آقای کاویانی
لطفا منو راهنمایی کنید

meh_secure
یک شنبه 14 اسفند 1384, 17:41 عصر
یکی از راه های ساده
شما در جدولی که کاربران ثبت اند نوع دسترسی را مشخص کنید(administrator, Users,...)
داخل برنامه بعد از login نوع کاربر را در یک متغیر سراسری قرار بده و با توجه به اون تصمیم گیری کن.


isAdmin=True
.
.
.
If IsAdmin then
doThis
Else
Msgbox "only administrators can do this operation "
End IF

asilverisis
دوشنبه 15 اسفند 1384, 00:53 صبح
سلام
شما میتونید توی جدولی که اطلاعات کاربران رو نگهداری می کنید یه فیلد Permission برای اونا مشخص کنید که از نوع String باشه
مقادیر این فیلد بسته به نظر برنامه نویس می تونه مثلا 4 حرفی باشه و شامل اعداد 0 و 1
حرف اول (در واقع عدد اول ) مجوز نمایش دومی مجوز اضافه سومی مجوز حذف و چهارمی مجوز ویرایش باشه
البته این فقط یه مثال بود می تونی به هر روشی که دوست داری اینو پیاده سازی کنی

asilverisis
دوشنبه 15 اسفند 1384, 00:56 صبح
ببخشید
ضمنا با روش بالا نیازی نداری تمام فرم ها رو در اختیار داشته باشی توی Load یا New هر فرم میتونی این کار رو بکنی

rezaei manesh
سه شنبه 16 اسفند 1384, 09:00 صبح
سلام
چرا هیشکی به دقت نمی کنه
بابا من می گم یه کاربر می تونه تویه یه فرم حذف کنه اما توی یه فرم دیگه نمیتونه نمی خوام که یا بتونه حذف کنه یا نه
من نیاز دارم که بتونم کلیه دکمه های هر فرم رو توی یه جدول بریزم و به کاربر نشون بدم تا هر کدوم رو که خواست بتونه فعال کنه یا نه
کالکشنی می خوام که این کار رو بکنه
یه کمک هم بکنم یه جستجو با نام dte توی msdn بکنین یکسری مثال زده اما نمی دونم چرا بعضی از پراپرتی های اون در برنامه نمی آیند (اونایی که اولشون active داره نمی یاره که من همونا رو میخوام)