C++ Builder XE4 > UI > 화면 N 분할된 크기로 소프트웨어를 변경하는 UI 예

운영 환경
C++ Builder XE4

처리 개요


  • 소프트웨어의 크기를 모니터 화면 크기의 N 분할로 설정합니다.
  • 세로로 1..3 분할, 옆으로 1..3 분할
  • 어떤 UI로 하면 알기 쉬운가

  • 구현



    Unit1.h
    //---------------------------------------------------------------------------
    
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <System.Classes.hpp>
    #include <Vcl.Controls.hpp>
    #include <Vcl.StdCtrls.hpp>
    #include <Vcl.Forms.hpp>
    #include <Vcl.ExtCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:    // IDE で管理されるコンポーネント
        TComboBox *CB_vertDiv;
        TComboBox *CB_horiDiv;
        TShape *SHP_screen;
        TShape *SHP_software;
        TLabel *L_softcaption;
        void __fastcall FormShow(TObject *Sender);
        void __fastcall CB_vertDivChange(TObject *Sender);
        void __fastcall CB_horiDivChange(TObject *Sender);
    private:    // ユーザー宣言
        int original_width;
        int original_height;
    public:     // ユーザー宣言
        __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    

    Unit1.cpp
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
        this->Caption = L"Display size";
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormShow(TObject *Sender)
    {
        original_width = this->Width;
        original_height = this->Height;
    
        // 左上合わせ (デザインで重なりが分かるようにずらしているためコードで合わせる)
        SHP_software->Left = SHP_screen->Left;
        SHP_software->Top  = SHP_screen->Top;
        L_softcaption->Left = SHP_screen->Left;
        L_softcaption->Top = SHP_screen->Top;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::CB_vertDivChange(TObject *Sender)
    {
        int val = StrToIntDef(CB_vertDiv->Text, 0);
        if (val == 0) {
            return;
        }
    
        SHP_software->Height = SHP_screen->Height / val;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::CB_horiDivChange(TObject *Sender)
    {
        int val = StrToIntDef(CB_horiDiv->Text, 0);
        if (val == 0) {
            return;
        }
    
        SHP_software->Width = SHP_screen->Width / val;
    }
    //---------------------------------------------------------------------------
    

    양식 디자인





    동작 예









    고안



    왼쪽 상단에 소프트웨어 캡션 "XXX Software"라고 붙였다.
    이것이 없으면 2분할했을 때 「어느 쪽이 소프트웨어일까?」라는 의문이 발생한다.

    관련



    화면 설정 예
  • VIDEO WALL SETUP
  • 좋은 웹페이지 즐겨찾기