class TMyEdit : public Vcl::Stdctrls::TEdit
{
virtual void __fastcall CreateParams(TCreateParams& Params);
void __fastcall WMSize(TWMSize &Message);
virtual void __fastcall SetParent(TWinControl *AParent); public:
__fastcall TMyEdit(TComponent* Owner);
void __fastcall SetCenter(void);
inline __fastcall virtual ~TMyEdit(void) { } inline __fastcall TMyEdit(HWND ParentWindow) : Vcl::Stdctrls::TEdit(ParentWindow) { }
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_SIZE, TWMSize, WMSize);
END_MESSAGE_MAP(TEdit);
};
// ---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop #include "Unit26.h"
#include "Unit27.hpp" // ---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "RzEdit"
#pragma resource "*.dfm"
TForm25 *Form25; // ---------------------------------------------------------------------------
__fastcall TForm25::TForm25(TComponent* Owner)
: TForm(Owner)
{
} __fastcall TMyEdit::TMyEdit(TComponent* Owner) : TEdit(Owner)
{ } void __fastcall TMyEdit::CreateParams(TCreateParams& Params)
{
TEdit::CreateParams(Params);
Params.Style = Params.Style | ES_MULTILINE; } void __fastcall TMyEdit::SetParent(TWinControl *AParent)
{
TEdit::SetParent(AParent);
if (AParent != NULL)
SetCenter(); } // ---------------------------------------------------------------------------
void __fastcall TMyEdit::WMSize(TWMSize &Message)
{
TEdit::Dispatch(&Message);
SetCenter(); } void __fastcall TMyEdit::SetCenter(void)
{
HDC DC;
HFONT SaveFont;
int Sin;
TTextMetric SysMetrics, Metrics;
TRect Rct; DC = GetDC();
GetTextMetrics(DC, &SysMetrics);
SaveFont = (HFONT) SelectObject(DC, Font->Handle);
GetTextMetrics(DC, &Metrics);
SelectObject(DC, SaveFont);
ReleaseDC(, DC);
if (Ctl3D)
Sin = ;
else
Sin = ;
Rct = ClientRect;
Sin = Height - Metrics.tmHeight - Sin;
Rct.Top = Sin / ;
SendMessage(Handle, EM_SETRECT, , (LPARAM)(&Rct));
} // --------------------------------------------------------------------------- void __fastcall TForm25::Button7Click(TObject *Sender)
{ // 起作用
// 首先把控件的属性设置为多行
RECT rect;
rect = myedt->ClientRect; // 设置内容的,左边距与上边距
::OffsetRect(&rect, , );
::SendMessage(myedt->Handle, EM_SETRECT, , (LPARAM)&rect);
} // ---------------------------------------------------------------------------
void __fastcall TForm25::Button1Click(TObject *Sender)
{
SetWindowLong(myedt->Handle, GWL_STYLE,
GetWindowLong(myedt->Handle, GWL_STYLE) | ES_CENTER);
}
// --------------------------------------------------------------------------- void __fastcall TForm25::FormCreate(TObject *Sender)
{
myedt = new TMyEdit(this);
myedt->AutoSize = false;
myedt->Height = ;
myedt->Parent = this; myedt->Text = "hello";
myedt->Alignment = taCenter;
} // ---------------------------------------------------------------------------
void __fastcall TForm25::Button4Click(TObject *Sender)
{
myedt->SetCenter(); // 起作用
}
// ---------------------------------------------------------------------------

原帖是delphi的,转自http://www.cnblogs.com/ntearn/archive/2012/07/25/2607570.html

控件创建后不起作用,没有效果。显示调用SetCenter函数就有效果了。

XE6 c++builder Edit垂直居中的更多相关文章

  1. XE6 c++builder 设置 font size GetPropInfo SetOrdProp

    PPropInfo ppi; PTypeInfo pti; TTypeKinds ttk; TRttiContext context; TRttiType *rttiType TObject* obj ...

  2. c++builder 代码模板 code templates

    c++builder6.0  MENU:Tools>Editor Options>Code Insight>Code templates XE6 c++builder D:\Prog ...

  3. [Delphi] Delphi版本号对照

    VER300    Delphi Seattle / C++Builder Seattle    23    230    (Delphi:Win32/Win64/OSX/iOS32/iOS64/An ...

  4. Java SWT 做计算器。

    java  --  swt  - -  计算器 环境搭建 安装java.eclipse.以及对应的swt插件. 开始工程 建立工程: 在java下建立一个在其他 —- WindowsBuilder — ...

  5. Aspose.Words二 基础

    1.目录样式 doc.Styles[Aspose.Words.StyleIdentifier.Toc1].Font.Size = 14; doc.Styles[Aspose.Words.StyleId ...

  6. Aspose.Words三 创建表格

    创建表格,实现合并行.和并列.表居中.表格水平和垂直居中.设置单元格边框颜色和样式. string templateFile = Server.MapPath("table_templ.do ...

  7. DevExpress VCL 2014.1.2 for C++BUILDER XE6

    DevExpress VCL 2014.1.2 for C++BUILDER XE6 1)下载     DevExpress VCL 2014.1.2下载链接:http://pan.baidu.com ...

  8. VC Edit控件单行垂直居中和定制外框的实现

    Edit控件很奇怪,不在WM_PAINT里面画图,且外框也不在WM_NCPAINT里面画,客户区就是整个窗口,非客户区没有.也没有垂直居中风格可以设置.在界面排版的时候,看起来怪怪的. 下面提供Edi ...

  9. c++Builder XE6 MD5 加密算法 BASE64 URL 编码

    xe6,xe7 BASE64XE6 MD5 加密算法Delphifunction MD5(const texto: string): string; var idmd5: TIdHashMessage ...

随机推荐

  1. python表单验证封装

    在Web程序中往往包含大量的表单验证的工作,如:判断输入是否为空,是否符合规则. <!DOCTYPE html><html><head lang="en&quo ...

  2. 实习第一天:static 声明的 变量和 方法

    static 声明的 变量和 方法   既可以用类.变量或者类.方法来调用 order by表格:Store_Information表格 Name Sacles DAteAngeles 1500 19 ...

  3. REST与RESTFul API最佳实践

    我经常会面试一些做PHP的开发者,让我很奇怪的是,10个人总有8个多不知道什么是REST服务,甚至是没有听说过.但RESTFul API已经是现在互联网里对外开放接口的主流模式,可参考: 豆瓣API  ...

  4. ASP.NET MVC中如何实现页面跳转

    1,最简单的方式:超链接 以下分别是连接到HomeController控制器下的SharpL动作方法,以及百度首页.代码如下: <a href="Home\SharpL"&g ...

  5. 横竖两个数字塔的效果BAT批处理怎么写?

    横竖两个数字塔的效果BAT批处理怎么写?@echo offfor /l %%a in (0,1,1) do (        for /l %%i in (0,1,9) do (        for ...

  6. JUC集合之 JUC中的集合类

    Java集合包 在"Java 集合系列01之 总体框架"中,介绍java集合的架构.主体内容包括Collection集合和Map类:而Collection集合又可以划分为List( ...

  7. phper必知必会(一)

    1.http返回状态 200:成功,服务器已经成功处理了请求,并正常返回了提供请求的网页 301:永久移动,服务器会将请求转移到新的服务器地址 302:临时移动 401:未授权请求,请求需要身份移动 ...

  8. C# 关于out和ref的问题

    http://bbs.csdn.net/topics/320214035 问题: C#里非基础类型传参数都是以引用类型的方式,那么换句话说,out和ref除了基础类型外,实际上没有任何意义?是不是这么 ...

  9. js的自定义事件

    js中的事件是js的一大技术点,说白了就是操作dom树的唯一途径. 关于事件无非两种绑定方式: document.getElementById('xxx').onclick = function(){ ...

  10. Linux下分析磁盘镜像

    我们知道Windows下可以使用WinHex分析磁盘镜像:Linux下可以使用losetup工具.假如我们有一个磁盘镜像disk.img: ## 首先你的系统要支持loop device ## 一般发 ...