1. protected는 private처럼 외부에서 엑세스가 불가능 하므로 __property를 선언하셔서 읽으시면 됩니다.
class TDBClientSocketThread : public TThread
{
protected:
TPROC_INFO * mProcInfo;
bool mRunning;
SOCKET mSocket;
public:
__property TPROC_INFO* ProcInfo = { read = mProcInfo, write = mProcInfo };
__property bool Running = { read = mRunning, write = mRunning };
__property SOCKET Socket = { read = mSocket, write = mSocket };
2. public에 선언하셔도 됩니다만 구조적으로는 1번이 바람직 합니다^^
class TDBClientSocketThread : public TThread
{
public:
TPROC_INFO * mProcInfo;
bool mRunning;
SOCKET mSocket;
3. protected 함수를 직접 엑세스하시려면 2번처럼 public에 선언하시면 되는데, 역시 구조적으로 바람직 하지 않습니다.
클래스 자체가 그렇게 설계되어 있다면 어떠한 이유가 있을건데요. 그래도 엑세스 하시겠다면 public에 함수 하나 더 만들어서 호출만 연결시켜주면 됩니다.
public:
void CloseSocketLink();
TDBClientSocketThread ::CloseSocketLink()
{
CloseSocket();
}
Terry 님이 쓰신 글 :
: 두 폼간에 함수 호출은 단순히 헤더파일 인클루드 시키면 되었는데요
: 메인 폼에서 그냥 유닛에있는건 안되네요...
:
:
: //---------------------------------------------------------------------------
:
: #ifndef DBClientSocketThreadH
: #define DBClientSocketThreadH
: #include
: #include
: #include "Define.h"
: //---------------------------------------------------------------------------
: class TDBClientSocketThread : public TThread
: {
: protected:
: TPROC_INFO * mProcInfo;
: bool mRunning;
: SOCKET mSocket;
: protected:
: virtual void __fastcall DoTerminate(void);
: virtual void __fastcall Execute(void);
: protected:
: bool WaitEvent(int Sec, int USec);
: void CloseSocket();
: bool ConnectSocket();
: bool SendPacket(char * Buf, int Len);
: public:
: __fastcall TDBClientSocketThread(TPROC_INFO * ProcInfo);
: __fastcall ~TDBClientSocketThread();
: public:
: void StopThread();
: bool IsConnected() {return mSocket != INVALID_SOCKET;};
: bool SendStatus(bool Direct = false);
: bool SendTermConnection(DWORD TermID, AnsiString IPAddress);
: };
: //---------------------------------------------------------------------------
: #endif
:
:
:
: 유닛 헤더파일입니다. 저기있는 함수나 값들을 메인폼에서 어떻게 해야 제어할수 있죠??
|