2013-06-16 3 views
0

나는 C++ 빌더로 윈도우 데이터베이스 애플리케이션을 만들고 싶다. 아이디어는 화면의 나머지 부분이 선택된 메뉴 항목에 관한 모든 사용자 상호 작용 및 데이터를 호스팅하는 동안 상단에 6 개의 아이콘으로 된 정적 메뉴 (모든 화면에서 일정해야 함)를 갖는 것입니다. 나는 SDI 응용 프로그램과 함께 litte experiece을 가지고 있고 내가 아는 한 전체 응용 프로그램이 단일 화면/양식에 존재할 방법이 없다는 것을 알고 있습니다. 해야 할 일은 MDI 앱처럼 만들거나 다른 모든 메뉴 항목에 대해 나머지 화면 데이터를 변경하는 동안 고정 아이콘 기반 메뉴를 유지하는 다른 방법이 있습니까? 사용자가 응용 프로그램을 탐색하는 동안 중복되는 양식이없는 단일 창에 있기를 원하지 않습니다.C++ 빌더 MDI/SDI 또는 다른 방법?

답변

0

MDI 응용 프로그램이 확실히 가능할 수도 있지만 다른 양식 간의 상호 작용은 때로는 약간 성가시다. 탭이있는 페이지는 모든 것이 동일한 TForm 클래스에 상주하기 때문에 다루기가 더 쉽습니다. 개별 탭의 모양을 변경하려면 'PageControlDrawTab'을 오버로드 할 수 있습니다. 이벤트 핸들러를 추가하기 만하면 탭 자체의 캔버스에 핸들을 가져오고 원하는대로 자유롭게 그릴 수 있습니다. 아래 예를 참조하십시오.

void __fastcall TMainForm::PageControlDrawTab(TCustomTabControl *Control, 
     int TabIndex, const TRect &Rect, bool Active) 
{ 
/* OnDraw handler to change the appearance of the Tabs. 
Change it to blue text on white background. 
*/ 

    String s; 
    TRect r; 
    TTabControl * tTab = (TTabControl *)Control; // Get a pointer to the tab itself 
    s = tTab->Tabs->Strings[TabIndex];   // Retrieve the text of this tab 
    Control->Canvas->Brush->Color = clWhite;  // Use the Canvas to draw 
    Control->Canvas->Font->Color = clBlue;  // .. whatever you like 
    Control->Canvas->FillRect(Rect); 
    Control->Canvas->TextRect(Rect,Rect.Left+4,Rect.Top+2,s); 

} 
0

아마도 MDI 형식으로해야 할 것입니다. 양식을 가로 질러 메뉴를 공유하는 방법을 모르겠습니다. 당신이 사용할 수있는 또 다른 옵션은 페이지 컨트롤을 사용하고 다른 모든 "폼"을 탭에 표시하여 메뉴가 항상 동일하도록하는 것입니다. 사용자가 다른 탭에있을 때 메뉴 항목을 다르게 응답하거나 탭에 상관없이 동일한 작업을 수행 할 수 있습니다. 죄송합니다. 답변 형식입니다. 아직 댓글 권한이 없습니다.

+0

탭은 옵션입니다. 나는 탭 제목에 이미지 대신 간단한 텍스트를 가질 수 있을지는 모르지만 그것을 확인해 보겠습니다. – apo