VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

把快捷菜單當列表框使用(轉貼)

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
goto-dream



註冊時間: 2004-05-11
文章: 909


第 1 樓

發表發表於: 星期五 六月 11, 2004 2:06 pm    文章主題: 把快捷菜單當列表框使用(轉貼) 引言回覆

把快捷菜單當列表框使 thornbird313
http://mihu.agi-china.com/sdss/dispbbs.asp?boardID=2&ID=3808&page=5


最近在做一個選擇日期的類,主要是仿照Day and Time Picker控件,那個控件裡選擇日期時在彈出的窗口中可以用彈出來的快捷菜單來選擇月份,於是我就依葫蘆畫瓢也實現了該功能。接下來又想用快捷菜單來選擇年份,不過這就有點麻煩了:月份只有十二個,菜單有十二個項就可以了,年份可就太多了。於是靈機一動,給菜單的第一項和最後一項各加一個箭頭,按箭頭時可以改變各個菜單項(就是把菜單重定義)。這樣快捷菜單就可以當列表框來使了。沒什麼意義,就是挺好玩的。
以下是我寫的代碼,稍加改動就可以用了,因為是寫在了方法裡,沒法定義過程,所以只好用EXECSCRIPT()函數了。



代碼:
PUBLIC poCalendarTxtYear,pnCalendarYear,pnCalendarProcedurce
m.poCalendarTxtYear = THIS
m.pnCalendarYear = THIS.Parent.Container4.Spinner1.value

IF MOD(m.pnCalendarYear,10) = 0 AND m.pnCalendarYear <> 100
    m.pnCalendarYear = m.pnCalendarYear - 1
ENDIF
LOCAL lnMinYear,laYear(10)
m.lnMinYear = THIS.Parent.Container4.Spinner1.SpinnerLowvalue
DO CASE
CASE m.pnCalendarYear = 100
    FOR i = 1 TO 10
        laYear(i) = PADL(ALLTRIM(STR((99 + i))),4,"0")
    ENDFOR
CASE m.pnCalendarYear >= 9990
    FOR i = 1 TO 10
        laYear(i) = PADL(ALLTRIM(STR((9989 + i))),4,"0")
    ENDFOR
OTHERWISE
    FOR i = 1 TO 10
        laYear(i) = PADL(ALLTRIM(STR(FLOOR(m.pnCalendarYear/10)*10 + i)),4,"0")
    ENDFOR
ENDCASE

TEXT TO m.pnCalendarProcedurce NOSHOW
    IF BAR() <= 10
        m.poCalendarTxtYear.Parent.Container4.Spinner1.value = VAL(PROMPT())
        m.poCalendarTxtYear.Parent.Container4.Spinner1.InteractiveChange()
        RETURN
    ENDIF
    IF BAR() = 11
        m.pnCalendarYear = m.pnCalendarYear - 10
    ELSE
        m.pnCalendarYear = m.pnCalendarYear + 10   
    ENDIF
   
    LOCAL laYear(10),lnMinYear
    m.lnMinYear = m.poCalendarTxtYear.Parent.Container4.Spinner1.SpinnerLowvalue
    IF m.pnCalendarYear > 9999
        m.pnCalendarYear = 9999
    ELSE
        IF m.pnCalendarYear < lnMinYear
            m.pnCalendarYear = lnMinYear   
        ENDIF
    ENDIF

    DO CASE
    CASE m.pnCalendarYear = 100
        FOR i = 1 TO 10
            laYear(i) = PADL(ALLTRIM(STR((99 + i))),4,"0")
        ENDFOR
    CASE m.pnCalendarYear >= 9990
        FOR i = 1 TO 10
            laYear(i) = PADL(ALLTRIM(STR((9989 + i))),4,"0")
        ENDFOR
    OTHERWISE
        FOR i = 1 TO 10
            laYear(i) = PADL(ALLTRIM(STR(FLOOR(m.pnCalendarYear/10)*10 + i)),4,"0")
        ENDFOR
    ENDCASE
   
    RELEASE MENUS popRight
    *DEFINE POPUP popRight SHORTCUT RELATIVE FROM MROW(),MCOL()
    DEFINE BAR 11 OF popRight PROMPT " ∧"
    FOR i = 1 TO 10
        DEFINE BAR i OF popRight PROMPT laYear(i)
    ENDFOR
    DEFINE BAR 12 OF popRight PROMPT " ∨"
    ON SELECTION POPUP popRight EXECSCRIPT(m.pnCalendarProcedurce)
    ACTIVATE POPUP popRight   
ENDTEXT

DEFINE POPUP popRight SHORTCUT RELATIVE FROM MROW(),MCOL()
DEFINE BAR 11 OF popRight PROMPT " ∧"
FOR i = 1 TO 10
    DEFINE BAR i OF popRight PROMPT laYear(i)
ENDFOR
DEFINE BAR 12 OF popRight PROMPT " ∨"
ON SELECTION POPUP popRight EXECSCRIPT(m.pnCalendarProcedurce)
ACTIVATE POPUP popRight

RELEASE m.poCalendarTxtYear,m.pnCalendarYear,m.pnCalendarProcedurce



_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

          愛作夢
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
goto-dream



註冊時間: 2004-05-11
文章: 909


第 2 樓

發表發表於: 星期四 六月 17, 2004 12:35 pm    文章主題: 引言回覆

啟動下拉選單簡化版
代碼:
  DEFINE POPUP popRelatYes SHORTCUT RELATIVE FROM MROW(),MCOL()
DEFINE BAR 4  OF popRelatYes PROMPT '4444'
DEFINE BAR 3  OF popRelatYes PROMPT '3333'
DEFINE BAR 2  OF popRelatYes PROMPT '2222'
DEFINE BAR 1  OF popRelatYes PROMPT '1111'
DEFINE BAR 6  OF popRelatYes PROMPT '6666' BEFORE 4
ACTIVATE POPUP popRelatYes

_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

          愛作夢
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作