VCL 中的 Windows API 函数(6): BeginDeferWindowPos
下面先用常规方法实现对 Panel1 中的一组 Button 进行调整, 然后再用上面三个函数重新实现.
本例效果图:

代码文件:
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls; type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.RadioButton1Click(Sender: TObject);
var
num,i: Integer;
btn: TButton;
L,T,W,H: Integer;
begin
num := Panel1.ControlCount; L := ;
T := ;
W := (Panel1.ClientWidth - L * (num+)) div num;
H := (Panel1.ClientHeight - T * (num+)) div num; for i := to num - do
begin
if Panel1.Controls[i] is TButton then
begin
btn := TButton(Panel1.Controls[i]);
btn.Left := L;
btn.Top := (H + T) * i + T;
btn.Width := W;
btn.Height := H;
end;
end;
end; procedure TForm1.RadioButton2Click(Sender: TObject);
var
num,i: Integer;
btn: TButton;
L,T,W,H: Integer;
begin
num := Panel1.ControlCount; L := ;
T := ;
W := (Panel1.ClientWidth - L * (num+)) div num;
H := (Panel1.ClientHeight - T * (num+)) div num; for i := to num - do
begin
if Panel1.Controls[i] is TButton then
begin
btn := TButton(Panel1.Controls[i]);
btn.Left := (W + L) * i + L;
btn.Top := T;
btn.Width := W;
btn.Height := H;
end;
end;
end; end.
VCL 中的 Windows API 函数(6): BeginDeferWindowPos的更多相关文章
- VCL 中的 Windows API 函数(5): AlphaBlend
		
AlphaBlend 是指定图像混合透明的函数, 在 Graphics.GraphUtil.RibbonStyleActnCtrls 单元用到. 下面的测试是把一张图片显示在窗体, 并可以调整透明度. ...
 - VCL 中的 Windows API 函数(2): ActivateKeyboardLayout
		
ActivateKeyboardLayout 分别在 Controls.DBGrids.Grids 单元用到, 基本都是如下语句: ActivateKeyboardLayout(Screen.Defa ...
 - VCL 中的 Windows API 函数(1): AbortDoc
		
AbortDoc: 该函数终止当前打印作业并删除最好一次调用 StartDoc 函数写入的所有信息. 该函数在 Printers 单元的应用:AbortDoc(Canvas.Handle);
 - VCL 中的 Windows API 函数(4): AdjustWindowRectEx
		
AdjustWindowRectEx 用在了 Forms.DBCtrls 单元. AdjustWindowRectEx 可以根据窗口样式获取的边缘尺寸. 测试: var R: TRect; beg ...
 - MFC中调用Windows API函数的方式
		
windows aoi 函数的调用前面加::
 - 在VBA中使用Windows API
		
VBA是一种强大的编程语言,可用于自定义Microsoft Office解决方案.通过使用VBA处理一个或多个Office应用程序对象模型,可以容易地修改Office应用程序的功能或者能够使两个或多个 ...
 - Windows API 函数列表 附帮助手册
		
所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...
 - Windows API函数大全(完整)
		
Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一 ...
 - [windows菜鸟]Windows API函数大全(完整)
		
Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一 ...
 
随机推荐
- 【Android】3.5 示例5--多地图展示
			
分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 3.5 示例5--多地图展示 一.简介 地图控件自v2.3.5版本起,支持多实例,即开发者可以在一个页面中建立 ...
 - 【Android】9.3 自定义列表视图的外观
			
分类:C#.Android.VS2015: 创建日期:2016-02-18 一.简介 自定义的列表视图通常用Resources/Layout文件夹下的axml文件中的资源来声明,适配器则通过Id去加载 ...
 - tornado日志使用详解
			
1.需求 将http访问记录,程序自定义日志输出到文件,按天分割,保留最近30天的日志. 2.使用示例 init_logging("%s/QYK.%s.%s.log" % (log ...
 - windows  简单api应用
			
//调用系统函数 将鼠标移动到相应位置 [DllImport("user32.dll", EntryPoint = "SetCursorPos")] publi ...
 - 使用 Electron 构建桌面应用(拖动控制篇)
			
使用 Electron 构建桌面应用(拖动控制篇) 当窗口被定义了大小,我们也就是在自定义这个窗口,使得它不可拉伸没有框架,让它看起来就像一个真正的声效器浮在桌面上. 现在问题来了 – 要如何移动或者 ...
 - hdu1495(经典bfs,平分水问题)
			
思路:搜索题,第一次做这种类型的题目吧,一开始表示不怎么明白题意所说的东东.其实就是要你判断可乐能不能被平分........ 有六种状态,从a瓶到b瓶,a-->c b-->a b- ...
 - dvwa 源码分析(一)  ---  setup.php分析
			
我们分析的第一个文件是setup.php,也是程序的安装文件. <?php define( 'DVWA_WEB_PAGE_TO_ROOT', '' ); require_once DVWA_WE ...
 - 【Visual Studio】解决方案未保存,请先保存你的解决方案,然后再管理Nuget包
			
上网下的Demo,文件夹中没有.sln文件,用VS打开.csproj文件来打开方案.此时可能因为一些引用问题想打开Nuget包管理器,会弹出如下提示: 解决方案未保存,请先保存你的解决方案,然后再管理 ...
 - [mmc]设备树节点含义
			
&mmc3 { status = "okay"; dmas = <&edma &edma >; dma-names = "tx&quo ...
 - linux并发concurrency控制
			
解决竞态(race conditions)最根本的途径是对共享资源的互斥访问,访问共享资源的代码区被称为临界区(critical sections),对临界区的代码需要以某种互斥机制加以保护.常见的互 ...