上上篇帖子的排序方法有點呆板而且一不小心就有bug。
下面貼乙個排序的儲存過程,原理一樣!但是簡單,也避免了一些bug;
use [student]
go/****** object: storedprocedure [dbo].[sp_menutree_sort] script date: 11/30/2011 21:49:58 ******/
set ansi_nulls on
goset quoted_identifier on
goalter proc [dbo].[sp_menutree_sort]
(@menuid varchar(20),
@sortdir bit --1-up;0-down;)as
declare @parentid varchar(20) --父節點id
declare @menuid2 varchar(20) --要交換menuorder的選單項的id
declare @menuorder1 int
declare @menuorder2 int
select @parentid=parentid,@menuorder1=menuorder from menutree where menuid=@menuid
if @sortdir = 1 --向上移動
begin
select top 1 @menuid2 = menuid,@menuorder2=menuorder from menutree where menuorder < @menuorder1 and parentid = @parentid order by menuorder desc
endelse
begin
select top 1 @menuid2=menuid,@menuorder2=menuorder from menutree where menuorder > @menuorder1 and parentid = @parentid order by menuorder asc
endbegin tran --交換menuorder以實現排序
update menutree set menuorder = @menuorder2 where menuid=@menuid
update menutree set menuorder = @menuorder1 where menuid=@menuid2
if @@error = 0
commit tran
else
rollback tran
一些列名自己處理!如果只改引數用地話會出錯!
只要改乙個地方,就看你注意不注意了!嘿嘿!
遍歷選單項
遍歷任何窗體的menuitem 用了兩個多小時 略做修改,就可以實現其他功能,getmenuiteminfo提供的資訊足夠用了 procedure explorermenuitem menuhandle thandle varmenuindex integer menucaptionarray ar...
選單項引數
引數一 選單項 引數二 mf bycommand 表明 引數一 給出了選單項的識別符號。如果mf bycommand和mf position都沒被指定,則mf bycommand為預設標誌。mf byposition 表明 引數一 給出了選單項的以零為基準的相對位置。mf disabled 表明選單...
BREW的選單項
實現幾個選單選項的顯示。brew 的訊息機制 2 case 為evt key 裡面則處理什麼按鍵被按,並進行響應處理。問題 brh bar 都可以生成,但 resource editor 不能生成 res.h。解決 1 檢查 沒錯。2 將brew sdk2.0 換成3.0 仍然如此。3 經過研究,發...