XE6 c++builder Edit垂直居中
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垂直居中的更多相关文章
- XE6 c++builder 设置 font size GetPropInfo SetOrdProp
PPropInfo ppi; PTypeInfo pti; TTypeKinds ttk; TRttiContext context; TRttiType *rttiType TObject* obj ...
- c++builder 代码模板 code templates
c++builder6.0 MENU:Tools>Editor Options>Code Insight>Code templates XE6 c++builder D:\Prog ...
- [Delphi] Delphi版本号对照
VER300 Delphi Seattle / C++Builder Seattle 23 230 (Delphi:Win32/Win64/OSX/iOS32/iOS64/An ...
- Java SWT 做计算器。
java -- swt - - 计算器 环境搭建 安装java.eclipse.以及对应的swt插件. 开始工程 建立工程: 在java下建立一个在其他 —- WindowsBuilder — ...
- Aspose.Words二 基础
1.目录样式 doc.Styles[Aspose.Words.StyleIdentifier.Toc1].Font.Size = 14; doc.Styles[Aspose.Words.StyleId ...
- Aspose.Words三 创建表格
创建表格,实现合并行.和并列.表居中.表格水平和垂直居中.设置单元格边框颜色和样式. string templateFile = Server.MapPath("table_templ.do ...
- 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 ...
- VC Edit控件单行垂直居中和定制外框的实现
Edit控件很奇怪,不在WM_PAINT里面画图,且外框也不在WM_NCPAINT里面画,客户区就是整个窗口,非客户区没有.也没有垂直居中风格可以设置.在界面排版的时候,看起来怪怪的. 下面提供Edi ...
- c++Builder XE6 MD5 加密算法 BASE64 URL 编码
xe6,xe7 BASE64XE6 MD5 加密算法Delphifunction MD5(const texto: string): string; var idmd5: TIdHashMessage ...
随机推荐
- oclif cli app开发简单试用
oclif 是heroku 开源的cli 开发框架,有一篇关于12 factor cli app 开发的文章很值得看看 https://medium.com/@jdxcode/12-factor-cl ...
- nuclio dokcer 运行测试
nuclio serverless 平台,可以方便的进行实时事件以及数据处理应用的开发 dcoker 运行 启动 docker run -d -p 8070:8070 -v /var/run/dock ...
- 走进windows编程的世界-----消息处理函数(1)
Win32消息机制 过程驱动:程序是依照我们预先定义好的顺序运行.每运行一步,下一步都已经依照预定的顺序 继续运行,直至程序结束. 事件驱动:程序的运行顺序是无序的.某个时间点所运行的 ...
- ImageCollection
https://documentation.devexpress.com/#WindowsForms/clsDevExpressUtilsImageCollectiontopic The collec ...
- php登陆绑定手机验证码使用阿里大于接口
https://doc.alidayu.com/doc2/index.htm 一条0.045 元 新注册送10块
- VS2010编译和运行项目错误
打开工程提示如下: The 'Microsoft.Data.Entity.Design.BootstrapPackage.BootstrapPackage, Microsoft.Data.Entity ...
- 非root用户执行程序---sudo的使用
场景 在应用部署过程中,会遇到这样的问题:前期需要root用户执行配置.初始化工作,而具体的业务应用需要使用非root用户启动. 如何解决呢? 方法 可以使用sudo,实现授权. sudo命令授权,既 ...
- 使用PHP简单操作Memcached
记得一定要先启动Memcached哦! [root@localhost ~]# /usr/bin/memcached -d -l -m -u root -d 守护进程模式(退出终端窗口之后使程序还在运 ...
- WCF揭秘学习笔记(5):WF定制活动
WF(Windows Workflow Foundation,Windows工作流基础)为.NET提供了一种基于模型的.声明方式的过程执行引擎,它改变了传统的通过一行行编写代码来开发服务功能的方式. ...
- Log4j2的基本使用
Log4j2是Log4j1.x的的升级版,其中也有很大的不同,最大的区别就是由以前的properties配置文件改为xml/json/yaml配置文件. 其中配置文件的位置官方说明如下: Log4j ...