เคล็ดลับในการใช้การจัดการสิทธิ์ใน DELPHI
เมื่อใช้ DELPHI เพื่อคอมไพล์ระบบแอปพลิเคชันบางตัว มักจะจำเป็นต้องให้สิทธิ์ที่แตกต่างกันแก่ผู้ใช้ที่แตกต่างกัน และระบบที่ต่างกันก็มีวิธีการจัดสรรสิทธิ์ที่แตกต่างกัน หากสิทธิ์ถูกกำหนดให้กับผู้ใช้แต่ละคนในโปรแกรม ไม่เพียงแต่จะทำให้การเตรียมโปรแกรมเท่านั้น ลำบากมากไม่เอื้ออำนวยต่อการจัดการ! เมื่อเร็ว ๆ นี้ผู้เขียนได้คิดค้นวิธีการที่ฉันคิดว่าดีกว่าและฉันอยากจะแบ่งปันกับคุณ ฉันหวังว่าคุณจะสามารถให้คำแนะนำเพิ่มเติมแก่ฉันได้!
ในหลายระบบ สิทธิ์อนุญาตมักจะแบ่งออกเป็นหลายระดับ การดำเนินการที่ผู้ใช้แต่ละระดับสามารถทำได้นั้นแตกต่างกัน และโดยทั่วไปวิธีการในการบรรลุฟังก์ชันนี้คือการอนุญาตให้ผู้ใช้ที่มีสิทธิ์ที่แตกต่างกันสามารถดูเมนูที่แตกต่างกันได้ พูดง่ายๆ ก็คือ เมนูนี้จะมองไม่เห็นสำหรับผู้ใช้ที่ไม่มีสิทธิ์บางอย่าง! เพื่อให้บรรลุการควบคุมนี้ โปรแกรมเมอร์มักจะต้องใช้เวลามากในการทำงานกับโมดูลนี้ โดยเสียเวลาอันมีค่าไปอย่างมาก!
แนวคิดของผู้เขียนคือ: ถ้าเราตั้งค่าอาร์เรย์สองมิติ มิติแรกแทนเมนูระดับแรก และมิติที่สองแทนเมนูย่อย สิทธิ์บางอย่างสอดคล้องกับอาร์เรย์สองมิติ และอาร์เรย์นี้แสดงถึงเมนูที่เกี่ยวข้อง หลังจากกำหนดสิทธิ์ให้กับผู้ใช้ในระดับหนึ่งแล้ว เขาจะมีอาร์เรย์ที่เกี่ยวข้อง เมื่อเข้าสู่ระบบให้รับค่าของแต่ละองค์ประกอบจากอาร์เรย์ หากเป็น 1 เมนูที่เกี่ยวข้องจะปรากฏขึ้น หากเป็น 0 เมนูจะไม่ปรากฏขึ้น วิธีการนี้ไม่เพียงแต่ใช้สำหรับการจำแนกประเภทเท่านั้น (อาร์เรย์ของผู้ใช้ในระดับเดียวกันจะเหมือนกัน) แต่ยังสามารถแบ่งย่อยการอนุญาตระหว่างผู้ใช้ที่แตกต่างกันได้ ตราบใดที่คุณแก้ไขค่าที่สอดคล้องกันเป็น 0 หรือ 1!
ข้างต้นเป็นผลจากตัวอย่างง่ายๆ
ต่อไปนี้เป็นส่วนหนึ่งของโปรแกรมต้นฉบับ (นี่เป็นเพียงโปรแกรมตัวอย่างที่อธิบายเท่านั้น) เพื่อความง่าย จะมีเพียงรูปแบบเดียวและเมนูหลักเพียงรายการเดียวในโปรแกรม เริ่มต้นอาร์เรย์ M เมื่อสร้างแบบฟอร์ม อ่านค่าอาร์เรย์เมื่อแสดง และควบคุมการแสดงผลโดยการตั้งค่าคุณสมบัติ Enabled ของเมนูหรือ True หรือ False ของคุณสมบัติ Visible! -
var
แบบฟอร์ม 1: TForm1;
m:array[0..1,0..4] ของจำนวนเต็ม; //กำหนดอาร์เรย์ที่เก็บไว้
i,j:integer;//กำหนดตัวแปรของลูป
การดำเนินการ
{$R *.dfm}
PROcedure TForm1.FormShow (ผู้ส่ง: TObject);
start //อ่านตัวเลขและควบคุมการแสดงผลเมนู
สำหรับ i:=ต่ำ(m) ถึงสูง(m) ทำ
สำหรับ j:=Low(m[i]) ถึง High(m[i]) จะเริ่มต้น
ถ้า m[i][j]=0 แล้ว MainMenu1.Items[i].Items[j].Enabled:=false
อื่น MainMenu1.Items[i].Items[j].Enabled:=true;
จบ;
จบ;
ขั้นตอน TForm1.FormCreate (ผู้ส่ง: TObject);
start //ต่อไปนี้คือการเริ่มต้น
เค:=0;
สำหรับ i:=ต่ำ(m) ถึงสูง(m) ทำ
สำหรับ j:=ต่ำ(m[i]) ถึงสูง(m[i]) ทำ
ถ้า (j mod 2)=0 ดังนั้น m[i][j]:=1
อย่างอื่น ม[i][เจ]:=0;
จบ;