Delphi7如何实现让Tedit显示文字垂直居中(上下居中)

通过下面的组件,可以在输入文字的时候自动垂直居中 
直接把下面代码保存到Unit1.pas即可
------------------------------------------

 1 unit Unit1;
 2
 3 interface
 4
 5 uses
 6   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 7   Dialogs, StdCtrls;
 8
 9 type
10   TEdit = class(StdCtrls.TEdit)
11   protected
12     procedure CreateParams(var Params: TCreateParams); override;
13     procedure KeyPress(var Key: Char); override;
14     procedure WMSize(var msg: TWMSize);message WM_SIZE;
15     procedure SetParent(AParent: TWinControl);override;
16     procedure SetCenter;
17   end;
18   TForm1 = class(TForm)
19     Button1: TButton;
20     Edit1: TEdit;
21     procedure FormCreate(Sender: TObject);
22   private
23     { Private declarations }
24   public
25     { Public declarations }
26      Edt: TEdit;
27   end;
28
29 var
30   Form1: TForm1;
31
32 implementation
33
34 {$R *.dfm}
35 { TEdit }
36
37 procedure TForm1.FormCreate(Sender: TObject);
38 begin
39   Edt := TEdit.Create(self);
40   Edt.Parent := self;
41   Edt.AutoSize := False;
42   Edt.Height := 50;
43 end;
44
45 procedure TEdit.CreateParams(var Params: TCreateParams);
46 begin
47   inherited;
48   Params.Style := Params.Style or ES_MULTILINE;
49 end;
50
51 procedure TEdit.KeyPress(var Key: Char);
52 begin
53   inherited;
54   if Key = #13 then
55     key := #0;
56 end;
57
58 procedure TEdit.WMSize(var msg: TWMSize);
59 begin
60   inherited;
61   SetCenter;
62 end;
63
64 procedure TEdit.SetParent(AParent: TWinControl);
65 begin
66   inherited;
67   if Parent <> nil then
68   begin
69     SetCenter;
70   end;
71 end;
72
73 procedure TEdit.SetCenter;
74 var
75 DC: HDC;
76 SaveFont: HFont;
77 Sin: Integer;
78 SysMetrics, Metrics: TTextMetric;
79 Rct: TRect;
80 begin
81 DC := GetDC(0);
82 GetTextMetrics(DC, SysMetrics);
83 SaveFont := SelectObject(DC, Font.Handle);
84 GetTextMetrics(DC, Metrics);
85 SelectObject(DC, SaveFont);
86 ReleaseDC(0, DC);
87 if Ctl3D then Sin := 8 else Sin := 6;
88 Rct := ClientRect;
89 Sin := Height - Metrics.tmHeight - Sin;
90 Rct.Top := Sin div 2;
91 SendMessage(Handle, EM_SETRECT, 0, Integer(@Rct));
92 end;
93
94
95
96
97 end.

当这个保存成unit1.pas 后,然后通过delphi组件安装功能来安装组件,具体安装方法可以到网上查方法

时间: 2024-08-26 02:43:34

Delphi7如何实现让Tedit显示文字垂直居中(上下居中)的相关文章

div+css文字垂直居中 解决左侧头像右侧姓名,姓名多换行后相对于头像仍居中显示

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign 特性的元素才生效,例如表格元素中的<td>.<th>.<caption>等,而 像<div>.<span>这样的元素是没有valign特性的,因此使用verti

在IE8中使用padding设置select控件文字垂直居中

在火狐.苹果.谷歌.欧鹏等主流浏览器中,select下拉表单的文字能够垂直居中,如图: 而在ie8中,select下拉表单的文字基本就是靠底部显示,如图: 那么,如何使得ie8下的select文字垂直居中呢? 答案就是设置select{padding:5px 0;},如图: 如果想使得select有一定的高度,可再设置其height即可. 最后给大家来点笑话吧,解解乏: 1.老师:“在我的课上不允许玩手机,实在不想听的人可以睡觉!” 小明:“可是老师,睡觉之前我想玩会儿手机……” 2.老师:“小

DIV+CSS如何让文字垂直居中?(转)

此篇文章转自网络,但是我忘了原文地址,如果有人知道,麻烦告知一声~ 在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生效,例如表格元素中的<td>.<th>.<caption>等,而像<div>.<spa

移动Web单行文字垂直居中的问题

单行文字垂直居中的方式你可能可以脱口而出,height和line-height设置为同样就行了,或者设置相同的padding-top和padding-bottom值. 上图是Chrome浏览器下的效果,没什么好惊讶的,完全符合我们的预期. 然后我们到移动端,设置相等的height和line-height,情况就变的很古怪,先上个截图(截图来自易信的Webview): 这个截图来自我的魅蓝,从测试那里借了几个Android手机,基本都是这样显示的,文字明显偏上了,而且height越小越明显: 快贴

select中文字垂直居中解决办法

我们知道select标签在各个浏览器中的属性和各浏览器的支持各有些不同,从而造成select选择框在各浏览器的显示有不同,下面我们通过对主要 外形CSS属性的支持,打造全兼容select. 我对select的height.padding.line-height分别利用控制变量的方法写了个DEMO在各浏览器上测试三种情况:height.100.padding.0.height.no.padding.100.no.height.no.padding,结果如  链接图片各浏览器DEMO外观 我们可以得

多行文字垂直居中(完美兼容chrome firefox IE6 7 8 9)

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生 效,例如表格元素中的<td>.<th>.<caption>等,而像<div>.<span>这样的元素是没有valign特性的,因此使用vertic

文字垂直居中,水平居中

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生效,例如表格元素中的<td>.<th>.<caption>等,而像<div>.<span>这样的元素是没有valign特性的,因此使用vertica

用CSS如何实现单行图片与文字垂直居中

从上面的代码可以看出错误就是把样式应用在块元素中了 我们只需要改样式为 以下为引用的内容:.style img{vertical-align:middle;.....} 如果STYLE中有其它如INPUT或其它内联元素可写成 以下为引用的内容:.style img,.style.input{vertical-align:middle;.....}或.style *{vertical-align:middle;.....}/*在不影响其它元素的情况下使用这个通配符*/ 以上是在没有设置高度/行高的

文字垂直居中

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生效,例如表格元素中的<td>.<th>.<caption>等,而像<div>.<span>这样的元素是没有valign特性的,因此使用vertica