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
[46408] Re:Re:죄송스럽게도.. 그럼... TSpeedButton을 이용함은 어떨런지요?
장성호 [nasilso] 1069 읽음    2006-09-01 15:44
[방법1]
아래는 제가 코딩해서 테스트 해봣는데
TButton보다는 TSpeedButton이 훨씬 빨랐습니다.
현재 화면에 20* 15 = 300개  버튼이 배치되어있습니다.
GetTickCount()로 계산해 보니
평균적으로 TSpeedButton이 TButton보다 5배정도 빨랐습니다.

[방법2] //별로 권장하지 않음
Button들이 올려져 있는 parent인  groupbox나 panel을 잠시 Visible=false시켰다가
다 바뀌면 Visible시키는것 어떨까요?
이것도 한번 껌뻑거립니다만 편법으로 쓸수 있을것도 같네요




TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
TSpeedButton  *ArBtn[20][15];
//TButton  *ArBtn[20][15];
int iWidMg,iHeiMg;
int iWid,iHei;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    iWidMg=50;
    iHeiMg=40;
    iWid=45;
    iHei=30;


    Panel1->DoubleBuffered=true;
    for(int i=0;i<15;i++)
    {
        for(int j=0;j<20;j++)
        {
            ArBtn[j][i]=new TSpeedButton(this);
            //ArBtn[j][i]=new TButton(this);
            ArBtn[j][i]->Left= 10 + j*iWidMg;
            ArBtn[j][i]->Width=iWid;
            ArBtn[j][i]->Top=10+i*iHeiMg;
            ArBtn[j][i]->Height=iHei;
            ArBtn[j][i]->Caption=IntToStr(i)+"-"+IntToStr(j);
            ArBtn[j][i]->Parent=Panel1;
        }
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormResize(TObject *Sender)
{
    iWidMg=this->ClientWidth / 21;
    iHeiMg=this->ClientHeight / 16;
    iWid=iWidMg-5;
    iHei=iHeiMg-10;
    //Panel1->Visible=false;
    int itc1,itc2;

    itc1= GetTickCount();
    for(int i=0;i<15;i++)
    {
        for(int j=0;j<20;j++)
        {
            ArBtn[j][i]->Left= 10 + j*iWidMg;
            ArBtn[j][i]->Width=iWid;
            ArBtn[j][i]->Top=10+i*iHeiMg;
            ArBtn[j][i]->Height=iHei;
        }
    }
    itc2=GetTickCount();
    this->Caption=IntToStr(itc2-itc1);  // size조정시간 계산 , 1000  이 1초
    //Panel1->Visible=true;
}
//---------------------------------------------------------------------------

김성준 님이 쓰신 글 :
: 화면에 느리게 버튼이 주르르륵 나타납니다..
:
: 여전하네요..
:
: 제가 뭔가를 잘못 사용하고 있는걸까요..
:
: 흠.. 폼을 처음 그릴땐 문제가 아닌데..
:
: 폼을 리사이즈 할때 버튼들의 위치와 가로세로 크기도 같이 변하게끔 해줬거든요..

+ -

관련 글 리스트
46399 버튼 수백개 배열 김성준 922 2006/09/01
46401     Re:버튼 수백개 배열 장성호 1116 2006/09/01
46403         Re:여전하네요 ㅜ.ㅜ 김성준 917 2006/09/01
46404             Re:Re:여전하네요 .. 이런방법은 어떨런지요..? 장성호 926 2006/09/01
46407                 Re:죄송스럽게도.. 김성준 905 2006/09/01
46408                     Re:Re:죄송스럽게도.. 그럼... TSpeedButton을 이용함은 어떨런지요? 장성호 1069 2006/09/01
46409                         Re:감사합니다^^ 김성준 873 2006/09/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.