PROGRAMMING WORKSHOP

VB.Net |
DataGridView+DataGridViewImageColumn(그림 열)

DataGridView의 열에
콤보상자를 넣는 DataGridViewComboColumn
버튼을 넣는 DataGridViewButtonColumn
체크박스를 넣는 DataGridViewCheckBoxColumn
등을 앞에서 해보았다
그런데 데이타베이스같은 원본소스에는 제품등의 제원을
나타내면서 사진도 정보중의 하나로 있을경우가 있다
억세스에서도 Image휠드(OLE Object휠드)가 있었던 것을
기억하시면 더욱 좋고..
DataGridView에도 그림화일을 아래와 같이 넣을수 있다



억세스를 테이타소스로 하던, 엑셀화일을 하던,
SQL서버를 사용하던, 텍스트화일을 쏘스로 활용하던,
XML화일을 쏘스로 사용하던..
적절히 프로그래밍을 해서 윈도우폼이 열리게 하면 되는 것이다
그러니 누가 무엇을 만들어 달라고 할때는
어떤 것을 어떻게 조합하여야 할지는
사용자의 요구, 목적하고자 하는 의도에 따라서
다양하게 조합할 수 있으면 있을수록 파워가 생기는 것이다
인터페이스도 또한
엑셀로 할지, 모바일폰으로 할지,웹페이지로 할지
억세스의 폼으로 할지, 윈도우의 폼으로 할지 정말
다양할 것이다
문제는 어느 것 한가지라도 깊이 제대로 알면
나머지는 거의 같은 원리로 움직이는 것이라서 응용을 하면 된다
그러나 이것, 찝쩍, 저것 찝쩍, 깊이 알고 있는 것이 없다면
아무것도 할 수 없다
엑셀 VBA는 기본으로 끝내라..그러면 된다
혹은 윈도우프로그램을 깊이 알았다면 이제부터
엑셀을 또 알아가면 된다
그런데 엑셀은 다른 여타 프로그래밍과는 달리 좀 특징적이고
변화무쌍하다
그러니 엑셀프로그래밍부터 한 사람이 좀더 다른 것을 섭렵하기
쉽고 좋은 것이다

아무튼..
그림화일을 어디서 어떻게 받아들일까?
이런 것은 콤파일되는 시스템 화일이 아니고 데이타화일중의 하나다
그러니 데이타쏘스화일에 해당 그림화일의 경로와 화일명이 있을 것이고
이 데이타쏘스에서 전달받은 경로와 화일명을 읽어서
DataGridView의 DataGridViewImageColumn에 주면 될 것이다
여기에서는 그냥 소루션창의 데이타화일로 직접 쌤플을 4개 넣고
이것을 버튼을 크릭하면 DataGridView의 다른 정보와 더불어
하나의 열에 그림이 나타나게 해보자
이런 데이타화일은 앞페이지에서 이야기했지만
이런 것은 금방, 금방 잊어 먹구 마니까..한번 더 이야기 하면



이렇게 하지 않으면 그림화일을 찾지 못한다고 에러가 난다
위와 같이 해주어야 Bin디렉토리로 넘어가고 디버깅시
이 폴더내에서 데이타화일을 읽어 낸다

즉 데이타화일이 소루션창에 있는데..왜 못읽지???라고 하는 것에
대한 답이 위의 속성설정인 것이다
화일 다운 받고 하시다가 뭐야..에러가 퍽퍽나고 안되잖아!!@
라고 혹, 성질 급한 분의 그림이 그려져서 자꾸 이야기 한다

에드인도 다운 받으면서 에러가 난다..
결국은 설명을 잘 읽어보시면 되는데..
워낙에 글 읽기들을 싫어하셔서,,^^

그리고 그림을 보면 영문버전이다..
영문버전이 아무래도 빠르니까..다운 받아 놓고 쓰다 보니
그냥 사용하는 것이니..한글버전에 어떻게 번역해 놓았는지
잘 모르겠으니..워낙 감들이 좋으시니까..척 보면 알것이라고 믿고..!!

위와 같이 그림화일이 나타낙 하거나 하는 것은
대부분 읽기전용으로 하거나 새 행을 추가하지 못하게
설정하는 것이 좋다
그렇지 않으면 아래의 그림과 같이 새 행자리의 그림화일이
빈탕표시가 보기 흉하게 나타날 것이다



DataGridView를 선택하고(Design Time에 그려 넣었다면)
속성창에서
AllowUserToAddRows=False 로 해주던가
코드상에서
DataGridView1.AllowUserToAddRows=False로 해주던가 하면
사용자가 정보를 추가하지 못하게 될 것이고 추가행이 나타나지 않는다

영어 말 그대로다!!
Allow User To Add Rows
사용자가 새행들을 추가하게 하라!!를 False로 준셈이다

프로그래밍을 배운다는 것은 영어를 생활화하는 것이라고 생각하면
영어도 얻고 프로그래밍도 얻는다!!
이왕이면 돌맹이 하나로 두마리 새를 잡는 것이 좋겠지!!
오래전에는 메모리용량들이 작아서 쩔쩔매던 때라
속성명같은 것도 알수 없는 짧게 쭐여서 표현했지만
요사이는 메모리하드가 빵빵해서 그냥 영어 하듯이 줄줄이 풀어댄다
위의 데이타화일의 속성도 하나는 Copy Always라는 것은 항상
컴파일 할때마다 데이타화일이 바뀌었다면 Bin디렉토리로 옮기고
Copy if newer 는 같은 데이타화일이라도 내용이 바뀌었을때만
Bin디렉토리로 복사하여 옮기라는 소리다
디폴트로 Do Not Copy라고 되어 있어서 설정하지 않으면 에러가 나는 것이다
아무튼
말도 안되고 별로 의미도 없는 영어 다이아로그를 달달달 외우는 것보다
훨씬 경제적이고 마음에 쏙쏙 남는 영어가 될 것이다
그렇게 마음을 먹는다면!!!

특별히 바쁜 일 없으면(?) 프로그래밍언어와 영어를 더불어
즐기시는 것이 몸과 마음에 좋을 것이다..

즐거운 프로그래밍!!

***[LOG-IN]***