博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XE6 c++builder Edit垂直居中
阅读量:4490 次
发布时间:2019-06-08

本文共 3250 字,大约阅读时间需要 10 分钟。

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 
#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(0); GetTextMetrics(DC, &SysMetrics); SaveFont = (HFONT) SelectObject(DC, Font->Handle); GetTextMetrics(DC, &Metrics); SelectObject(DC, SaveFont); ReleaseDC(0, DC); if (Ctl3D) Sin = 8; else Sin = 6; Rct = ClientRect; Sin = Height - Metrics.tmHeight - Sin; Rct.Top = Sin / 2; SendMessage(Handle, EM_SETRECT, 0, (LPARAM)(&Rct));}// ---------------------------------------------------------------------------void __fastcall TForm25::Button7Click(TObject *Sender){ // 起作用 // 首先把控件的属性设置为多行 RECT rect; rect = myedt->ClientRect; // 设置内容的,左边距与上边距 ::OffsetRect(&rect, 0, 5); ::SendMessage(myedt->Handle, EM_SETRECT, 0, (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 = 50; myedt->Parent = this; myedt->Text = "hello"; myedt->Alignment = taCenter;}// ---------------------------------------------------------------------------void __fastcall TForm25::Button4Click(TObject *Sender){ myedt->SetCenter(); // 起作用}// ---------------------------------------------------------------------------

 

原帖是delphi的,转自

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

转载于:https://www.cnblogs.com/cb168/p/3922156.html

你可能感兴趣的文章
个人应用开发详记. (二)
查看>>
一款由css3和jquery实现的卡面折叠式菜单
查看>>
uva 10791
查看>>
openlayers 4快速渲染管网模型数据
查看>>
MySQL相关小技巧
查看>>
SSH整合- 2- add service layout
查看>>
IP地址与UInt之间不得不说的故事
查看>>
【代码笔记】iOS-两个滚动条,上下都能滑动
查看>>
矩阵乘法-洛谷P2233 [HNOI2002] 公交车路线
查看>>
openstack云主机硬盘复制查询
查看>>
写个神经网络,让她认得我`(๑•ᴗ•๑)(Tensorflow,opencv,dlib,cnn,人脸识别)
查看>>
《程序是怎样跑起来的》第三章
查看>>
Jquery回到顶部效果
查看>>
开园第一笔
查看>>
Spark项目之电商用户行为分析大数据平台之(七)数据调研--基本数据结构介绍...
查看>>
原来fb可以在一个工程里面输出多个swf模块
查看>>
Codeforces Round #271 (Div. 2) E. Pillars 线段树优化dp
查看>>
Codeforces Round #FF (Div. 2) D. DZY Loves Modification 优先队列
查看>>
【学习】logger
查看>>
Delphi APP 開發入門(十)REST Client 開發
查看>>