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. Mac OS X 10.9.2 配置 jdk1.8.0_05 环境变量

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gcvdsvb/article/details/24543543 首先到 oracle 站点下载 ss ...

  2. 整理开源协议问题 GPL APACHE

    整理开源协议问题 GPL APACHE APACHE 和 GPL 互相不兼容. APACHE 不可以使用 GPL 的代码. 但是 APACHE 可以调用 GPL 组件的接口. 比如 Linux 和 A ...

  3. xhan/qqbot试用

    xhan/qqbot试用 啥是qqbot?基于WebQQ协议的QQ机器人.命令行工具,Hubot支持! 怎样安装?首先要安装CoffeeScript windows:安装nodejs:主页上就有下载C ...

  4. Oracle 存储过程发送邮件

    CREATE OR REPLACE PROCEDURE PROCSENDEMAIL(P_TXT       VARCHAR2,                                      ...

  5. FineUI与百度地图简单示例 (转帖)

    http://www.fineui.com/bbs/forum.php?mod=viewthread&tid=4191&extra=page%3D1 前台代码 <%@ Page ...

  6. bzoj1042硬币购物

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1042 dp预处理+容斥原理. 先预处理求出无限制的各面值的组成方案数 f (完全背包). 求s ...

  7. java 创建子类

    当程序创建子类对象时,系统不仅会为该类中定义的实例变量分配内存,也会为他从父类继承得到的所有实例变量分配内存,即使子类中定义了与父类中同名的实例变量. 如: class Parent { privat ...

  8. JZ2440 裸机驱动 第10章 系统时钟和定时器

    本章目标      了解S3C2410/S3C2440的时钟体系结构     掌握通过设置MPLL改变系统时钟的方法     掌握在不同的频率下设置存储控制器的方法     掌握PWM定时器的用法   ...

  9. hello word 应用程序的编写

    1.各类文件的书写 src中的文件: hello文件夹中的Makefile文件 # # Copyright (C) - OpenWrt.org # # This is free software, l ...

  10. 常见企业IT支撑【6、跳板机Jumpserver】

    Jumpserver是国内一款开源的轻便的跳板机系统,他们的官网:http://www.jumpserver.org/ 使用这款软件意在提高公司内部登录生产环境服务器的便捷性,权限分配细化,以及后台管 ...