604
社区成员
发帖
与我相关
我的任务
分享
DWORD dwStyle = GetWindowLong(Edit1->Handle, GWL_STYLE);
// ES_LEFT: 左对齐, ES_CENTER: 居中, ES_RIGHT: 右对齐
dwStyle = dwStyle | ES_CENTER;
SetWindowLong(Edit1->Handle, GWL_STYLE, dwStyle);
Edit1->Invalidate();
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include "RzButton.hpp"
#include "RzEdit.hpp"
#include <Vcl.Mask.hpp>
//---------------------------------------------------------------------------
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);
};
class TForm1 : public TForm
{
__published: // IDE-managed Components
TRzBitBtn *Btn_1;
TRzBitBtn *Btn_2;
TRzBitBtn *Btn_3;
TEdit *Edt_1;
TRzEdit *RzEdn_1;
TRzBitBtn *Btn_Style;
TRzBitBtn *Btn_Win;
void __fastcall Btn_1Click(TObject *Sender);
void __fastcall Btn_2Click(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall Btn_3Click(TObject *Sender);
void __fastcall Btn_StyleClick(TObject *Sender);
void __fastcall Btn_WinClick(TObject *Sender);
private: // User declarations
public: // User declarations
TMyEdit *myedt[3];
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "RzEdit"
#pragma link "RzButton"
#pragma link "RzEdit"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(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 TForm1::Btn_1Click(TObject *Sender)
{
// 起作用
// 首先把控件的属性设置为多行
RECT rect;
rect = myedt[0]->ClientRect;
// 设置内容的,左边距与上边距
::OffsetRect(&rect, 0, 5);
::SendMessage(myedt[0]->Handle, EM_SETRECT, 0, (LPARAM)&rect);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Btn_2Click(TObject *Sender)
{
SetWindowLong(myedt[0]->Handle, GWL_STYLE, GetWindowLong(myedt[0]->Handle, GWL_STYLE) | ES_CENTER);
}
//---------------------------------------------------------------------------
TColor ShsFColor[3] = { clRed, clNavy, clYellow };
TColor ShsBColor[3] = { clLime, clInfoBk, clGreen };
void __fastcall TForm1::FormCreate(TObject *Sender)
{
for(int i=0; i<3; i++)
{
myedt[i] = new TMyEdit(this);
myedt[i]->AutoSize = false;
myedt[i]->Height = 50;
myedt[i]->Parent = this;
myedt[i]->Alignment = taCenter;
myedt[i]->Text = IntToStr(i+1) + " 中国China";
myedt[i]->Left = 120;
myedt[i]->Top = 16 + ( 8 + myedt[0]->Height ) * i;
myedt[i]->Font->Style = TFontStyles() << fsBold;
myedt[i]->Font->Color = ShsFColor[i];
myedt[i]->Color = ShsBColor[i];
myedt[i]->ReadOnly = false;
myedt[i]->SetCenter(); // 起作用
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Btn_3Click(TObject *Sender)
{
for(int i=0; i<3; i++)
{
myedt[i]->SetCenter(); // 起作用
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Btn_StyleClick(TObject *Sender)
{
TStyleManager::SetStyle( "Metro Blue" );
Btn_3->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Btn_WinClick(TObject *Sender)
{
TStyleManager::SetStyle( "Windows" );
Btn_3->Click();
}
//---------------------------------------------------------------------------