Q&A

  • MDI에서 스플리터의 색상변경
MDI폼에 왼쪽에 판넬을 넣었고,
다시 레프트해서 스플리터를 했습니다.
그런데 화면을 띄울때..
스플리터에 색상이 MDI폼에 나타납니다.
왜 그렇죠..
델파이 어렵네요..휴
자료가 별로 없어서 더 어려운것 같습니다.
8  COMMENTS
  • Profile
    이중철 2004.06.04 00:30
    팁란에 검색에 "스플리터" 검색해보세요

    마형님 께서 올리셨네요

    Nvida 계열만 문제 있다고 하네요 전 확인은 못했습니다.

  • Profile
    이중철 2004.06.04 00:00
    일단 이 부분은 VC도 똑같은 현상이 일어납니다.
    꼭 델파이만의 문제는 아니죠 이것만은 집고 갈려고요
    이 현상말고 비슷한 에러는 스크롤바(폼의)가 갑자기 두꺼워지고
    커지는 현상도 있는데 이것도 VC나 델파이나 다 똑같아요
    그리고 스플리터의 이상현상 해결책이 이 사이트의 질답란 또는 팁란에서
    우연히 본 기억이 있습니다. (다시 찾으려니 못 찾겠네요 ㅠㅠ)

  • Profile
    박한정 2004.06.04 00:02
    솔직히 전 MS계열 프로그래머입니다.
    이번에 델파이를 할려고 하는데..
    비베에서는 이러한 현상이 나타나지 않았습니다.
    물론 API를 써서 해결했지만..암튼 이유를 모르겠네요..
    고수님들 설명부탁합니다.


  • Profile
    이중철 2004.06.04 00:10
  • Profile
    이중철 2004.06.04 00:18
    MFC초보입니다.
    테스트용으로 SDI Project에 Split윈도우를 만들었는데요, View에 아무런 메세지도 오지 않습니다.
    View의 OnInitialUpdate()에서 TreeCtrl에 데이타를 올릴려구 하는데 아예 메세지가 오질 않으니...

    그리고 Split은 동작을 잘 하는데 창의 사이즈를 조절하면 잔상이 남아 있습니다.
    이건 또 왜 그런지 ... ㅡ,.ㅡ

    초보로선 도저히 감당하기 힘든 문제라서...
    이것때문에 나흘 동안 고생고생중입니다.


    CTreeLeft --> CTreeCtrl에서 상속받은 Class
    CListTop --> CListCtrl에서 상속받은 Class
    CRichBot --> CRichEditCtrl에서 상속받은 Class

    아래는 소스코드의 일부입니다.
    전부는 첨부파일로 올립니다.(CData Class는 그냥 데이타만 가지고 있는 Class임다)


    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
        CCreateContext* pContext)
    {
        BOOL bCreate;
        CRect rcRect;
        int nX, nY;

        GetClientRect(rcRect);
        nX = rcRect.Width();
        nY = rcRect.Height();
        
        bCreate = m_wndSplitter.CreateStatic(this, 1, 2);
        if (!bCreate)    return FALSE;
        
        bCreate = m_wndUpSplitter.CreateStatic(&m_wndSplitter, 2, 1,           WS_CHILD | WS_VISIBLE | WS_BORDER,                         m_wndSplitter.IdFromRowCol(0, 1));
        if (!bCreate)    return FALSE;


        bCreate = m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CTreeLeft), CSize(nX/3,nY), pContext);
        if (!bCreate)    return FALSE;
        bCreate = m_wndUpSplitter.CreateView(0, 0, RUNTIME_CLASS(CListTop), CSize(nX/3*2,nY/3), pContext);
        if (!bCreate)    return FALSE;
        bCreate = m_wndUpSplitter.CreateView(1, 0, RUNTIME_CLASS(CRichBot), CSize(nX/3*2,nY/3*2), pContext);
        if (!bCreate)    return FALSE;

        CWnd *pWnd;

        pWnd = m_wndSplitter.GetPane(0, 0);
        pWnd->GetClientRect(rcRect);
        m_pTreeLeft = new CTreeLeft;
        bCreate = m_pTreeLeft->Create(WS_VISIBLE | WS_TABSTOP |  WS_CHILD | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES  | TVS_DISABLEDRAGDROP, rcRect, m_wndSplitter.GetPane(0, 0), IDC_TREELEFT);

        pWnd = m_wndUpSplitter.GetPane(0, 0);
        pWnd->GetClientRect(rcRect);
        m_pListTop = new CListTop;
        bCreate = m_pListTop->Create(WS_CHILD|WS_VISIBLE|LVS_REPORT,
         rcRect, m_wndUpSplitter.GetPane(0, 0), IDC_LISTTOP);

        pWnd = m_wndUpSplitter.GetPane(1, 0);
        pWnd->GetClientRect(rcRect);
        m_pRichBot = new CRichBot;
        bCreate = m_pRichBot->Create(WS_CHILD|WS_VISIBLE|ES_MULTILINE,
             rcRect, m_wndUpSplitter.GetPane(1, 0), IDC_RICHBOT);
        return TRUE;
    }
  • Profile
    박한정 2004.06.04 00:26
    그래요..
    이상하네..VC에서 화면 처음에 뜰때..
    스플리터색상이 MDI화면에 나타나나요..
    전 그런적이 없어서요..
    그러면 해결방법이 없나요..
    그런 같은 색상으로 하면 안나타납니다.
    그런데 좀 이상한것 같아서..
    ㅎㅎ


  • Profile
    송기현 2004.06.03 23:24
    질문의 요지가 스플리터 색상 바꾸는 건가요?
      -> Color 프로퍼티 바꾸면.될꺼 같은데요...
    아니면..스플리터의 색상이 MDI 폼에 나타난다는 얘긴가요?

  • Profile
    박한정 2004.06.04 00:00
    color 설정한 것이 왼쪽으로 이동하기 전에 MDI폼에 남아서 보인다는거죠.
    예로 MDI배경색하고 다른데..
    스플리터색상이 MDI폼에 보이는거죠.
    그 색상이.