|
우선은 만들었거든요..
근데 소스가 너무 지저분해서
하여튼 알겠습니다.
RichEdit에는 있는 기능이어서 한 번 여쭈어봤습니다.
좋은 답변 감사용.. ^^;
유영인.Chris 님이 쓰신 글 :
: Label의 경우에는 조금 틀리게 결과값이 나오는듯 합니다. 아마도, 글자대로 자르셔서 작업을 해야하지 않을까 생각되네요.
:
: 직접 자르는 루틴을 만들어 보시는건 어떠실지요. 한 글자가 얼마나 Width를 갖는지는 이전에 써놓은 게시물이 있습니다. ^^;
:
: 꾸벅
:
:
: 초짜 님이 쓰신 글 :
: : 아래 글을 보면 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));
: :
: : }
: : //---------------------------------------------------------------------------
: :
|