|
아래 글을 보면 Width도 가능하다고 하셨는데 안되더라구요..
int itPixelSize = Screen->PixelsPerInch;
이것도 폭에 맞겠금 다시 고쳐서 넣어보기도 하였구요..
엉뚱한 값이 나오더군요.. ^^
답변 좀 부탁드립니다.
음.. 원래 제가 하려고 하는 것은..
아래 예처럼 RichEdit로 구현하는 것이 아니구요..
원래는 Label로 구현하려고 하거든요..
이유인 즉은 배경이미지때문에 그렇습니다.
Memo컴포넌트나 RichEdit를 사용하면 배경때문에 골치 아파서 그냥 Label로 정리하려고 하는데..
단순 WordWrap만을 사용하면 정렬도 이상하고 Caption의 내용이 길어지고 짧아지는거에 따라서 모습이 지저분하더라구요..
그래서 문자의 길이(숫자도 있고 한글도 있구 영어도 있고.. ^^;;)을 알아서 그것에 맞게 내용을 잘라
Label을 동적 생성해서 정렬을 해주려고 하거든요.. ^^;;
그런데 쉽지가 않군요..
음~ 아이디어 좀 주세용.. ^0^
좋은 하루 되시기 바랍니다.
////////////////////////////////////////////////////////////////////////////////////////
EM_FORMATRANGE 메세지를 이용하시면 됩니다. 프린터 할때도 유용하게 쓰이는 놈입니다..
아래 예제는 버튼을 클릭하면 RichEdit1의 Height를 텍스트 크기에 맞게 조정하는 예제입니다. 만약 Width 도 필요하시면 아래 return 값만 right - left 로 고쳐주시면 됩니다.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
RichEdit1->Height = GetRicheditSize(RichEdit1);
}
//---------------------------------------------------------------------------
int __fastcall TForm1::GetRicheditSize(TRichEdit *RICHEDIT)
{
int itPixelSize = Screen->PixelsPerInch;
TFormatRange frRange;
frRange.hdc = Canvas->Handle;
frRange.hdcTarget = Canvas->Handle;
frRange.rc = Rect(0, 0, 200 * 1440 / itPixelSize, 600 * 1440 / itPixelSize);
frRange.rcPage = Rect(0, 0, ClientWidth * 1440 / itPixelSize, ClientHeight * 1440 / itPixelSize);
frRange.chrg.cpMin = 0;
frRange.chrg.cpMax = RICHEDIT->GetTextLen() - 1;
RICHEDIT->Perform(EM_FORMATRANGE, 0, LPARAM(&frRange));
RICHEDIT->Perform(EM_FORMATRANGE, 0, 0); // Free 루틴
return((frRange.rc.bottom * itPixelSize / 1440) - (frRange.rc.top * itPixelSize / 1440));
}
//---------------------------------------------------------------------------
|