在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
关于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内容均上下居中了。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论