• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

        Delphi程序設(shè)計界面的動態(tài)調(diào)整

        Delphi程序設(shè)計界面的動態(tài)調(diào)整

        更新時間:2022-05-01 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        如何設(shè)計美觀的程序一直是程序員的一大難題,很多程序員可以寫出很好的程序,但往往困于拙劣的外觀。其中如何使美觀的程序能在不同的環(huán)境下一樣美觀也同樣困擾著我們,我在一些程序的制作中掌握了一些使程序在不同環(huán)境同樣美觀的方法,希望給大家一點啟示。
        不同環(huán)境一般有不同的色彩數(shù)和不同的分辨率等等,我只對這兩種環(huán)境進行說明。
        一. 不同的色彩數(shù)
        對于不同的色彩數(shù)我們可以用啟動時加以判斷并選擇相應的配色/圖片方案。可在窗口建立時加入程序如下:
        procedure TForm1.FormCreate(Sender: TObject);
        var
        colorbits:Integer;
        begin
        colorbits :=GetDeviceCaps( h, BITSPIXEL );
        case colorbits of
        1: //黑白配色方案;
        ....
        4: //16色配色方案;
        ....
        8: //256色配色方案;
        ....
        16: //16位色配色方案;
        ....
        24: //24位色配色方案;
        ....
        32: //32位色配色方案;
        ....
        end;
        end;
        這樣就可以在不同的顏色環(huán)境下使用不同的配色方案,不同的圖標/圖片/色彩均在設(shè)計者的控制下,可制作出比較好的圖片/彩色環(huán)境,而不至于在真彩時很不錯,而在16色時一塌糊涂。
        二. 不同的分辨率
        不同的分辨率下原來的窗口界面可能變得面目全非,對于這種問題,我一般采取以下方式:
        先取得分辨率方法有如下:
        procedure TForm1.FormCreate(Sender: TObject);
        var
        sx,sy:Integer;
        begin
        sx := GetSystemMetrics(SM_CXSCREEN); //分辨率寬
        sy := GetSystemMetrics(SM_CYSCREEN); //分辨率高
        end;
        也可以用Screen.width/Screen.Height來取得
        也可以用Var DevMode:TDeviceMode;
        Begin
        EnumDisplaySettings(nil,0,DevMode)
        sx := DevMode.dmPelsWidth
        sy := DevMode.dmPelsHeight 來取得
        end
        也可以用sx := GetDeviceCaps(GetDC(Form1.Handle), HORZRES)
        sx :=GetDeviceCaps(GetDC(Form1.Handle), VERTRES) 來取得而后有以下幾種方法:
        1. 判斷分辨率并選擇相應的分辨率方案;
        (對每種分辨率設(shè)計一套控件/字體的大小方案用于在不同分辨率下選擇)
        2. 固定窗口大小;
        procedure TForm1.FormResize(Sender: TObject);
        begin
        width:=640; height:=480;
        left:=0; top:=0;
        end;
        3. 使用procedure ScaleBy(M, D: Integer)這個過程來對可視控件進行大小調(diào)節(jié)(此過程不調(diào)節(jié)窗口大小,也不變動控件的left和top,對控件的大小按M/D比例來調(diào)節(jié)),具體如下:
        procedure TForm1.FormCreate(Sender: TObject);
        //假設(shè)原來的設(shè)計環(huán)境為800x600
        var
        FWidth:integer;
        begin
        if(Screen.width<> 800)then
        begin
        FWidth:=Width;
        Scaled:=TRUE;
        Font.Size:=(Width DIV FWidth)*Font.Size;//字體大小調(diào)整
        ScaleBy(Screen.Width,800); //控件大小調(diào)整
        Height:=longint(Height)*longint(Screen.Height)DIV 600;
        Width:=longint(Width)*longint(Screen.Width)DIV 800;//窗口大小調(diào)整
        end;
        end;
        用此種方法比較實用,而且使用比較簡單,基本能適應大多數(shù)環(huán)境。
        4. 調(diào)節(jié)分辨率到所需的分辨率(即設(shè)計時的分辨率,此法對要求封閉的系統(tǒng)比較有用,如工控、觸摸屏等等)
        procedure TForm1.FormCreate(Sender: TObject);
        var
        FWidth:integer;
        DevMode:TDeviceMode;
        begin
        if(Screen.width<> 800)then
        begin
          Result:=EnumDisplaySettings(nil,0,DevMode); //取得舊的顯示參數(shù)
          if Result then
          begin
          DevMode.dmFields:=DM_PELSWIDTH Or DM_PELSHEIGHT;
         DevMode.dmPelsWidth:=800;
          DevMode.dmPelsHeight:=600;
        ChangeDisplaySettings(DevMode,0); //設(shè)置新的顯示參數(shù)
        end;
        end;
        當然,我們還可以使用Delphi的法寶第三方控件,我找的有ResScale 控件,此控件能夠適應多種不同屏幕分辨率,自動改變TForm上控件位置及尺寸的控件,控件位置會儲存于.INI文件或注冊表中。你還可以找到更好的控件或者方法,找到的話告訴我一下mail me: sjj@netease.com 

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 亚洲成a人片毛片在线| 亚洲福利精品一区二区三区| 131美女爱做免费毛片| 国产精品无码免费播放| 亚洲av日韩片在线观看| 91情国产l精品国产亚洲区| 亚洲人成色77777在线观看| 国产99久久久国产精免费| 国产成人精品免费午夜app| 内射无码专区久久亚洲| 羞羞网站在线免费观看| 青青青国产在线观看免费网站| 又黄又大又爽免费视频| 亚洲网址在线观看你懂的| 亚洲AV无码专区亚洲AV桃| 亚洲电影免费在线观看| 免费国产成人高清在线观看麻豆| 国产偷国产偷亚洲高清人| 美女视频黄的全免费视频| 亚洲欧美日韩中文字幕在线一区| 四虎免费久久影院| 亚洲精品一二三区| 67pao强力打造国产免费| 国产91在线|亚洲| 免费无码成人AV在线播放不卡| 亚洲一级黄色视频| 亚洲日韩中文字幕一区| 国产成人久久AV免费| 国产亚洲视频在线播放| 美景之屋4在线未删减免费| 久久被窝电影亚洲爽爽爽| 思思久久99热免费精品6 | 色欲aⅴ亚洲情无码AV| 99在线视频免费观看视频| 久久伊人久久亚洲综合| 中文字幕免费观看全部电影| 免费人成在线观看网站品爱网日本| 本免费AV无码专区一区| 亚洲一卡2卡4卡5卡6卡残暴在线| 91精品手机国产免费| 亚洲视频在线一区|