즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

개발 70

[2021.04] Devexpress ComboBoxEdit 아이템에 Class Object 넣어서 처리하기

오늘도 제목 뽑기가 힘드네요. 카테고리를 나눠야 할까요? 각설하고 오늘은 심플합니다. Devexpress에서 CustomDiplayText, Popup이라는 이벤트를 만들어서 가지고 있는 아이템을 수정해서 보여주는 이벤트는 알고 있을 겁니다만, 오늘은 이거 전혀 사용하지 않습니다. CustomDisplayText는 선택된 아이템을 콤보박스내에 표시하는 용도이고, Popup은 Popup버튼을 눌러서 나오는 Listbox의 내용을 바꿔줄 때 사용하는데 아래 방법을 이용하면 심플하게 콤보박스 내에 단일 정보가 아닌 다중정보를 담는 클래스 오브젝트를 넣어서 사용할 수 있습니다. 자 클래스를 설계해보죠. // 클래스 요소는 상황에 맞게 바꿔서 사용하시면 됩니다. public class SampleItem { pu..

[2021.04] C# + DevExpress Grid에서 문자로 된 숫자 정렬하기

3, 2, 1, 11, 5, 6, 7, 8, 9, 10, 4, 12 이렇게 숫자가 있다고 치자. 이것을 DevExpress에서 정렬하라고 하면 다음처럼 정렬된다. 1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9 이는 숫자가 아닌 문자로 정렬되기 때문이다. 열의 속성을 숫자형태로 하면 자동으로 숫자로 정렬되는 뭔가가 있으면 좋겠으나 DevExpress에서는 CustomColumnSort()라는 메서드를 제공해준다. 정렬하고자 하는 컬럼의 속성 중 SortMode를 Custom으로 수정한다. 컬럼을 그리드에 추가해주는 로직 다음에 추가해주면 된다. treeDICOM.Columns["col1"].SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom; tre..

[2021.04] C#에서 WIN32 API를 이용한 객체로 폼 이동방법

제목 만들기 참 까다롭고 설명하기 난해할 것 같은데, 예를 들어 설명해보겠습니다. 폼의 Borderstyle을 None으로 해서 툴박스나 X박스 없이 이미지를 백그라운드로 입혀서 이쁘게 만들려고 하면, 어? 툴박스가 사라져서 폼을 이동할 수 있는 방법이 사라집니다. 이런 어플리케이션 보면 거의 움직이는 것을 본적이 없는 것 같네요. 그런데 난 움직이게 하고 싶다. 하면 이 글을 잘 찾아오신 겁니다. 단, 윈도우32 API를 이용할 것이기 때문에 윈도우에서만 됩니다. 아래 예제는 폼 자체에 이벤트를 후킹할 것이기 때문에 폼의 영역 아무곳을 클릭해서 잡아 끌면 폼 자체가 이동됩니다. 옛날 윈도우 개발하시던 분들 SendMessage, ReleaseCapture 많이 보셨을 겁니다. 이것을 이용합니다. con..

개발/C# 2021.04.06

[2021.04] C#에서 이중 인증 중 OTP 활용 방법

개발환경: VisualStudio 2017, Devexpress 20.x 왜이리 한글 문서들로 정리된 문서가 없는지 또 작성해본다. 보통 이중인증 보다는 투-팩터 인증이라는 단어를 많이 사용한다. (나만 그런가?) 요즘 사이버 보안이 잘 뚫리다 보니 아이디/패스워드 로그인 체계에 덧 붙여서 이중 또는 다중 인증을 사용토록 하는게 요즘 인/허가 가이드의 보안 방침이다. 이중 인증의 방식은 공인인증, 사설인증, 생체인증, 간편인증, ... 진짜 많다. 그 중 본문에서는 시간정보와 비밀키를 이용한 OTP를 다뤄볼까 한다. OTP를 계산하는 방식은 동일하기 때문에 어떤 OTP앱을 사용해도 동일하게 인증 체크가 가능하다. 개념만 알면 엄청 단순해서 글 작성이 안된 것일까? 아니면 많이 사용하지 않아서일까? 참고U..

개발/C# 2021.04.06

[2021.03] VB 6.0 이중 실행 방지 구문

안녕하세요. 오늘은 거의 제가 사용하지 않지만 10년 넘게 개발했었던 VB 6.0 팁 코드를 적어볼까 합니다. 서버 프로그램 개발 시 사용자나 스케줄러에 의해서 이중 실행될 경우에 대한 문제가 있을텐데요. 이를 프로그램 진입 점에 이중실행 여부를 체크하여 종료시키는 중요한 코드입니다. 자체적으로 이중 실행 구문을 체크하는 코드는 다음과 같습니다. If App.PrevInstance = True Then Exit Sub end if 그러나 윈도우 하나의 세션에서만 감지할 뿐 다른 세션에서 실행 시 감지를 못하는 단점이 있습니다. 보통 원격데스크탑으로 접속하면 세션이 추가로 생성되서 열리는데 여기서 실행이 되지 않았다고 판단하고 사용자가 실수로 실행을 할 수 있다는 여지가 생깁니다. 저도 이런 실수를 무지 ..