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
[3149] Re:[질문] TChart component
박지훈.임프 [cbuilder] 5684 읽음    2000-03-21 00:00
장기복 님이 쓰신 글 :
: 안녕하십니까? 처음 질문을 올리네요.
:
: 그래프를 그리기 위해 TChart compononet를 이용하고 있습니다.
: 다 잘되는데, 한가지 안되는게 있어서 질문드립니다.
: 뭐냐하면 그래프의 y축에 나오는 숫자의 포맷을 임의로 변경할 수가 없습니다.
: 숫자의 단위가 커서 지수형태로 하고 싶은데...
:
: 도와주시기 바랍니다.



임펠리테리입니다.

TChart의 OnGetAxisLabel 이벤트 핸들러를 작성해서 직접 그려질 Label들의 텍스트를 조작하면 됩니다. 이 이벤트는 차트의 Axis의 Label들의 값을 알아내려고 할 때마다 발생하는 이벤트로서, 여기서 직접 텍스트값을 임의로 바꿔줄 수 있습니다. 예를 들어서, 다음과 같이,
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    for(int i=0; i<10000; i++)
        Chart1->Series[0]->AddXY(i, i*2, "", clYellow);
}
이렇게 x값이 0에서부터 10000까지 주루룩 증가하는 차트모양을 만든다고 합시다. 그러면 y값은 위의 연산에 따라 최대 20000까지 증가하겠지요? 그런데 최대값이 10000이나 나오는 단위는 너무 번거로와서, 단위를 1000단위로 하고, 최대로 나타날 Label 텍스트를 20까지로 하고 싶다고 하면? (사실은 19까지 나타납니다.)
이때는 다음과 같이 코딩하면 됩니다.
void __fastcall TForm1::Chart1GetAxisLabel(TChartAxis *Sender,
      TChartSeries *Series, int ValueIndex, AnsiString &LabelText)
{
    if(Sender == Chart1->LeftAxis)
    {
        int Val = StrToIntDef(LabelText, 0);
        Val = Val / 1000;
        LabelText = IntToStr(Val);
    }
}
지수형으로 문자열을 만드는 알고리즘은.. 직접 작성하셔도 되겠지요?

그럼 참고하시길...

+ -

관련 글 리스트
3136 [질문] TChart component 장기복 4508 2000/03/21
3149     Re:[질문] TChart component 박지훈.임프 5684 2000/03/21
3196         Re:Re:[질문] TChart component 장기복 4627 2000/03/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.