9.1장은 사용자 조건식을 불러오는 방법입니다. 먼저 화면을 구성합니다.
conditionDataGridView의 속성
속성 | 값 |
(Name) | conditionDataGridView |
AllowUserToAddRows | False |
AllowUserToDeleteRows | False |
RowHeaderVisible | False |
SelectionMode | FullRowSelect |
화면 구성을 마쳤다면 Form1.cs에 코드를 작성해서 조건식을 요청하겠습니다. 조건식 요청하는 순서는 다음과 같습니다.
GetConditionLoad(일반함수) 호출 -> OnReceiveConditionVer(이벤트 함수) 호출 -> GetConditionNameList(일반함수) 호출
GetConditionLoad 함수를 호출하면 OnReceiveConditionVer이벤트 함수가 호출됩니다. OnReceiveConditionVer함수 안에서 GetConditionNameList 함수를 호출해서 조건식 목록을 가져옵니다.
9.1장에서는 사용자가 로그인하면 호출되는 OnEventConnect 함수 안에서 GetConditionLoad함수를 호출하도록 하겠습니다.
public void onEventConnect(object sender , AxKHOpenAPILib._DKHOpenAPIEvents_OnEventConnectEvent e) { if (e.nErrCode==0) { axKHOpenAPI1.GetConditionLoad(); } }
axKHOpenAPI1.GetConditionLoad(); 함수는 조건 검색 목록 요청을 성공하면 1 , 아니면 0을 리턴합니다. OnReceiveConnect 함수에서 GetConditionLoad 함수를 호출했다면 이제 Form1.cs의 생성자에 OnReceiveConditionVer함수를 추가합니다.
axKHOpenAPI1.OnReceiveConditionVer += onReceiveConditionVer;
OnReceiveConditionVer 함수의 내용을 작성합니다. OnReceiveConditionVer 함수의 AxKHOpenAPILib.DKHOpenAPIEventsOnReceiveConditionVerEvent 타입 매개변수에는 사용자가 GetConditionLoad를 통해서 보낸 요청의 결과가 담겨 있습니다.
public void onReceiveConditionVer(object sender , AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveConditionVerEvent e) { if (e.lRet == 1) { axKHOpenAPI1.GetConditionNameList(); } }
함수를 정의한 모습입니다. 객체 e에 담긴 IRet 결과값이 1이면 정상적으로 조건식 정보가 요청 된 것입니다. 조건식 정보가 잘 요청 되었다면 GetConditionNameList 함수를 호출해서 조건식 이름들을 요청합니다. GetConditionNameList 함수를 호출해서 조건식을 요청하면 아래와 같은 형태로 결과가 반환됩니다.
007^조건식1;008^조건식2;014^조건식3;015^조건식4;020^조건식5;000^조건식6;
; 과 ^로 구분되어 있는 조건식인덱스와 조건식 이름을 분리해서 화면에 바인딩 하도록 하겠습니다.
맨 끝에 붙어있는 ;은 Split을 사용해서 문자열을 분리 할 때 문제를 발생시키므로 제거해줍니다.
string conditionList = axKHOpenAPI1.GetConditionNameList().TrimEnd(';');
TrimEnd 함수를 사용해서 맨 끝의 ; 을 제거했습니다. 조건식 인덱스와 조건식 이름을 얻기 위해서는 1차적으로 ;을 기준으로 문자열을 분리하고 , 2차로 ^을 기준으로 문자열을 분리해야 합니다. 문자열 맨 끝에 ;이 있으면 ;을 기준으로 분리할때 프로그램은 ; 뒤에 다른 문자열이 더 있는 것으로 인식하기 때문에 에러가 발생합니다. 아래와 같이 코드를 작성하면 조건식 인덱스와 조건식이름을 콘솔창에서 확인 할 수 있습니다.
public void onReceiveConditionVer(object sender , AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveConditionVerEvent e) { if (e.lRet == 1) { string conditionList = axKHOpenAPI1.GetConditionNameList().TrimEnd(';'); string[] conditionArray = conditionList.Split(';'); for (int i = 0; i < conditionArray.Length; i++) { string[] condition = conditionArray[i].Split('^'); Console.WriteLine("인덱스 = " + condition[0]); Console.WriteLine("조건식이름 = " + condition[1]); } } }
for 문 이전에 ;을 사용해서 문자열을 먼저 분리합니다. 그리고 ^를 기준으로 각각의 "조건식인덱스^조건식이름" 문자열을 분리합니다. 이제 분리한 조건식 인덱스와 조건식 이름을 화면에 바인딩 해보도록 하겠습니다.
conditionDataGridView.Rows.Add(); conditionDataGridView["조건식_조건식번호", i].Value = condition[0]; conditionDataGridView["조건식_조건식이름", i].Value = condition[1];
DataGridView에 행을 추가하고 인덱스마다 값을 바인딩 합니다.
전체 코드입니다.
using System.Windows.Forms; namespace WindowsFormsApp5 { public partial class Form1 : Form { public Form1() { InitializeComponent(); axKHOpenAPI1.CommConnect(); axKHOpenAPI1.OnEventConnect += onEventConnect; axKHOpenAPI1.OnReceiveConditionVer += onReceiveConditionVer; } public void onReceiveConditionVer(object sender , AxKHOpenAPILib._DKHOpenAPIEvents_OnReceiveConditionVerEvent e) { if (e.lRet == 1) { string conditionList = axKHOpenAPI1.GetConditionNameList().TrimEnd(';'); string[] conditionArray = conditionList.Split(';'); for (int i = 0; i < conditionArray.Length; i++) { string[] condition = conditionArray[i].Split('^'); conditionDataGridView.Rows.Add(); conditionDataGridView["조건식_조건식번호", i].Value = condition[0]; conditionDataGridView["조건식_조건식이름", i].Value = condition[1]; } } } public void onEventConnect(object sender , AxKHOpenAPILib._DKHOpenAPIEvents_OnEventConnectEvent e) { if (e.nErrCode==0) { axKHOpenAPI1.GetConditionLoad(); } } } }
실행화면입니다.
9.2장에서는 조건식을 사용해서 종목을 검색하는 방법에 대해서 알아보도록 하겠습니다.
'IT' 카테고리의 다른 글
JEUS의 heap size 설정 (0) | 2021.06.25 |
---|---|
[JEUS] JEUS 디렉토리 구조 (0) | 2021.06.25 |
Oracle SQL 강좌 (뷰) (0) | 2021.06.25 |
네이버 웹마스터 도구에 사이트맵(Sitemap) 등록 방법 (0) | 2021.06.25 |
Apache : CSR 생성 및 SSL 인증서 적용 (0) | 2021.06.25 |
댓글