C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[21444] Re:Re: 역시 그 방법밖에는 없는건가용..
초짜 [chqh] 834 읽음    2002-09-14 00:53
우선은 만들었거든요..

근데 소스가 너무 지저분해서

하여튼 알겠습니다.

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));
: :
: : }
: : //---------------------------------------------------------------------------
: :

+ -

관련 글 리스트
21428 유영인님! 예전에 글 올리신거에 질문이 있습니다. 초짜 687 2002/09/13
21437     Re:유영인님! 예전에 글 올리신거에 질문이 있습니다. 유영인.Chris 738 2002/09/13
21444         Re:Re: 역시 그 방법밖에는 없는건가용.. 초짜 834 2002/09/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.