線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:617
推到 Plurk!
推到 Facebook!

Menu Login 問題

尚未結案
GDMichael
一般會員


發表:27
回覆:36
積分:12
註冊:2004-10-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-26 16:49:41 IP:203.185.xxx.xxx 未訂閱
小弟有個main menu,當user login後會先將menu所有功能disable,然後再跟據user的right去enable那些function,然而每一個menu item都可能有數層的menu item所作成..意思是最後一個的menu item可能是之前的menu item的sub menu,情況如下: System - Login - Logout - Exit Operation - Quotation - Procedure - Purchase Order - Sales Order - Invoice 正如上面的例子...purchase order和quotation都是對應用戶作出顯示不同form的動作...但它們郤不是同一個level的... 我曾經寫個一個function,就係先處理只有一層的menu(即使用menu.item.count的方法),然後處理第二層,如此理推...如果下面一層的menu item全都是disable,那麼對應的上一層也會跟著disable,即是話,如果purchase order和sales order也是disable,那麼procedure也會跟著disable,反之亦然.... 但我的做法是要處理不同階層的menu,每層也要寫著相同的code,分別只是item要"."多少..即是MainMenu.Items[0].Items[0] 或 MainMenu.Items[0].. 請問各位有冇好方法可以增加效率呢?因為這樣作,如果sub menu的層數越多..那就越大堆相似的code... 請各位幫一幫忙,謝
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-26 17:48:58 IP:147.8.xxx.xxx 未訂閱
Recursion? e.g.    
function IsItemEnabled(MenuItem: TMenuItem): boolean;
var
    i: integer;
begin
    Result := False;
    for i := 0 to MenuItem.Count-1 do
        Result := Result or IsItemEnabled(MenuItem.Items[i]);
    Result := Result or MenuItem.Enabled;
end;
Of course above codes are not tested < face='Lucida Console'>http://pywong.hk.st http://www.lazybones.ca 發表人 - william 於 2004/10/26 17:53:01
系統時間:2024-06-08 17:23:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!