pb菜單詳解和MDI


菜單條-MenuBar、菜單項-MenuItem、級聯菜單(子菜單)-SubMenu

菜單項(MenuItem)是菜單中最基本的元素,只要有文字內容的就是菜單項。菜單條(MenuBar)是菜單中級別最高的菜單項的總稱,也叫做菜單標題。菜單條的內容總是顯示出來,對菜單的操作也是首先從這里開始的。在菜單條上移動鼠標或者點擊其中的項目可以顯示對應的內容,稱為下拉菜單,包括很多的菜單項,它們大多數都執行相應的功能,少數還可以包含更細致的內容,稱為級聯菜單(SubMenu),也叫做子菜單。這樣的菜單項右面都有小箭頭指示

在設置菜單時,在設計窗口中的每一步修改都能反映到預覽窗口中,隨時可以檢查級別關系是否正確。如果發生順序或者級別錯誤,可以用鼠標選中錯誤菜單項(不要使菜單項處於編輯狀態),然后直接拖動到正確的位置即可。在菜單項中輸入內容時,有兩個字符具有特殊的含義,“-”可以創建菜單項之間的分隔線,“...”表示該菜單項可以彈出一個屬性對話窗口。另外,彈出式菜單彈出的是某個下拉菜單或者某個級聯菜單,也可以單獨設計彈出式菜單,和下拉式菜單的設計沒有什么區別。


【屬性】

▲Name
在該屬性框中為菜單項命名。缺省菜單的名稱都是m_加上菜單項的內容。在腳本中引用菜單項時要從最開始一級加圓點符號逐級引用,比如要引用“文件”下的菜單項“打開”,可以使用“m_文件. m_打開”來引用。

▲Text
該屬性就是在創建菜單時每個菜單項中輸入的內容。運行時的整個菜單內容就是該屬性的內容。

▲MicroHelp
如果菜單掛接在MDIHelp!類型的窗口中,運行狀態下,當鼠標指針指向菜單項或者工具條中的小圖標時,該文字可以顯示在MDI窗口底部的狀態條中

▲ToolbarItemText
可以定義顯示在工具條小圖標中的文字,以對小圖標的功能有簡短的描述。當鼠標指針指向工具條中的小圖標時,顯示此文字

▲ToolbarItemName
該屬性用來定義工具條小圖標上顯示的圖形。可以使用PowerBuilder提供的很多小圖標,也可以自定義。

▲ToolbarItemDownName
菜單選中時,即checked時,按下的圖標,一般與ToolBarItemName相同

▲ToolbarItemVisible
顯示或隱藏工具條圖標

▲ToolbarItemDown
菜單選中,即checked,圖標按下

▲ToolbarItemSpace
指定該圖標和前面圖標之間的間距。一般都是0,只有不同組的圖標之間才有必要設置間距。

▲ToolbarItemBarIndex
指定圖標顯示在哪一行的工具條上。該屬性相同的圖標顯示在同一行,只要相同就可以,並不要求該屬性取值為連續的數字。

▲ToolbarItemOrder
指定圖標顯示順序,此值越大越靠后,默認0時按照菜單中的順序顯示。
如在菜單file下后exit,需要把exit圖標放在最后,則其他都為0,exit設為1就可以了

▲ShortCutKey
該屬性和ShortCut Alt,ShortCut Control和ShortCut ShIft三個選項配合使用來定義菜單項的快捷鍵。

其他的屬性使用得比較少。


〖菜單編程〗
●為“退出”菜單項編寫腳本
在菜單中指代詞parentwindow是指菜單掛接的窗口,比直接使用窗口的名稱有更好的通用性。所以在“退出”菜單項的Clicked事件中可以這樣編寫腳本:close(parentwindow)

●選中某個菜單項
可以使用Checked標記來表示某個菜單項選中,可以在菜單項的Clicked事件中編寫如下腳本來選中菜單項:
if this.checked then
   this.checked = false
else
   this.checked = true
end if
也可以使用函數Check和UnCheck來代替屬性修改。上面的腳本可以改成:
if this.checked then
   this.uncheck()
else
   this.check()
end if
當菜單項選中時,菜單項的左側有一個“√”符號,並且對應的小圖標為按下狀態。

●隱藏某個菜單項
要隱含某個菜單項,可以將該菜單項的Visible屬性修改為False,如果該菜單項位於菜單條的最高級別上,則可以將整個下拉菜單隱含。例如,某窗口上掛接了菜單m_main,在窗口的打開事件中將菜單中的“文件”整個下拉菜單隱含,可以在該窗口的0pen事件中編寫如下腳本:
    m_main.m_文件.Visible = False
    但是,將菜單項隱含並不能將其對應的在工具條中的小圖標隱含,並且小圖標的功能照樣能夠正常執行。要將小圖標隱含,應該設置ToolBarItemVisible屬性為False。例如,隱含菜單項“打開”對應的小圖標,在窗口的打開事件中可以使用下面的語句:
    m_main.m_文件.m_打開.ToolBarItemVisible = False

●使某個菜單項失效
將菜單項的Enabled屬性置為False,即可使菜單項顯示變灰而不能使用,同時對應的小圖標也變灰。如果足下拉菜單則整個下拉菜單不能使用,但其下拉項目對應的小圖標可以正常使用。如果是級聯菜單則級聯菜單不能被打開,但是級聯菜單下的各個菜單項對應的小圖標可以正常使用。下面是在窗口打開事件中將菜單m_main的“文件”下的m_open修改為無效的腳本: 
    m_main.m_文件.m_open.Enabled = False

●調整工具條的位置
如果工具條的ToolBarUserControl屬性(在application中)設置為True,則用戶可以在工具條上按鼠標右鍵彈出菜單。使用該彈出菜單可以調整工具條的顯示位置。用直接拖拉的方式也可以改變工具條的顯示位置。當工具條的位置發生變化時將觸發窗口的ToolBarMoved事件,在該事件中可以編寫腳本來判斷工具條的移動情況。當該事件觸發時,PB自動修改Message中的參數WordParm和LongParm使用這兩個屬性可以判斷工具條的移動情況,屬性含義如下:
Message.LongParm屬性的含義:
0:移動到左側;
1:移動到頂部;
2:移動到右側:
3:移動到底測;
4:變為浮動顯示。
Message.WordParm屬性的含義:
O:FrameBar在移動;
1:SheetBar在移動。
關於工具條位置的編程一般是在窗口打開和關閉時應用。關閉對應該保存用戶關於工具條的設置,以便在窗口打開時將工具條恢復到上次關閉時的狀態。這些信息可以保存在應用的ini文件中,具體含義只要開發人員清楚即可,打開時按同樣的含義來設置工具條的位置。如在Frame的close()事件中編程(ToolbarAlignment為窗口的屬性):
choose case this.ToolbarAlignment
case AlignAtTop!
   SetProfileString("C:\toolbar.ini","setup","align","1")
case AlignAtLeft!
   SetProfileString("C:\toolbar.ini","setup","align","0")
case AlignAtRight!
   SetProfileString("C:\toolbar.ini","setup","align","2")
case AlignAtBottom!
   SetProfileString("C:\toolbar.ini","setup","align","3")
case Floating!
   SetProfileString("C:\toolbar.ini","setup","align","4")
end choose
同樣,在Frame的打開事件中可以根據ini文件的設置來決定工具條的顯示。例如,下面的腳本在打開事件中讀取ini文件中的配置來決定工具條的顯示位置:
string ls_align
ls_align = ProfileString("c:\toolbar.ini","setup","align","1")
choose case ls_align
case '0'
   this.ToolbarAlignment = AlignAtLeft!
case '1'
   this.ToolbarAlignment = AlignAtTop!
case '2'
   this.ToolbarAlignment = AlignAtRight!
case '3'
   this.ToolbarAlignment = AlignAtBottom!
case '4'
   this.ToolbarAlignment = Floating!
end choose
當然,也可以用同樣的方法保存更多的設置,例如是否隱含工具條,是否顯示文字SheetBar的顯示情況等等。

●修改工具條上右鍵彈出菜單中的內容
應用對象的屬性ToolBarUserControl控制着用戶是否可以在工具條上使用右鍵彈出菜單,該屬性缺省是True,默認為英文格式,可以修改ToolBarFrameTitle、ToolabarSheetTitle、ToolbarPopMenuText等屬性換成中文字。
ToolBarFrameTitle:框架(也可理解為主菜單工具條)Frambar中文
ToolabarSheetTitle:打開sheet后的Sheetbar中文
也可以在Frame的打開事件中編寫腳本實現:
GetApplication().ToolbarPopMenuText = "左側、頂部、右側、底部、浮動、文字、提示信息"
文字以逗號分隔,如果多了則被自動忽略。只能修改該彈出菜單中的文字,但不能修改對應各項的功能。其中函數GetApplication可以獲取當前應用的句柄(handle)。也可以在Frame的打開事件中使用下面的語句來限制用戶不准使用工具條上的彈出菜單:
    GetApplication().ToolbarUserControl = false

●動態設置MicroHelp
使用函數SetMicroHelp可以動態改變菜單項的MicroHelp內容。該函數的語法是:
windowname.SetMicroHelp(string)
其中windowname是菜單所掛接的窗口名稱,string是要設置的MicroHelp內容。函數正確執行返回1,否則返回-1,如果有參數為null則返回null。一般在菜單項的Selected事件中使用該函數。
如果在定制Frame窗口的控件中修改MicroHelp,還得在相關事件中取消MicroHelp。一般在控件的GetFocus事件中顯示MicroHelp提供關於該控件的解釋信息,在LoseFocus事件中將MicroHelp修改為“Ready”。
一個保存MicroHelp的好方法是使用控件的Tag屬性,在窗口畫板中給每個要顯示MicroHelp的控件的Tag屬性都指定適當的內容,然后在需要改變MicroHelp的腳本中將Tag屬性作為函數SetMicroHelp的參數即可。

●使用右鍵彈出菜單
在RButtonDown事件下使用函數PopMenu來顯示彈出試菜單。該函數的語法是:
menuname.PopMenu(xlocation,ylocation)
其中menuname是要彈出的菜單的名稱,可以是某個下拉菜單中的某個下拉項目或者某個級聯菜單。xlocation和ylocation是菜單顯示的位置,該坐標的取值是相對於窗口而言的。通常使用函數PointerX和PointerY來獲取該坐標,以便在鼠標點擊的位置彈出菜單。這兩個函數的語法格式相同,PointerX的格式是:
objectname.PointerX()
其中objectname是控件名稱,X是鼠標點擊位置和objectname左邊框的距離,缺省為腳本所在的控件。在和函數PopMenu搭配使用時應該獲取相對於窗口而言的坐標位置。雖然每個控件的RbuttonDown事件中都有xpos和ypos參數可用,但這都是相對於控件而言的。
也就是說除了要彈出的菜單在窗口上,一般很少用xpos和ypos。一般為menuname.PopMenu(parent.pointerX(),parent.pointerY())。
*Menu4 NewMenu
NewMenu = CREATE Menu4
NewMenu.m_language.PopMenu(PointerX(), PointerY())
NewMenu.m_language.PopMenu(w_frame.PointerX(), w_frame.PointerY())

●改變窗口中的菜單
函數ChangeMenu可以動態改變窗口的菜單。它的語法格式是:
windowname.ChangeMenu(menuname{,position})
其中,windowname是要改變菜單的窗口的名稱;menuname是要掛接到窗口上的菜單的名稱;position是可選參數,僅用於MDI Frame窗口中,用來指示給當前的窗口列表中追加的菜單標題的位置。缺省值為1,這時所有打開的Sheet出現在第一個菜單標題的下拉式菜單的底部。


隱藏和顯示工具欄
windowname.ToolbarVisible = True/False
隱藏和顯示文字
GetApplication().ToolbarText = True/False
隱藏和顯示提示信息
GetApplication().ToolbarTips = True/False


〖MDI〗-Multiple Document Interface

*菜單是MDI應用中必不可少的,不僅Frame必須有一個菜單,就連在客戶區打開的各個Sheet也應該有菜單,如果沒有就會自動繼承前面Sheet的菜單。有兩種通常的方式來為MDI的Sheet表提供菜單:在框架和每個Sheet之間共享一個菜單,或者分別為每個Sheet提供一個單獨的菜單,當然也可以這兩種方式混合使用。當打開多個有菜單的Sheet時,只有當前Sheet的菜單顯示在Frame頂部,其他Sheet的工具條可以顯示,而它們的菜單不顯示。菜單提供各個Sheet間切換的功能,以及在Sheet中能夠完成的絕大部分功能。每個菜單可以有自己對應的工具條,也可以沒有,還可以對應多行工具條,這些都是在菜單畫板中設計的。

*客戶區是MDI窗口中用戶的工作區間,Sheet都是在該區域顯示的,它們的顯示范圍不會超過該區域。如果在MDI框架中放置了控件,這樣的MDI窗口稱為定制Frame,否則就稱為標准Frame。客戶區實際上是一個非常特殊的控體該控件叫做mdi_1,只有當運行時才可用。當使用定制Frame時mdi_1控件不能正確顯示在可視區域,這時打開Sheet也不會正常顯示,應該在Frame的Resize事件中編寫腳本,對mdi_1重新進行定位。假設在Frame的上部放置了命令按鍵cb_1,在命令按鍵的下面和狀態條之間顯示mdi_1。腳本如下:
uint li_x,li_y,li_width,li_height
li_x = WorkSpaceX()
li_y = cb_1.y + cb_1.Height
li_width = WorkSpaceWidth()
li_height = WorkSpaceHeight() - li_y - mdi_1.MicroHelpHeight
mdi_1.Move(li_x,li_y)
mdi_1.Resize(li_width,li_height)
上述腳本中的函數WorkSpaceX、WorkSpaceWidth、WorkSpaceHeight和另外的函數WorkSpaceY用來獲取關於工作區域的參數,使用方法都比較簡單,只要注意這些函數都不包括工具條所占用的區域。通過上述腳本,mdi_1控件就可以正確顯示在Frame的可視范圍內,再打開Sheet也不會出現什么異常了。
    當使用標准Frame時,系統會自動維護客戶區的位置和大小。

*在MDI應用系統中,Frame窗口必須包含一個菜單,該菜單可以有工具條也可以沒有。在Frame菜單中可以編寫打開Sheet的腳本。Sheet並非特殊類型的窗口,只是在Frame中打開就稱為了Sheet,實際上就是非MDI類型的窗口。雖然Sheet就是普通的窗口,但不能使用Open函數打開,要使用OpenSheet或者OpenSheetWithParm函數來打開。Sheet可以有菜單也可以沒有菜單。當打開帶有菜單的Sheet時,Sheet的菜單自動取代Frame的菜單;當打開沒有菜單的Sheet時,該Sheet自動使用Frame的菜單(當然,可能是Frame本身自帶的菜單,也有可能是其他Sheet的菜單)。這時就出現了問題,當打開帶菜單的Sheet時,Sheet的菜單覆蓋了Frame的菜單,Frame菜單中的功能如何執行?好的解決方法就是使用工具條。Sheet的菜單替換了Frame的菜單后,Frame的工具條始終可以顯示,使用工具條照樣可以正常執行Frame菜單的功能。所以,在創建Frame的菜單時,好的習慣就是要同時創建菜單的工具條。但是,使用這種解決方法時,工具條中小圖標功能的易記易用性就非常重要了,開發人員應該盡可能提供更多關於小圖標的信息,如MicroHelp,Tips和 ToolBarItemText等。另外一種解決方法可能有一定的適用情況,就是讓所有的Sheet都共享Frame的菜單,當所有的Sheet都進行同一類型或相似類型的操作時,比如像微軟的Word似的,Sheet都進行文件編輯的情況下,這種方法就比較實用,菜單的維護就比較簡單。


【函數】

★opensheet和opensheetwithparm
在Frame菜單中可以編寫打開sheet的腳本。sheet並非特殊類型的窗口,只是在Frame中打開就稱為了sheet,實際上就是非MDI類型的窗口,雖然Sheet就是普通的窗口,但不能使用open函數打開,要使用OpenSheet或者OpenSheetWithParm函數來打開。其中OpenSheet函數不給Sheet傳遞參數,而函數OpenSheetWithParm可以在打開Sheet的同時傳遞參數。OpenSheet的語法格式是;
OpenSheet(Sheetrefvar{,windowtype},mdiframe,{,position{,arrangeopen}})
其中,Sheetrefvar是要打開的Sheet的名稱(注意,不能是MDl類型的窗口);mdiframe是Frame的名稱,表示要在這個Frame的客戶區打開名稱為sheetrefvar的Sheet;這兩個參數指明了在哪個Frame中打開哪個Sheet,都是必須的。變量windowtype為string類型,用來表示要打開的窗口的名稱,如果指明該參數,則sheetrefvar的類型必須是能夠接受window類型的賦值,這時的函數表示要打開windowtype名稱的窗口,並將其實例保存在變量sheetrefvar中,可以使用該變量引用這個sheet。position是一個integer類型的參數,表示在菜單條中的位置,新打開的sheet名稱作為一個菜單項添加在該位置的下拉菜單中。菜單條最左面的項目位置為1,依次增加,當該參數大於菜單條中的項目數時則將sheet名稱添加到右側倒數第二個菜單的下面。如果打開的sheet數據超過9個,多余的則以級聯菜單的形式顯示在該菜單的more windows下。參數arrangeopen是指打開sheet后在客戶區中的布局方式,是arrangeopen枚舉類型的值,有3個可以使用的取值。
Cascaded!:將打開的sheet層疊起來,使所有的標題欄都可見。這是缺省方式。
Layered!:將打開的sheet完全地覆蓋在客戶區,后打開的覆蓋前面的sheet。
Original!:用窗口的原始尺寸打開,打開后並以Cascaded!方式安排布局。
eg:在名稱為MDI_my的Frame中打開窗口名稱為w_edit的窗口
opensheet(w_edit,MDI_my)
opensheet(w_edit,MDI_my,3,Cascaded!)
window lw_w
opensheet(lw_w,"w_edit",MDI_my,3,Cascaded!)
和opensheet函數類似,opensheetwithparm函數中的很多參數含義完全相同。其語法格式如下:
OpenSheetWithParm(Sheetrefvar,parameter{,windowtype},mdiframe{,position{,arrangeopen}})
其中parameter是要傳遞的參數,可以是String,Number或者PowerObject類型,該函數用法及參數含義和opensheet完全相同。

★GetActiveSheet
使用函數GetActiveSheet可以獲取當前的Sheet,該函數的語法如下:
mdiframewindow.GetActiveSheet()
其中mdiframewindow是當前Frame的名稱。該函數返回window類型數值,是當前活動的sheet。執行過程中發生錯誤則返回無效數據,如果mdiframewindow為null則返回null。該函數經常和IsVaild配合使用,來檢查函數返回的窗口是否有效。
IsValid,判斷指定對象是否有效,該函數語法為:
IsValid(objectname)
其中objectname是要進行是否有效判斷的對象。該函數返回為boolean類型的值。
GetFirstSheet()
GetNextSheet()

★ArrangeSheets
使用函數ArrangeSheets可以安排當前打開的和最小化的Sheet的布局,該函數的語法是:
mdiframe.ArrangeSheets(arrangetype)
其中,mdiframe為Frame的名稱,arrangetype是arrangetypes枚舉類型的數值,可以取為:
Cascade!:將打開的Sheet層疊起來,使所有的標題欄都可見。
Layer!:將打開的Sheet完全的覆蓋在客戶區。
Tile!:將打開的Sheet以平鋪的方式從左到右排列。
TileHorizontal!:將打開的Sheet並排放置。
Icons!:僅將最小化的Sheet沿Frame的底部放置。
該函數正確執行則返回1,否則返回-1,如果有參數為null則返回null。

★GetToolbar、GetToolbarPos和SetToolbar、SetToolbarPos
獲取工具條的信息
可以使用屬性和函數來獲取關於工具條的信息。
下面是應用對象關於工具條的屬性,這些屬性經常和函數GetApplication一起使用。這些屬性既可以控制工具條的顯示情況,也可以獲取關於工具條的信息。
ToolbarFrameTitle string   浮動顯示的工具條上的標題
ToolbarSheetTitle string   浮動顯示的sheet工具條上的標題
ToolbarPopMenuText string   工具條彈出菜單中的文字
ToolbarUserControl boolean   工具條是否可以使用彈出菜單來控制
ToolbarText   boolean   工具條中的小圖標是否顯示文字
ToolbarTips   boolean   工具條中小圖標是否顯示提示信息
函數獲取工具條信息-GetToolbar、GetToolbarPos
window.GetToolbar(Toolbarindex,visible{,alignment{,floatingtitle}})
其中,window為Frame的名稱;Toolbarindex是想要獲取信息的工具條的索引號,為整型數值;這兩個參數在函數執行之前就應該有明確的取值,可以是常量或相應類型的變量。其他參數必須為變量,在函數執行后保存關於工具條的特定信息。參數alignment為ToolbarAlignment枚舉類型的變量,用來保存工具條的對齊方式,該參數為可選;參數floatingtitle為string類型的變量,用來保存浮動工具條的標題。函數正確執行返回1,否則返回-1,如果任何參數為null則返回null。

*保存和恢復工具條
gf_SaveToolBar(window fa_win) //保存工具條
Int li_row,li_Offset,li_x,li_y,li_width,li_height //保存工具條的位置信息
Boolean lb_visible //工具條是否可見
Boolean lb_tips,lb_showtext //工具條是否有氣泡提示、是否顯示文字
ToolBarAlignment lta_align //工具條的對齊方式
String ls_title,ls_alignment,ls_section
If fa_win.GetToolBar(1,lb_visible,lta_align,ls_title) <> 1 Then Return –1 //獲取工具條信息
ls_section = fa_win.ClassName()   //獲取窗口名稱
If lb_visible Then //工具條是可見的
SetProfileString("test.ini",ls_section,"visible","True") //則保存visible屬性為“True”
Else //如果工具條是隱藏的               SetProfileString("test.ini",ls_section,"visible","False") //則保存為“False”
End If
Choose Case lta_align //根據工具條的對齊屬性進行保存
Case AlignAtLeft!
   ls_alignment = "left"
Case AlignAtRight!
   ls_alignment = "right"
Case AlignAtTop!
   ls_alignment = "Top"
        Case AlignAtBotTom!
   ls_alignment = "botTom"
Case Floating!
   ls_alignment = "floating"
End Choose
SetProfileString("test.ini",ls_section,"alignment",ls_alignment)   //保存對齊屬性
fa_win.GetToolBarPos(1,li_row,li_offset)        //獲取工具條的行和偏移信息
SetProfileString("test.ini",ls_section,"row",String(li_row))
SetProfileString("test.ini",ls_section,"offset",String(li_offset))
fa_win.GetToolBarPos(1,li_x,li_y,li_width,li_height)         //獲取高、寬、起始位置信息
SetProfileString("test.ini",ls_section,"x",String(li_x))
SetProfileString("test.ini",ls_section,"y",String(li_y))
SetProfileString("test.ini",ls_section,"width",String(li_width))/
SetProfileString("test.ini",ls_section,"height",String(li_height))
lb_showtext = GetApplication ( ).ToolbarText //工具條中的小圖標上是否顯示了文字
If lb_showtext Then
SetProfileString("test.ini",ls_section,"showtext","True")
Else
SetProfileString("test.ini",ls_section,"showtext","False")
End If
lb_tips = GetApplication ( ).ToolbarTips //工具條中的小圖標上是否顯示提示信息
If lb_tips Then
SetProfileString("test.ini",ls_section,"tips","True")
Else
SetProfileString("test.ini",ls_section,"tips","False")
End If
Return 1

恢復工具條
Int li_row,li_offset,li_x,li_y,li_width,li_height
Boolean lb_visible
String ls_showtext,ls_tips,ls_title,ls_alignment,ls_visible,ls_section
ToolBarAlignment lta_align
//判斷是否有工具條
If fa_win.GetToolBar(1,lb_visible,lta_align,ls_title) <> 1 Then Return –1 
ls_section = fa_win.ClassName() //讀取窗口的名稱
ls_visible = ProfileString("test.ini",ls_section,"visible","") //讀取工具條的visible屬性
If ls_visible <> "" Then                  //正確讀取了該屬性
ls_alignment = ProfileString("test.ini",ls_section,"alignment","Top") //讀取對齊方式
ls_title = ProfileString("test.ini",ls_section,"title","") //讀取工具條標題
If Upper(ls_visible) = "TRUE" Then               
   lb_visible = True 
Else
   lb_visible = False
End If
Choose Case Lower(ls_alignment) //將字符型轉換成Alignment類型
   Case "left"
    lta_align = AlignAtLeft!
   Case "right"
    lta_align = AlignAtRight!
   Case "Top"
    lta_align = AlignAtTop!
   Case "botTom"
    lta_align = AlignAtBotTom!
   Case "floating"
    lta_align = Floating!
   End Choose                  fa_win.SetToolBar(1,lb_visible,lta_align,ls_title) //設置當前工具條的信息
li_row = ProfileInt("test.ini",ls_section,"row",1)
li_offset = ProfileInt("test.ini",ls_section,"offset",0)
li_x = ProfileInt("test.ini",ls_section,"x",0)
li_y = ProfileInt("test.ini",ls_section,"y",0)
li_width = ProfileInt("test.ini",ls_section,"width",0)
li_height = ProfileInt("test.ini",ls_section,"height",0)
fa_win.SetToolBarPos(1,li_row,li_offset,False)
fa_win.SetToolBarPos(1,li_x,li_y,li_width,li_height) //設置工具條的位置 
ls_showtext = ProfileString("test.ini",ls_section,"showtext","True")   //是否顯示文字
If Upper(ls_showtext) = "TRUE" Then
   GetApplication ( ).ToolbarText = True
Else
   GetApplication ( ).ToolbarText = False
End If
ls_tips = ProfileString("test.ini",ls_section,"tips","True") //是否顯示提示信息
If Upper(ls_tips) = "TRUE" Then
   GetApplication ( ).ToolbarTips = True
Else
   GetApplication ( ).ToolbarTips = False
End If
End If
Return 1


*遍歷菜單項
Integer li_MenuTitle //保存菜單標題
Integer li_totalTitles //保存總標題數目
Integer li_MenuItem //保存菜單項
Integer li_totalItems //保存總菜單項數
li_totalTitles = UpperBound(This.MenuID.Item)
For li_MenuTitle = 1 To li_totalTitles
li_totalItems = UpperBound(This.MenuID.Item[li_MenuTitle].item)
For li_MenuItem = 1 To li_totalItems
   MessageBox(String(li_MenuTitle) + "/" + String(li_MenuItem),&
This.MenuID.Item[li_MenuTitle].Item[li_MenuItem].Text)
Next
Next


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM