NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    디자이너 디자이너에서 옵션을 제어하는 코드 예제.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 아주 단순하게 디자이너를 사용할 수 있지만~ 좀 더 이런저런 옵션들을 넣어서 쓰고 싶을 수도 있습니다. 물론, 사용자마다 원하는 기능이 다르고 성능이나 속도와 같이 스크립트를 실행함에 있어 영향을 주는 요소도 존재하기 때문입니다. 기본적으로 스크립트를 모든 컴퓨터의 성능에 잘 동작하도록 구성하는게 Best죠^^;

    7YCGgW5.jpg

     

     

    우선, 비주얼 스튜디오 2017 또는 2019를 설치하고 NGM Designer도 최신 버전으로 설치하세요. 매뉴얼의 디자이너를 참고하시면 됩니다. 아마도 이 글을 보시는 대부분의 사용자는 이미 준비가 되어 있겠죠? 개발(?)하기 위한 사전 준비가 되었다면 아래와 같이 디자인해주세요. 예제는 스크립트 자동 업데이트를 설정하는 방법입니다.

    1. 도구 상자에서 체크 박스(CheckBox)를 선택하세요.
    2. 폼에 드래그 앤 드롭하여 추가해주세요.
    3. 속성창(Property Dock)의 텍스트(Text)에 "스크립트 자동 업데이트"를 입력하세요.

    ※ 도구 상자가 안보이면?

    Control+Alt+X

    ※ 속성창이 안보이면?

    Alt+Enter

     

    4U006YN.png

     

     

    아래 그림을 참고해서 이벤트를 추가하세요.

    1. 속성창에서 이벤트 탭을 클릭하세요.
    2. CheckedChanged 이벤트 핸들러를 더블 클릭하세요.

    ※ 이벤트란?

    이벤트는 어떤 시점의 사건을 말합니다. 저도 처음 개발을 시작할때 가장 어려웠던 부분이기도 한데요^^;

    예를들면 어떤 사건이 발생합니다. 여기서 사건은 버튼을 클릭하거나 체크박스의 체크 상태를 변경하는것을 말합니다. 이외에도 트렉바를 조절하거나 텍스트박스의 글자를 변경할때 바꿀수도 있습니다. 일상적으로 사용하는 네이버나 다음의 검색바를 보세요. 너무나 익숙하기 때문에 잘 느끼지 못하는 부분인데요. 네이버나 다음에 검색 키워드로 NGM을 타이핑하면 자동 완성되면서 사용자에게 찾고자 하는게 맞는지 제안 항목을 만들어서 표시해줍니다. 여기서 사용자가 키보드로 키를 누르는 행위가 이벤트를 발생시킨겁니다. 시스템은 이벤트가 발생되면 해당 이벤트를 구독하고 있는 핸들러로 여러가지 정보(Event Arguments)를 넘겨줍니다. 미리 정의되어 있는 핸들러는 내부 로직을 수행하게 됩니다.

    rTnlszs.png

     

     

    여러분도 아래와 같이 이벤트 핸들러가 추가되었죠?

    using System;
    
    namespace DesignTest
    {
        public partial class Form2 : NGM.GUI.ComponentDefault.MainView
        {
            public Form2()
            {
                InitializeComponent();
            }
    
            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
    
            }
        }
    }

     

     

    이 예제에서 사용되는 기능은 관리자 권한으로 실행 여부를 결정하는겁니다. 그렇기 때문에 2가지의 선택지가 존재하죠~ 그래서 2가지 선택지로 제한하는데 가장 좋은 체크박스 컨트롤을 이용하게 되었습니다. 사실, True, False 또는 Checked, Unchecked와 같은 선택 가능한 컨트롤이면 어떤걸 사용해도 상관없습니다. 직접 컨트롤를 만들어서 디자인할수도 있습니다. 일반적으로 사용자 정의 컨트롤(UserControl)을 이용하지만, 컴포넌트 개발은 사용자 지정 컨트롤(Component)을 이용합니다. 사실... 많은 것들을 알려드리고 싶지만 C#이 국내에서는 입지가 좁은나머지 사라질 위기라서... 시간낭비일지도 모르죠. 저도 지금은 자바나 노드, 앙귤라로 개발하고 있으니까요~

    2ZqotS5.gif

     

     

    기본적인 코딩은 아래와 같이 작성하면 됩니다.

    using System;
    using System.IO;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Windows.Forms;
    
    namespace DesignTest
    {
        public partial class Form2 : NGM.GUI.ComponentDefault.MainView
        {
            public Form2()
            {
                InitializeComponent();
            }
    
            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                var option = NGM.Client.SystemHelper.GetOptionConfig(this.Text, true);
                option.ScriptAutoUpdate = (sender as CheckBox).Checked;
                NGM.Client.SystemHelper.SaveOptionConfig(this.Text, option, true);
            }
        }
    }

     

     

    NGM.Client 네임스페이스에 시스템에 대한 설정을 쉽게 변경할 수 있도록 해주는 핼퍼 클래스가 정의되어 있습니다. 전체 네임스페이스는 NGM.Client.SystemHelper입니다. 이 클래스를 이용하면 클라이언트 설정이나 단축키를 비롯해 옵션도 변경이 가능합니다. 코드를 유심히 보면 쉽게 알 수 있을겁니다. 아래 코드에서 파라메터(Parameter)인 this.Text와 true가 중요합니다.

    var option = NGM.Client.SystemHelper.GetOptionConfig(this.Text, true);

     

     

    this.Text로 디자이너 고유 설정을 유지할 수 있습니다. 디자이너 A, 디자이너 B와 같은 이름을 가진 디자이너가 2개 있다고 생각해보세요. this.Text가 저장하는 파일명의 키가됩니다. 그렇기 때문에 각각 다른 설정 정보를 유지할 수 있게됩니다. 저 식별자가 동일하면 덮어쓰기가 되겠죠^^;

    궁금한 사항은 질문과 답변 게시판을 이용해주세요~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.