2014-09-21 1 views
-1

큰 GUI가있는 프로그램이 있습니다. GUI는 여러 탭으로 나뉩니다. GUI를 관리하기위한 코드 (예를 들어, 하나의 탭에 Windows 탐색기 클론이 포함되어 있음)은 꽤 큽니다.큰 GUI 용 코드를 분할하는 방법은 무엇입니까?

위와 같은 대형 GUI를 여러 파일로 분할하는 데 가장 적합한 방법이지만 GUI를 여러 형태 (런타임)로 분할하지 않아도됩니까?

+2

각 탭 시트는 하나의 창입니다. 여러 개의 창이 아니라 여러 개의 양식을 의미합니까? 프레임 같은 소리가 대답입니다. –

+0

"최선의 접근법"은 약간의 "주로 의견 기반"이라고 들릴 수 있지만, 어쩌면 다시 말할 수 있습니다. 프레임을 사용하여 유사한 광고 런타임 도킹 된 여러 창을 선호합니다. – bummi

+1

"최선의 접근법"은 다른 좋은 아이디어와 나쁜 아이디어를 얻고 다른 사람들이 투표하는 것과 상관없이 내가 아주 개인적으로 좋아하는 아이디어를 선택하는 것을 의미 할 수도 있습니다 :) – Ampere

답변

4

포함 된 양식을 사용하십시오. 이렇게하면 각 파일을 별도의 파일로 유지 관리 할 수 ​​있으며 런타임에는 모두 동일한 GUI 형식의 일부로 표시됩니다. 당신이 양식을 자동으로 생성하지 않으

MyForm: TForm; 

때문에, 프로젝트 옵션에서 제거 -> 목록을 자동 작성 양식 :

는 현재 양식을 저장하는 전역 변수를 만듭니다. 대신, 동적으로이 방법을 만들 필요에 따라 포함

MyForm := TMyForm.Create(Application); 

그런 다음 속성을 설정을 다음과 같은 : 나는 믿고있어

당신은 당신이 포함 할 tabsheet에 EmbeddedMyForm_panel 같은 이름의 패널이 형태. 그건 내가하는 일이야. TTabSheet를 직접 사용할 수도 있습니다.

with MyForm do begin 
    BorderIcons := []; 
    BorderStyle := bsNone; 
    parent  := EmbeddedMyForm_panel; 
    Align  := alClient; 
    Visible  := true; 
end; 

저는이 접근법을 매우 성공적으로 사용하여 하나의 방대한 GUI 안에 여러 개의 탭에 별도의 양식을 포함 시켰습니다.

추가 : 프레임을 사용하지 않은 이유를 묻는 질문에 IDE에서 메인 폼의 12 개 이상의 포함 된 양식을 사용하면 프레임이로드 될 때 IDE가 양식의 거의 모든 프레임에 대해 조상 양식을 찾을 수 없습니다. IDE에서 경고를받지 않고 기본 폼을 열려면 먼저 모든 프레임 양식을 열어야합니다. 기본 양식 자체 (예 : 기본 메뉴 편집)에서 작업하고 프레임을 전혀 처리 할 필요가 없다면 특히 성가신 일입니다.

+0

이것은 우아한 해결책입니다! 감사. 프레임에 대한 http://edn.embarcadero.com/article/32047 문서가 있지만 솔루션과 비교하면 총 잔인합니다. – Ampere

+2

프레임이 과도하게 사용되는 방식은 무엇입니까? 그것들은 더 이상 복잡하지 않으며 아마도 덜 복잡합니다. 그리고 GUI의 많은 부분이 프레임을 사용하여 더 잘 작동합니다. –

+3

프레임은 수동으로 처리해야하는 다른 문제 (탭 순서, 메시지 처리, 포커스 변경 등)를 유발하기 때문에이 솔루션을 피할 수 있도록 설계되었습니다. 나는 대답을 downvoting하지 않지만 (기술적으로 하나의 솔루션이기 때문에) 프레임을 대신 사용하는 것이 좋습니다. –

관련 문제