?? bcb028.txt
字號:
C++ Builder中保持控件的位置及大小
C++ Builder中保持控件的位置及大小
C++ Builder/Delphi是Inprise(原Borland)公司廣受歡迎的可視化C++/Pascal開發(fā)工具,利用它可極大地加快應(yīng)用程序的開發(fā)速度。但是,也正因為其是可視化編程工具,將控件拖放到Form后,控件的位置就固定死了。隨著Form的大小或屏幕分辨率的改變,控件和Form本身的位置往往變得非常混亂。本文將介紹一些正確定位控件及Form的方法。
利用OnResize事件改變控件位置及大小
C++ Builder/Delphi中的Form控件有一個OnResize事件,F(xiàn)orm的所有與大小變化有關(guān)的動作可以觸發(fā)這個事件,包括Form的創(chuàng)建、最大化/最小化/還原、用鼠標(biāo)拖動改變大小等。因此,在此事件中動態(tài)地改變各個控件的位置可以確保其在Form中的相對位置正確。因為CBuilder與Delphi的程序有很多共同之處,所以這里只列出CBuilder的代碼。
下面的代碼將確保控件在任何情況下都居中。
程序一:
void __fastcall TForm1::FofmResize(TObject*Sender)
{
int midLoc=Width/2; //取Form的中點
Label1->Left=midLoc-Label1->Width/2; //設(shè)置Label1的位置為Form居中
Button1->Left=midLoc-Button1->Width/2; //設(shè)置Button1的位置為Form居中
}
稍微修改這段代碼,可以使控件保持在任何想要的位置。同樣,也可以利用OnResize事件改變控件的大小。當(dāng)Form中控件很多時,分別對每一個控件單獨調(diào)整位置是件非常麻煩的事,在TFrom類中有一個Controls數(shù)組維護所有From中的控件,利用它可方便地對所有控件進行操作。下面是其源代碼:
程序二:
void __fastcall TForm1::FormResize(TObject*Sender)
{
int midLoc=Width/2;
TControl * ChildControl;
fof(int i=0; i<ControlCount; i++)
{//遍歷Controls數(shù)組,ControlCount是數(shù)組元素個數(shù)
ChildControl = Controls[i];
ChildCotrol->Left = midLoc-ChildControl->Width/2;
}
}
利用“容器”控制成組控件位置
上面的代碼對維持所有控制到統(tǒng)一位置非常方便,但不利于對成組控件進行操作。
在C++Builder中提供了一些能安放其它控件的“容器”控件,如TPanel、TGroupBox等,可以將控件放在“容器”控件中:然后對“容器”控件進行操作,從而達到成組控制控件的目的。利用“容器”控件控制控件位置的結(jié)果,所有控件都自動居中,但是在GroupBox1控件中的子控件卻沒有居中,這是因為Controls數(shù)組只維護Form的直接子控件,對Form中控件的子控件則無能為力。因此,GroupBox1控件中的子控件仍然在初始位置,必須編寫相應(yīng)代碼動態(tài)控制其位置及大小。這種技術(shù)非常重要,特別是在動態(tài)改變“容器”控件大小時。其實,“容器”控件與From一樣有Controls數(shù)組,只要對其進行與程序2類似的操作即可。代碼見程序3
程序三
void __fastcall TForm1::FormResize(TObject*Sender)
{
int midLoc=Width/2;
TControl * ChildControl;
for(int i=0;i<ControlConnt; i++)
{//遍歷Controls數(shù)組,ControlCount是數(shù)組元素個數(shù)
ChildControl = Controls[i];
ChildControl->Left = midLoc-ChildControl->Width/2;
if (ChildControl ==GroupBox1)
{//若控件是GroupBox,對其子控件進行操作
int SubMidLoc=GroupBox1->Width/2;
for(int j=0;j<GroupBox1->ControlCount;j++)
{//遍歷GroupBox1的Controls數(shù)組。ControlCount是數(shù)組元素個數(shù)
ChildControl=GroupBox1->Controls[j];
ChildContro1->Left=SubMidLoc-ChildControl->Width/2;
}
}
}
}
在不同分辨率下維護窗體位置及大小
商業(yè)程序一般要在各種分辨率下運行,正確判斷當(dāng)前分辨率就顯得很重要。Windows函數(shù)GetDeviceCaps可以返回任意設(shè)備描述表中設(shè)備大小。
GetDeviceCaps有兩個參數(shù),第一個是要查詢的設(shè)備描述表句柄,第二個是要查詢參數(shù)的類型,其中HORZRES,VERTRES分別代表屏幕水平和垂直分辨率。程序4是獲得當(dāng)前屏幕分辨率的代碼。一般可將這段代碼放在“工程文件”(如Project1.cpp)中,并將i、j定義為全局變量,然后可以利用前面介紹的技術(shù)控制各種屏幕元素的大小及位置。
程序四:
HDC hdc=GetDC(NULL); //獲得屏幕設(shè)備描述表句柄
int i=GetDeviceCaps(hdc,HORZRES); //查詢屏幕水平分辨率,并返回在變量i中
int j=GetDeviceCaps(hdc,VERTRES); //查詢屏幕水平分辨率,并返回在變量j中
ReleaseDC(NULL,hdc); //釋放屏幕設(shè)備描述表
用同樣的方法,可以對不同大小紙張的打印進行控制,在這里不再贅述,有興趣的朋友可查看GetDevice
Caps幫助及打印幫助。
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合色播五月|
精品国产91乱码一区二区三区|
久久蜜桃av一区精品变态类天堂|
日本亚洲电影天堂|
日韩丝袜情趣美女图片|
奇米一区二区三区|
精品久久久久久久人人人人传媒|
麻豆国产精品一区二区三区|
日韩欧美在线综合网|
蜜桃精品视频在线|
亚洲精品在线电影|
岛国av在线一区|
亚洲免费大片在线观看|
欧美怡红院视频|
捆绑变态av一区二区三区|
欧美本精品男人aⅴ天堂|
国产成人在线电影|
亚洲免费在线观看|
91精品国产综合久久久久久久久久|
奇米精品一区二区三区在线观看一|
日韩欧美久久久|
高清不卡在线观看|
亚洲综合在线观看视频|
欧美一区二区在线免费观看|
美女一区二区三区在线观看|
国产丝袜美腿一区二区三区|
av在线不卡电影|
亚洲18影院在线观看|
久久你懂得1024|
91久久精品一区二区三|
全国精品久久少妇|
国产精品国产馆在线真实露脸|
在线视频一区二区三区|
激情欧美一区二区|
亚洲另类一区二区|
久久天堂av综合合色蜜桃网
|
国产精品色婷婷|
色婷婷av一区二区三区软件|
首页亚洲欧美制服丝腿|
日韩三级精品电影久久久|
久久精品噜噜噜成人88aⅴ
|
精品欧美一区二区在线观看|
国产成人免费av在线|
亚洲成人综合视频|
国产日韩视频一区二区三区|
欧美色区777第一页|
国产福利视频一区二区三区|
午夜久久福利影院|
国产精品乱人伦一区二区|
日韩一区国产二区欧美三区|
a4yy欧美一区二区三区|
精品影院一区二区久久久|
亚洲一区中文在线|
最新久久zyz资源站|
久久影院视频免费|
日韩色在线观看|
欧美午夜精品一区二区蜜桃|
成人蜜臀av电影|
国产乱子伦视频一区二区三区|
亚洲高清免费观看高清完整版在线观看|
久久久久国产精品厨房|
91精品国产综合久久久久久久|
91网站视频在线观看|
粉嫩av一区二区三区粉嫩|
欧美a一区二区|
天天色综合天天|
亚洲一区在线观看免费观看电影高清
|
久久精品视频一区二区|
欧美一区日本一区韩国一区|
色婷婷久久久综合中文字幕|
成人激情免费电影网址|
国产乱子轮精品视频|
久久精品国产亚洲a|
天堂精品中文字幕在线|
亚洲风情在线资源站|
依依成人综合视频|
一区二区三区四区蜜桃|
最好看的中文字幕久久|
亚洲码国产岛国毛片在线|
一区精品在线播放|
中文无字幕一区二区三区
|
亚洲少妇中出一区|
国产精品久久久久三级|
国产日韩影视精品|
亚洲国产精品精华液2区45|
国产目拍亚洲精品99久久精品|
久久免费电影网|
国产亚洲欧洲997久久综合|
久久久亚洲高清|
亚洲国产精品成人综合|
国产精品视频一二|
亚洲色图欧洲色图|
尤物在线观看一区|
视频一区视频二区中文|
免费成人性网站|
国产伦精品一区二区三区免费迷|
色激情天天射综合网|
精品视频123区在线观看|
国产精品私房写真福利视频|
91精品国产欧美一区二区18|
日本高清不卡视频|
成人国产精品免费观看动漫|
99久久精品国产一区二区三区|
日本精品一级二级|
欧美性一区二区|
久久日一线二线三线suv|
国产性天天综合网|
日韩av网站在线观看|
91精品国产91综合久久蜜臀|
欧美成人精品高清在线播放|
日韩女优av电影|
91精品国产一区二区三区香蕉|
91麻豆精品国产综合久久久久久|
久久综合九色欧美综合狠狠|
亚洲一区二区中文在线|
国产精品538一区二区在线|
亚洲另类色综合网站|
中文字幕在线不卡视频|
国产精品国产三级国产a|
一本大道av一区二区在线播放
|
久久午夜羞羞影院免费观看|
久久激情综合网|
成人免费在线播放视频|
91精品国产欧美一区二区18|
国产乱码精品一区二区三区av
|
亚洲六月丁香色婷婷综合久久
|
国产精品资源在线看|
日韩成人午夜精品|
欧美卡1卡2卡|
日韩激情在线观看|
97se亚洲国产综合自在线不卡|
欧美日韩在线免费视频|
日韩av在线发布|
国产色综合久久|
亚洲成人动漫av|
国产精品一区二区久久不卡|
久久久久久电影|
成人免费视频视频|
午夜欧美电影在线观看|
欧美一区二区精品在线|
麻豆精品一区二区|
欧美久久久久久蜜桃|
亚洲天堂a在线|
日韩av电影免费观看高清完整版在线观看|
一本到高清视频免费精品|
亚洲一级在线观看|
日韩一区二区在线观看视频|
亚洲一级二级在线|
一本大道久久精品懂色aⅴ
|
色综合天天综合网国产成人综合天|
粉嫩欧美一区二区三区高清影视|
日韩欧美一区二区久久婷婷|
欧美国产一区二区|
成人动漫精品一区二区|
国产精品乱子久久久久|
色综合久久中文综合久久97|
国产欧美日韩综合精品一区二区|
天天综合天天综合色|
91在线无精精品入口|
亚洲欧美激情视频在线观看一区二区三区|
国产真实乱子伦精品视频|
国产欧美日韩三级|
欧美成人猛片aaaaaaa|
6080国产精品一区二区|
色激情天天射综合网|
欧美人牲a欧美精品|
免费人成网站在线观看欧美高清|
久久99精品久久只有精品|
免费欧美在线视频|
国产麻豆精品theporn|
国内成人免费视频|
色欧美乱欧美15图片|
精品av综合导航|
亚洲人成网站精品片在线观看|
午夜精品久久久久久久99水蜜桃|
免费成人在线视频观看|
久久se精品一区精品二区|
久久电影国产免费久久电影|
天天影视涩香欲综合网|
亚洲成人免费视|
五月婷婷另类国产|
韩国一区二区视频|
天天操天天干天天综合网|
国产午夜亚洲精品午夜鲁丝片|
国产三区在线成人av|
国产精品久久毛片av大全日韩|
亚洲一区二区三区四区的|
男人的j进女人的j一区|
亚洲va欧美va天堂v国产综合|
午夜电影网一区|
欧日韩精品视频|
欧美美女一区二区三区|
成人免费毛片嘿嘿连载视频|
国产精品99久久久久久有的能看|
老司机精品视频线观看86|
久久精品99国产国产精|
北条麻妃一区二区三区|
欧美群妇大交群的观看方式|
欧美激情综合五月色丁香小说|
亚洲综合在线视频|