向大家请教用什么控件才能使点击窗体最大化的时候,窗体上的内容才能够成比例的跟着变化(我跟大家说了,大家可别见笑,我以前做的那些工具的界面我都是把窗体最大化那项给设置成了false的)
解决方案 »
- 使用WINDOW API 控制delphi的tdxbarcontrol。应该如何控制
- 有上海浦东软件园的程序员?听说那里薪水不错。顶者接分。
- 达到这样的效果,应怎样编?
- 如何做出象OFFICE中"选项"中的那种有多页的效果,DELPHI中只有TpageControl呀,不能做到
- 图片显示问题
- 将string字符串'20130710152236'转为20130710152236???
- 各位新毕业的学生怎么对付那几年的工作经验?
- 有誰碰見過這種異常錯誤 abstract error ;
- 高手都死了吗,来这看看,如果能给我解决的话,我有三个贴的分都给你
- 如何获取当前计算机名称???
- RadioGroup中的Radio通过Items输入,好像Radio只能竖的排列?
- 我用ctrl上下方向键时候,为何总是不能移动控件?
1、组件的容器应用;常规使用ATTOP/ATCLIENT/ATCUSTOM/ATLEFT/ATNONE/ATRIGHT/ATBOTTOM。
2、判断窗口的RESIZE倍数,取得HEIGHT/WINDTH各倍数,重新绘可视组件。(如果是自定义的VCL或是三方的,特别是FRAME的组件,就不一定能正确缩放)。
具体做法是取得所有可视对象,包括在Tab上的所有控件,因为Tab里面的也要缩放的
然后借助每个控件的TAG来记录要如何缩放
缩放分9类
FIXEDRIGHT 控件总是右对齐(水平方向而已) //这里主要是按钮,因为没有人会去把按钮变大
FIXEDBOTTOM 控件总是底部对齐 (垂直方向而已) //同上
FIXEDRIGHTBOTTOM 控件总是右底对齐 (水平和垂直方向) //例子:假设Form上有个关闭按钮,它位于右底侧,在你缩放窗口的时候,它总会是保持窗口相对位置
SCALE //比例缩放,随着窗口的大小变大而变大,变小而变小,象记事本的MEMO组件,就是啦
SCALERIGHT='ScaleToRight' //横向比例缩放,象IE窗口那样,如果左边有树型视图,右边是个DBGRID的话,那么DBGRID宽度总是随着窗口宽度而自动调整
SCALEBOTTOM //道理同上,只是改成了下面的
//下面这两个是上面的集合,可以实现,MDI窗口中的子窗口缩放,假设MDI上面有IEButtonBar,左边有TreeView,那么子窗口就可以是下面的啦,当然,子窗口也具备缩放效果的
FIXEDRIGHT_SCALEBOTTOM='FixedToRight&ScaleToBottom'
FIXEDBOTTOM_SCALERIGHT='FixedToBottom&ScaleToRight'在每个控件中的TAG写上面的标识符,然后在Form_Load中,判断每个控件的TAG,当然对于TAB必须遍历,使用数组记录他们现在的WIDTH,HEIGHT,X,Y,窗口的也要
然后在Resize属性中,根据当前的参数做除法和加法运算,例如:
memo1.Width=self.Width/newwidth,memo1.Height=memo1.Y.................
记住,你还需要一个CONTROL数组,这样才能做到通用,只要实例化这个类,然后在Form_Load写
TAutoResize.register(THIS)
Form_Resize写
TAutoResize.Resize(Resize事件的参数)最后补充一点的是,缩放需要一个最小化尺度,象WIN2000的任务管理器,它缩放到某个程度的时候就不能再缩小,这么做的好处是避免界面的控件布局混乱,其实这在DELPHI只要指定MinWidth和MinHeight就可以啦本来想把我写的TAutoResize类放上来的,可惜这里似乎不能上传附件,但是我已经告知了实现方法,希望有兴趣的朋友可以一试
是不是比如说把窗体上的所有控件的anchors的akleft和aktop设置成true,把其他的都设置成false,这样的话,窗体上的控件都保持左上对齐,这样就保持了窗体上的整体布局不变???????????????????????
ScreenWidth: LongInt = 1024; {I designed my form in 1024×768 mode.}
ScreenHeight: LongInt = 768;
{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
scaled := true;
if (screen.width <> ScreenWidth) then
begin
height := longint(height) * longint(screen.height) div ScreenHeight;
width := longint(width) * longint(screen.width) div ScreenWidth;
scaleBy(screen.width, ScreenWidth);
end;
end;学习的别人的代码 感觉效果还可以
你甚至可以在设计期就可以查看效果。