نصائح لتنفيذ إدارة الأذونات في DELPHI
عند استخدام DELPHI لتجميع بعض أنظمة التطبيقات، غالبًا ما يكون من الضروري منح أذونات مختلفة لمستخدمين مختلفين، والأنظمة المختلفة لها طرق مختلفة لتخصيص الأذونات إذا تم تعيين الأذونات لكل مستخدم في البرنامج، فلا يقتصر الأمر على إعداد البرنامج مزعجة للغاية، ولا تساعد على الإدارة! لقد توصل المؤلف مؤخرًا إلى طريقة أعتقد أنها أفضل، وأود أن أشاركها معك.
في العديد من الأنظمة، يتم تقسيم الأذونات عادةً إلى عدة مستويات. تختلف العمليات التي يمكن للمستخدمين تنفيذها على كل مستوى، وطريقة تحقيق هذه الوظيفة بشكل عام هي السماح للمستخدمين الذين لديهم أذونات مختلفة برؤية قوائم مختلفة. ببساطة، هذه القائمة غير مرئية للمستخدمين الذين ليس لديهم أذونات معينة! من أجل تحقيق هذا التحكم، غالبًا ما يضطر المبرمجون إلى قضاء الكثير من الوقت في العمل على هذه الوحدة، مما يؤدي إلى إضاعة الكثير من الوقت الثمين!
فكرة المؤلف هي: إذا قمنا بإعداد مصفوفة ثنائية الأبعاد، فإن البعد الأول يمثل قائمة المستوى الأول، والبعد الثاني يمثل القائمة الفرعية. كل عنصر من عناصر المصفوفة يخزن الرقمين 0 أو 1 فقط تتوافق سلطة معينة مع مصفوفة ثنائية الأبعاد، وتمثل هذه المصفوفة القائمة المقابلة. بعد تعيين الأذونات لمستخدم بمستوى معين، سيكون لديه مصفوفة مقابلة. عند تسجيل الدخول، خذ قيمة كل عنصر من المصفوفة إذا كانت 1، فستظهر القائمة المقابلة، وإذا كانت 0، فلن تظهر القائمة. لا يمكن استخدام هذه الطريقة للتصنيف فقط (مصفوفات المستخدمين على نفس المستوى هي نفسها)، ولكن يمكن أيضًا تقسيم الأذونات بين مستخدمين مختلفين، طالما قمت بتعديل القيمة المقابلة إلى 0 أو 1!
ما ورد أعلاه هو نتيجة لمثال بسيط.
ما يلي هو جزء من البرنامج المصدر (هذا مجرد مثال توضيحي للبرنامج، من أجل البساطة، يوجد نموذج واحد فقط وقائمة رئيسية واحدة في البرنامج). قم بتهيئة المصفوفة M عند إنشاء النموذج، وقراءة قيمة المصفوفة عند العرض والتحكم في العرض عن طريق تعيين خاصية Enabled في القائمة أو True أو False للخاصية Visible! !
فار
Form1: TForm1؛
m:array[0..1,0..4] of integer; // تحديد المصفوفة المخزنة
i,j:integer;//حدد متغيرات الحلقة
تطبيق
{$R *.dfm}
الإجراء TForm1.FormShow(Sender: TObject);
start // اقرأ الأرقام وتحكم في عرض القائمة
لأني:=منخفض(م) إلى مرتفع(م).
بالنسبة لـ j:=Low(m[i]) إلى High(m[i]) تبدأ
إذا كان m[i][j]=0 ثم MainMenu1.Items[i].Items[j].Enabled:=false
else MainMenu1.Items[i].Items[j].Enabled:=true;
نهاية؛
نهاية؛
الإجراء TForm1.FormCreate(Sender: TObject);
ابدأ // ما يلي هو التهيئة
ك:=0;
لأني:=منخفض(م) إلى مرتفع(م).
من أجل j:=Low(m[i]) إلى High(m[i]) افعل
إذا (j mod 2)=0 ثم m[i][j]:=1
آخر m[i][j]:=0;
نهاية؛