zoukankan      html  css  js  c++  java
  • 获取窗口矩形的四种方法: GetClientRect、ClientRect、GetWindowRect、BoundsRect

    其中 GetClientRect、ClientRect 获取的是窗口的客户区矩形;

    GetWindowRect、BoundsRect 是获取窗口矩形;

    另外, 还有一个 Windows.GetClientRect(使用方法同 GetWindowRect, 它们都是 API 函数),
    这里使用的 GetClientRect 是 Forms.GetClientRect.

    本例效果图:


    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormPaint(Sender: TObject);
        procedure FormResize(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Color := clWhite;
    end;
    
    procedure TForm1.FormPaint(Sender: TObject);
    const
      str = 'L:%d; T:%d; R:%d; B:%d - ';
    var
      R1,R2,R3,R4: TRect;
      buf: array[Byte] of Char;
      x,y,h: Integer;
    begin
      R1 := GetClientRect;
      R2 := Self.ClientRect;
      GetWindowRect(Handle, R3);
      R4 := Self.BoundsRect;
    
      x := 10;
      y := 10;
      h := 10;
    
      Randomize;
      Canvas.Font.Color := Random($FFFFFF);
      wvsprintf(buf, str + 'GetClientRect', @R1);
      Canvas.TextOut(x, y, buf);
      y := y + h + Canvas.TextHeight(buf);
    
      wvsprintf(buf, str + 'Self.ClientRect', @R2);
      Canvas.TextOut(x, y, buf);
      y := y + h + Canvas.TextHeight(buf);
    
      Canvas.Font.Color := Random($FFFFFF);
      wvsprintf(buf, str + 'GetWindowRect', @R3);
      Canvas.TextOut(x, y, buf);
      y := y + h + Canvas.TextHeight(buf);
    
      wvsprintf(buf, str + 'Self.BoundsRect', @R4);
      Canvas.TextOut(x, y, buf);
    end;
    
    procedure TForm1.FormResize(Sender: TObject);
    begin
      Repaint;
    end;
    
    end.
    
  • 相关阅读:
    动态数据源切换
    Disconf实践指南:改造篇
    Disconf实践指南:使用篇
    Disconf实践指南:安装篇
    执行Git命令时出现各种 SSL certificate problem 的解决办法
    linux rz 乱码
    分布式配置项管理-开源方案预研究
    mac下mysql5.7.18修改root密码
    git 版本回滚
    关于@Autowired使用注意点
  • 原文地址:https://www.cnblogs.com/del/p/1209857.html
Copyright © 2011-2022 走看看