• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    VB5.0 設計適應顯示屬性的界面

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 11次 | 進入軟件測試論壇討論

    領測軟件測試網   在設計一般應用軟件時,總希望設計的軟件, 無論顯示器分辨率設置是40X480, 800X600還是1024X768,無論顯示器設置是在大字體還是小字體軟件都能正常運行,并且有美觀一致的界面。本人在用VB5.0設計《英語集成訓練系統V2.0》時,亦遇到這樣的麻煩。 下面解釋克服這一問題的方法。

      一: 使 界 面 居 中

      為 了 使 界 面 元 素 能 在 各 種 顯 示 分 辨 率 下 均 有 合 理 的 布 局, 一 種 方 法 就 是 獲 取 當 前 顯 示 分 辨 率, 然 后 根 據 這 一 分 辨 率 計 算 界 面 各 元 素 的 位 置 和 大 小, 并 進 行 設 置。 這 種 方 法 雖 然 能 解 決 界 面 元 素 布 局 問 題, 但 需 要 知 道 每 個 元 素 的 位 置 和 大 小, 程 序 煩 瑣。

      我 這 里 采 用 的 方 法 是: 首 先 設 計 一 個 具 有 極 大 化, 無 邊 界, 無 標 題, 無 控 制 盒 的 窗 體, 然 后 在 其 上 放 置 一 個 容 器 控 件Picture, 在Picture 中 再 放 置 其 它 控 件。 在 窗 體Load 事 件 中 根 據 當 前 的 顯 示 分 辨 率 居 中Picture, 從 而 實 現 了 居 中 整 個 界 面。 具 體 代 碼 如 下:

      Private Sub Form_Load()

       Call CenterControl(Picture1)

      End Sub

      Public Sub CenterControl(obj As Object)

       Dim cx, cy As Single

       cx =(Screen.Width/Screen.

       TwipsPerPixelX-obj.Width)/2#

       cy =(Screen.Height/Screen.

       TwipsPerPixelY-obj.Height)/2#

       obj.Left = cx

       obj.Top = cy

      End Sub

      二: 使 界 面 適 應 大 字 體 與 小 字 體

      Win95 在 創 建 控 件 時, 會 根 據 當 前 顯 示 屬 性 為 大 字 體 或 小 字 體 來 作 相 應 調 整。 盡 管 應 用 程 序 傳 送 的 參 數( 控 件 位 置 和 尺 寸) 是 一 致 的, 但 實 際 控 件 的 位 置 和 尺 寸 在 這 兩 種 情 形 下 并 不 一 樣。 如 果 應 用 程 序 僅 僅 考 慮 一 般 小 字 體 的 情 況, 在 大 字 體 下 界 面 則 十 分 難 看 混 亂, 甚 至 無 法 操 作。 為 解 決 這 一 問 題, 首 先 應 了 解 當 前 顯 示 器 設 置, 這 可 通 過 系 統 注 冊 表 來 獲 取。 下 面 的 程 序 采 用 了 另 一 種 方 法: 首 先 在 一 個 映 射 模 式 為Pixel 的 窗 體 中 放 置 一 個 控 件, 在 顯 示 屬 性 為 小 字 體 的 設 計 環 境 下 首 先 看 一 下 控 件 的 初 始 位 置x,y, 然 后 在 窗 體 的Load 事 件 中 計 算 出X 和Y 方 向 的 放 大 比 例xFac,yFac:

      Private Sub Form_Load()

       xFac = 400# / mmlhwnd.Left

       yFac = 400# / mmlhwnd.Top

      End Sub

      其 中,mmllhwnd 為 放 置 在 窗 體 中 的 控 件, 初 始 的 坐 標 為400,400。

      最 后 在 各 個 需 要 調 整 界 面 的 窗 體Load 事 件 中 調 用 下 列 子 程 序, 調 整 各 控 件 的 位 置 與 大 。

      Public Sub CorrectForm(fm As Form)

       Dim C As Control

       For Each C In fm.Controls

        If TypeOf C Is Timer Then

        ElseIf TypeOf C Is CommonDialog Then

        ElseIf TypeOf C Is Line Then

         C.X1 = C.X1 * xFac

         C.Y1 = C.Y1 * yFac

         C.X2 = C.X2 * xFac

         C.Y2 = C.Y2 * yFac

        Else

        C.Left = C.Left * xFac

        C.Top = C.Top * yFac

        If TypeOf C Is SSCommand Then

        C.Width = C.Width * xFac

        C.Height = C.Height * yFac

        C.FontSize = C.FontSize * xFac

        ElseIf TypeOf C Is CommandButton Then

         C.Width = C.Width * xFac

         C.Height = C.Height * yFac

         C.FontSize = C.FontSize * xFac

        ElseIf TypeOf C Is ListBox Then

         C.Width = C.Width * xFac

         C.Height = C.Height * yFac

         C.FontSize = C.FontSize * xFac

        ElseIf TypeOf C Is ComboBox Then

         C.Width = C.Width * xFac

         C.FontSize = C.FontSize * xFac

        End If

       End If

      Next C

      End Sub

    上 述 程 序 中 僅 列 舉 了 幾 個 典 型 的 控 件, 如 果 窗 體 中 還 有 其 它 類 型 的 控 件, 仿 造 上 述 程 序 加 入 對 這 些 控 件 類 型 的 處 理 即 可 

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>