六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Delphi程序設計界面的動態調整

[摘要]如何設計美觀的程序一直是程序員的一大難題,很多程序員可以寫出很好的程序,但往往困于拙劣的外觀。其中如何使美觀的程序能在不同的環境下一樣美觀也同樣困擾著我們,我在一些程序的制作中掌握了一些使程序在不同...
如何設計美觀的程序一直是程序員的一大難題,很多程序員可以寫出很好的程序,但往往困于拙劣的外觀。其中如何使美觀的程序能在不同的環境下一樣美觀也同樣困擾著我們,我在一些程序的制作中掌握了一些使程序在不同環境同樣美觀的方法,希望給大家一點啟示。
不同環境一般有不同的色彩數和不同的分辨率等等,我只對這兩種環境進行說明。
一. 不同的色彩數
對于不同的色彩數我們可以用啟動時加以判斷并選擇相應的配色/圖片方案。可在窗口建立時加入程序如下:
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;
這樣就可以在不同的顏色環境下使用不同的配色方案,不同的圖標/圖片/色彩均在設計者的控制下,可制作出比較好的圖片/彩色環境,而不至于在真彩時很不錯,而在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. 判斷分辨率并選擇相應的分辨率方案;
(對每種分辨率設計一套控件/字體的大小方案用于在不同分辨率下選擇)
2. 固定窗口大小;
procedure TForm1.FormResize(Sender: TObject);
begin
width:=640; height:=480;
left:=0; top:=0;
end;
3. 使用procedure ScaleBy(M, D: Integer)這個過程來對可視控件進行大小調節(此過程不調節窗口大小,也不變動控件的left和top,對控件的大小按M/D比例來調節),具體如下:
procedure TForm1.FormCreate(Sender: TObject);
//假設原來的設計環境為800x600
var
FWidth:integer;
begin
if(Screen.width<> 800)then
begin
FWidth:=Width;
Scaled:=TRUE;
Font.Size:=(Width DIV FWidth)*Font.Size;//字體大小調整
ScaleBy(Screen.Width,800); //控件大小調整
Height:=longint(Height)*longint(Screen.Height)DIV 600;
Width:=longint(Width)*longint(Screen.Width)DIV 800;//窗口大小調整
end;
end;
用此種方法比較實用,而且使用比較簡單,基本能適應大多數環境。
4. 調節分辨率到所需的分辨率(即設計時的分辨率,此法對要求封閉的系統比較有用,如工控、觸摸屏等等)
procedure TForm1.FormCreate(Sender: TObject);
var
FWidth:integer;
DevMode:TDeviceMode;
begin
if(Screen.width<> 800)then
begin
  Result:=EnumDisplaySettings(nil,0,DevMode); //取得舊的顯示參數
  if Result then
  begin
  DevMode.dmFields:=DM_PELSWIDTH Or DM_PELSHEIGHT;
 DevMode.dmPelsWidth:=800;
  DevMode.dmPelsHeight:=600;
ChangeDisplaySettings(DevMode,0); //設置新的顯示參數
end;
end;
當然,我們還可以使用Delphi的法寶第三方控件,我找的有ResScale 控件,此控件能夠適應多種不同屏幕分辨率,自動改變TForm上控件位置及尺寸的控件,控件位置會儲存于.INI文件或注冊表中。你還可以找到更好的控件或者方法,找到的話告訴我一下mail me: [email protected] 


主站蜘蛛池模板: 天堂资源在线www中文 | 亚洲国产成人久久综合一 | 日本香蕉视频在线观看 | 伊人久久大线蕉香港三级 | 亚洲日本高清 | 一级黄色在线播放 | 欧美一区日韩精品 | 欧美系列在线观看 | 亚洲欧美日韩国产精品一区 | 一本到视频在线观看 | 亚洲精品另类 | 欧美性xxxxxx性 | 欧洲真实呦女网站 | 天天色天天插 | 亚洲24p| 亚洲精品一级毛片 | 视频在线免费观看网址 | 青娱乐青青| 日本japanese丰满高清成人视 | 欧美在线观看不卡 | 日韩中文字幕视频 | 亚洲三级网站 | 中文在线观看免费网站 | 青草视频免费在线观看 | 午夜啪啪片 | 在线国产91 | 日日噜噜夜夜狠狠久久丁香 | 日韩 在线视频精品 | 日韩 欧美 中文字幕 不卡 | 欧美丝袜办公室精品 | 伊人免费 | 五月天激情婷婷大综合 | 唐朝豪放女在线观看 | 天天做夜夜做久久做狠狠 | 日本一区二区高清免费不卡 | 三级国产视频 | 亚洲 欧美 日韩 另类 | 亚洲成a人片在线观看中文动漫 | 天天摸天天澡天天碰天天弄 | 天天做天天做天天综合网 | 日本一区二区三区在线看 |