通过下面的组件,可以在输入文字的时候自动垂直居中
直接把下面代码保存到Unit1.pas即可
------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
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;
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
Edt: TEdit;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TEdit }
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
//if Key = #13 then
// ShowMessage('输入了回车键');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edt := TEdit.Create(self);
Edt.Parent := self;
Edt.AutoSize := False;
Edt.Height := 50;
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.WMSize(var msg: TWMSize);
begin
inherited;
SetCenter;
end;
procedure TEdit.SetParent(AParent: TWinControl);
begin
inherited;
if Parent <> nil then
begin
SetCenter;
end;
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;
end.
当这个保存成unit1.pas 后,然后通过delphi组件安装功能来安装组件,具体安装方法可以到网上查方法
转至:http://bbs.2ccc.com/topic.asp?topicid=419284
本文地址:http://www.xszlo.com/article/2012-12-22/7648.html,转发请保留这个地址,谢谢
分享到:
相关推荐
在 Delphi 中限制 `TEdit` 只能输入数字是非常简单的,主要通过 `OnKeyPress` 事件实现。下面提供几种不同的方法: 1. **基本方法**: ```pascal if not (Key in ['0'..'9', #8]) then Key := #0; ``` 这段代码...
你可以创建一个TLabel和一个TEdit,将TEdit的`Visible`属性设为`False`,然后把用户输入的文字显示在TLabel上。通过调整TLabel的`Alignment`属性(允许左对齐、居中和右对齐),可以实现文本的对齐效果。同时,当...
TScrollBox的ScrollBarsMode属性用于控制滚动条的显示,如sbBoth(同时显示水平和垂直滚动条)、sbHorizontal(只显示水平滚动条)等。 以上仅是部分关于Delphi中Mode属性的使用示例,具体应用可能根据开发需求和...
**Delphi 2006 教学6:Win32组件详解** 在Delphi 2006中,开发Windows应用程序时,我们经常会用到一系列的Win32组件。这些组件是Delphi IDE提供的一套强大的工具,帮助开发者快速构建用户界面。本教程将深入探讨...
在本文中,我们将深入探讨如何使用Delphi进行Unigui登录界面的美化。Unigui是一个基于VCL和FireMonkey的跨平台UI框架,它允许开发者创建美观且功能丰富的应用程序,包括登录界面。当我们谈论“unigui登陆界面美化”...
居中控件 屏蔽在EditBox内按回车键的都都声 强制在TEdit内输入 排序StringGrid 搜索和替换RichEdit中文本 搜索和选定TListBox的项目 改变TDBGrid的DefaultRowHeight 改变TRichEdit内选定文本的背景颜色 改变...
// 设置居中显示 SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) OR ES_CENTER); Edit1.Invalidate; SetWindowLong(Edit2.Handle, GWL_STYLE, GetWindowLong(Edit2.Handle, ...
0007 在Delphi中加载QReport报表组件 7 1.3 创建DLL文件 8 0008 生成一个DLL文件 8 0009 调用DLL文件 8 1.4 窗体相关操作 9 0010 将组件置前/置后 9 0011 如何锁定窗体中的组件 9 0012 如何改变窗体...
0007 在Delphi中加载QReport报表组件 7 1.3 创建DLL文件 8 0008 生成一个DLL文件 8 0009 调用DLL文件 8 1.4 窗体相关操作 9 0010 将组件置前/置后 9 0011 如何锁定窗体中的组件 9 0012 如何改变窗体...
这可以通过监听`TEdit`组件的`OnKeyPress`事件来实现。 **示例代码**: ```pascal procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not(Key in ['0'..'9', #8]) then // #8是...
除了基础功能,TSpinButton还可以与其他控件配合使用,例如,可以与TEdit、TMemo等控件联动,或者通过设置OnChanging事件实现数值验证,确保用户输入的合法性。 总结一下,TSpinButton是Delphi开发中一个重要的组件...
### iOS用户界面设计在Delphi XE4中的FireMonkey应用 #### 概述 本文章主要探讨了如何在Delphi XE4环境下利用FireMonkey框架进行iOS应用的用户界面设计。Delphi是一款强大的开发工具,它支持跨平台应用程序的创建。...