delphi中edit控件内容上下居中

本文介绍了一种在Delphi中实现编辑框内容上下居中的方法,通过自定义TEdit类并重写部分方法来调整编辑框内容的位置,使得文本能够在编辑框内垂直居中显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  

关于delphi中edit控件内容上下居中问题,在网上找了很多,大多介绍的是左右居中,edit左右居中在delphi的高版本里已经增加了一个Alignment属性,设置为taCenter即可,最终在网上找到了上下居中的解决办法,在type加入如下代码:

type
  TEdit = class(StdCtrls.TEdit)
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure KeyPress(var Key: Char); override;
    procedure WMSize(var msg: TWMSize);message WM_SIZE;
    procedure SetParent(AParent: TWinControl);override;
    procedure SetCenter;
  end;

然后在程序代码中分别加入以下过程代码:

 

procedure TEdit.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or ES_MULTILINE;
end;

procedure TEdit.KeyPress(var Key: Char);
begin
  inherited;
  if Key = #13 then
    key := #0;
end;

procedure TEdit.SetCenter;
var
 DC: HDC;
 SaveFont: HFont;
 Sin: Integer;
 SysMetrics, Metrics: TTextMetric;
 Rct: TRect;
begin
 DC := GetDC(0);
 GetTextMetrics(DC, SysMetrics);
 SaveFont := SelectObject(DC, Font.Handle);
 GetTextMetrics(DC, Metrics);
 SelectObject(DC, SaveFont);
 ReleaseDC(0, DC);
 if Ctl3D then Sin := 8 else Sin := 6;
 Rct := ClientRect;
 Sin := Height - Metrics.tmHeight - Sin;
 Rct.Top := Sin div 2;
 SendMessage(Handle, EM_SETRECT, 0, Integer(@Rct));
end;

procedure TEdit.SetParent(AParent: TWinControl);
begin
  inherited;
  if Parent <> nil then
  begin
    SetCenter;
  end;
end;

procedure TEdit.WMSize(var msg: TWMSize);
begin
  inherited;
  SetCenter;
end;

运行后,界面上的edit内容均上下居中了。

  

转载于:https://www.cnblogs.com/ntearn/archive/2012/07/25/2607570.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值