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
[50870] Re:내가 만든 클래스에서 메인폼에 있는 변수 사용하는 방법에 대해 문의드립니다.
장성호 [nasilso] 1436 읽음    2007-10-13 18:38
쓰래드는 TThread를 상속받아서 만드시면 편리합니다.
님께서 만드신 Class A도 TThread를 상속받으시면 좋을듯...

primary-thread에 있는  폼이나 processbar 등 GDI객체에 상태를 변화시켜 적용하려면
Synchronize 를 이용하시구요

TForm에 함수는 아래와같이 넘기시며 됩니다.

--------------예제----------------------

typedef void __fastcall (__closure *TStatusEvent)();

class TMyThread : public TThread
{
public:
     
    TStatusEvent   OnStatusEvent;

    __fastcall TMyThread(bool CreateSuspended)
        : TThread(CreateSuspended)
    {
           //
    }
    void __fastcall TMyThread ::Work(int i)
    {
             Sleep(100);
    }
    void __fastcall TMyThread ::Execute()
    {
        for(int i=0;i<100;i++)
        {
             //오래 걸리는 복잡한 작업
            Work(i);
            if(OnStatusEvent)
                Synchronize(OnStatusEvent);
        }
    }

};

void __fastcall TForm1::ThreadProgress()
{
    ProgressBar1->Position++;
    if(ProgressBar1->Position==ProgressBar1->Max)
    {
        ShowMessage("작업이 끝났습니다.");
    }
}
//-------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
   ProgressBar1->Position=0;
   TMyThread *tred=new TMyThread(true);
   tred->OnStatusEvent=ThreadProgress;
   tred->Resume();
}
//---------------------------------------------------------------------------


그럼..



진수.네모 님이 쓰신 글 :
: 빌더를 통해서 폼을 만들었습니다. 그리고 class A {}; 를 만들었습니다.
:
: 빌더에서 A 의 객체를 생성해서 씁니다. 주요한 작업은 모두 여기서 처리합니다.
:
: 이때 객체에서 처리해야 할 것이 많아 시간이 무지하게 걸립니다.
:
: 그래서 메인폼에 게이지를 두어서 처리되는 량을 보이고 싶습니다.
:
: 그래서 메인폼의 변수를 어떻게 액세스 할 수 있는지 알고 싶습니다.
:
:
: 또다른 질문은 객체에서 처리되는 양이 많아 그동안 메인 폼이 먹통이 된다는데 문제가 있습니다.
:
: thread를 만들어야 한다는 것은 아는데 어디서 부터 시작해야 할 지 잘 모르겠습니다.
:
: 팁&트릭 란에는 함수를 thread에 실어 동작하게 하는 것이 있는데
: 제가 만든 클래스 자체를 thread로 동작하게 할 수있는 방법이 있는지요?
:
: 질문이 올바른지 잘 모르겠습니다 ㅡ.ㅡ;;
:
: 감사합니다.

+ -

관련 글 리스트
50863 내가 만든 클래스에서 메인폼에 있는 변수 사용하는 방법에 대해 문의드립니다. 진수.네모 1176 2007/10/13
50870     Re:내가 만든 클래스에서 메인폼에 있는 변수 사용하는 방법에 대해 문의드립니다. 장성호 1436 2007/10/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.