본문 바로가기

프로그래밍/Delphi

[Tips] 등록된 프레임을 갑자기 사용할 수 없을 때

1. 개요

  DelphiXE로 넘어오면서 프로젝트 작성시 만들어서 등록해서 사용하던 프레임(TFrame)들이 어느 순간엔가 사용할 수 없게 되는 경우가 발생한다. 폼 위에 프레임을 올리려고 하면 "No frames are available to insert. New frames may be created ...".라는 당황 스러운 메시지와 함께 잘 사용 했던 프레임을 하나도 쓸 수 없을 뿐만 아니라. 기존에 올려져 있던 프레임들도 수정된 프레임을 사용할 수 없는 단계까지 이르게 된다. 이것은 DelphiXE의 버그로도 보이는데 XE3 ~ XE Seatle 버전까지 그대로 남아 있음을 확인 하였다. 이를 재인식 시키는 방법을 알아보자.



2. ProjectXXX.dproj 파일 직접 편집(일반 에디터 이용)

  .dproj 파일을 열면 프로젝트 구성 내용이 XML 타입으로 작성되어 있는 것을 볼 수 있는데 프레임으로 작성한 유닛 부분을 찾는다.

Frame으로 작성된 유닛에는 "<DesignClass>TFrame</DesignClass>" 로 선언된 서브 노드가 반드시 존재하므로 검색어를 "TFrame"으로 검색하면 수월하게 해당 유닛을 찾을 수 있겠다.


원하는 TFrame 유닛 부분을 찾으면 다음과 같이 해당 유닛이 dfm으로 작성된 유닛을 등록해 주면 DelphiXE에서 해당 프로젝트를 다시 열때 기존에 등록했던 Frame 유닛들을 정상적으로 사용할 수 있다..


적용 예)


Change:
        <DCCReference Include="x\y\z\myFrame.pas">
            <Form>frameMy</Form>
            <DesignClass>TFrame</DesignClass>
        </DCCReference>

to:
        <DCCReference Include="x\y\z\myFrame.pas">
            <Form>frameMy</Form>
            <FormType>dfm</FormType>
            <DesignClass>TFrame</DesignClass> 

        </DCCReference>