퇴근5분전

이건 데이타베이스 브라우져 버젼2 로써
앞에 블로깅 한 것에 이전버젼으로 초기에 만들어졌던 브라우져보다 조금 독특한 방식으로 동작됨.

사용자 삽입 이미지
<< 프로그램 설정 관련 화면 >>

사용자 삽입 이미지
<< Insert 관련 화면 >>
* 수정이나 삭제 역시 이화면으로 사용됨.

UI는 정말 어쩔수 없는듯 함.


제작의도!
 원래는 취업의도로 부족한 경력을 조금이라도 어필해보고자 만들었던 것이고
1년정도 C#을 했던 경험과 공부했던 지식들을 모아서 만들었었음.

 이 프로그램은 DB와 상호 작용시 프로시져를 이용하며, 그때 만들어져있던 프로시져생성기와 더블어 사용하게되며 프로시져를 제작 후 해당 프로시져를 프로그램에 등록하게 되면 자동으로 UI를 표출하고 데이타를 가져와서 뿌려주고 추가 수정 삭제 작업역시 동일하게 구현이 됨.

 이 기능들을 바탕으로 조금더 나은 UI를 그려내고자 작업하다가 이번에 새로운 브라우져가
만들어졌었다.

UI참... 거시기 하네~~


'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글

FND를 이용한 디지탈 시계  (0) 2009.05.02
FND( SevenSegment )  (0) 2009.05.02
처음 만든 이미지 뷰어  (0) 2009.05.02
폼간 데이타 전달  (0) 2009.05.02
그리드뷰 컨트롤  (0) 2009.05.02

사용자 삽입 이미지

기능1 : 단순한 이미지 뷰어 기능
기능2 : 알집을 이용해서 압축된 이미지 파일 관리

지정된 폴더내에 알집을 이용해서 풀어놓고 볼수 있게되며
파일 관리 한곳에 몰아놓을수 있어서 쉬워짐.

다시만든다고 하면... 좀더 멋지게 나오겠지??????


'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글

FND( SevenSegment )  (0) 2009.05.02
데이타베이스 브라우져 ver2  (0) 2009.05.02
폼간 데이타 전달  (0) 2009.05.02
그리드뷰 컨트롤  (0) 2009.05.02
SMS TextLength 비교  (0) 2009.05.01

훈스닷넷에서 폼간 데이타 전달 관련해서 질문글이 자주 올라와서
여러가지방법으로 전달방법을 구현해서 올렸던적이 있었음.


사용자 삽입 이미지

수정을 누르면 전달 받는 폼이 뜸
사용자 삽입 이미지

폼이 뜨면 적용하면 데이타값을 적용하고 그리드뷰를 다시 셋팅하게됨.




참 쉽죠잉..

인터페이스를 이용하거나, 생성자를 이용하거나. 데이타를 전달할 방법은 많음.

'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글

데이타베이스 브라우져 ver2  (0) 2009.05.02
처음 만든 이미지 뷰어  (0) 2009.05.02
그리드뷰 컨트롤  (0) 2009.05.02
SMS TextLength 비교  (0) 2009.05.01
Excel Export  (0) 2009.05.01


테이블형태의 데이타를 표시해주는 데이타 그리드뷰.
2년 내내 이것뿐이 써본게 없다. 

모든 그리드뷰를 동일한 설정을 주고자 한다면 UI디자인상에서 하는건
오마이갓!! 이될것이다.

이를 DataGridViewManager 라는것으로 만들어서 처리한다.
코드가 많아보인다라면.. 우리에겐 카피앤패스트가 있기 때문에 주저하지 않고 적용이 가능해진다.

  private void InitReportDestinationGrid()
        {
            try
            {
                #region  그리드 뷰 셋팅!
// 컬럼추가
                DataGridViewManager.ColumnAdd(ReportDestinationGrid, "NO", "전송타입", DataGridViewManager.ColumnType.TextBox, true);
                DataGridViewManager.ColumnAdd(ReportDestinationGrid, "USERYN0", "자연지진", DataGridViewManager.ColumnType.CheckBox, false);
                DataGridViewManager.ColumnAdd(ReportDestinationGrid, "TARGET", "전송매체", DataGridViewManager.ColumnType.TextBox, true);
                DataGridViewManager.ColumnAdd(ReportDestinationGrid, "MEMBER", "등록자수", DataGridViewManager.ColumnType.TextBox, true);
                DataGridViewManager.ColumnAdd(ReportDestinationGrid, "USERYN1", "인공지진", DataGridViewManager.ColumnType.CheckBox, false);

                Color columnBackGroundColor = Color.White; // 백그라운드컬러
// 컬럼셋팅
                DataGridViewManager.ColumnsConfig(ReportDestinationGrid, "NO", columnBackGroundColor, false,
                    null, 1, DataGridViewColumnSortMode.NotSortable,
                    new DataGridViewManager.DgvContentAlignment(DataGridViewContentAlignment.MiddleCenter));
                DataGridViewManager.ColumnsConfig(ReportDestinationGrid, "USERYN0", columnBackGroundColor, null,
                    null, 20, DataGridViewColumnSortMode.NotSortable,
                    new DataGridViewManager.DgvContentAlignment(DataGridViewContentAlignment.MiddleCenter));
                DataGridViewManager.ColumnsConfig(ReportDestinationGrid, "TARGET", columnBackGroundColor, null,
                    null, 40, DataGridViewColumnSortMode.NotSortable,
                    new DataGridViewManager.DgvContentAlignment(DataGridViewContentAlignment.MiddleLeft));
                DataGridViewManager.ColumnsConfig(ReportDestinationGrid, "MEMBER", columnBackGroundColor, null,
                    null, 40, DataGridViewColumnSortMode.NotSortable,
                    new DataGridViewManager.DgvContentAlignment(DataGridViewContentAlignment.MiddleCenter));
                DataGridViewManager.ColumnsConfig(ReportDestinationGrid, "USERYN1", columnBackGroundColor, null,
                    null, 20, DataGridViewColumnSortMode.NotSortable,
                    new DataGridViewManager.DgvContentAlignment(DataGridViewContentAlignment.MiddleCenter));
// 그리드뷰 셋팅
                DataGridViewManager.Config(ReportDestinationGrid, false, false, false, false, null, false,
                    new DataGridViewManager.DgvSelectionMode(DataGridViewSelectionMode.FullRowSelect),
                    new DataGridViewManager.DgvCellBorderStyle(DataGridViewCellBorderStyle.Sunken),
                    new DataGridViewManager.DgvAutoSizeColumnsMode(DataGridViewAutoSizeColumnsMode.Fill)
                    );
// 그리드뷰 컬러 설정
                DataGridViewManager.SetRowColor(ReportDestinationGrid, columnBackGroundColor, columnBackGroundColor);
                #endregion
                #region 그리드 뷰 데이타 바인딩
// 그리드뷰 데이타 바인딩
                StringBuilder sb = new StringBuilder();
                {
                    sb.AppendFormat(" Select SendType");
                    sb.AppendFormat("       ,Send_YN");
                    sb.AppendFormat("       ,SendList");
                    sb.AppendFormat("       ,User_Count");
                    sb.AppendFormat("       ,Send_YN1");
                    sb.AppendFormat(" From   {테이블명}");
                    sb.AppendFormat(" Order by SendList ASC");

                    DataSet ds = msDB.GetDataSet(sb.ToString());

                    if (DataSetCheck.HasTable(ds) && DataSetCheck.HasTableRow(ds, 0))
                    {
                        DataGridViewManager.RowsAdd(ReportDestinationGrid, ds.Tables[0], false);
                       //데이타 그리드를 선택하고 데이타를 바인딩 시킴

        }
         else
        {
             Alert("검색된 데이타가 없습니다.");
         }
     }
      sb = null; 
      #endregion
 }
 catch (Exception ex)
 {
         Alert(ex.Message);
 }

}

'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글

처음 만든 이미지 뷰어  (0) 2009.05.02
폼간 데이타 전달  (0) 2009.05.02
SMS TextLength 비교  (0) 2009.05.01
Excel Export  (0) 2009.05.01
판넬 슬라이드 애니메이션  (0) 2009.05.01



전에 큐브를 구현해보려고 한적이 있었음.
한 면을 두고 그 면에 회전방향을 지정해서 돌리는 로직을 만들었었는데
간단히 올려봄. 

아래 소스는 동일하게 동작한다.
과연 무엇을 쓸것인가?
하나는 그나마 보기에 좋고 소스가 조금더 길다( 쬐끔 )
하나는 보기어렵고 소스가 짧다.

        void RotationFor(bool CW)
        {
            string[] buffer = new string[3];

            buffer[CW ? 2 : 0]  = CubeBuffer[CW ? 11 : 0 ];
            buffer[1]           = CubeBuffer[CW ? 10 : 1 ];
            buffer[CW ? 0 : 2]  = CubeBuffer[CW ?  9 : 2 ];

            for (int loop = 0; loop < 3; loop++)
            {
                CubeBuffer[(CW ? 11 - (loop * 3)-0 : (loop * 3) + 0 ) ] = CubeBuffer[(CW ?11 - (loop * 3) - 3 : (loop * 3) + 3  )];
                CubeBuffer[(CW ? 11 - (loop * 3)-1 : (loop * 3) + 1 ) ] = CubeBuffer[(CW ?11 - (loop * 3) - 4 : (loop * 3) + 4  )];
                CubeBuffer[(CW ? 11 - (loop * 3)-2 : (loop * 3) + 2 ) ] = CubeBuffer[(CW ?11 - (loop * 3) - 5 : (loop * 3) + 5  )];               
            }

            CubeBuffer[CW ? 2 :  9] = buffer[CW ? 2 : 0] ;
            CubeBuffer[CW ? 1 : 10] = buffer[1];
            CubeBuffer[CW ? 0 : 11] = buffer[CW ? 0 : 2] ;
        }

        void Rotation(bool CW)
        {
            string[] buffer = new string[3];
            if (!CW)
            {
                buffer[ 0] = CubeBuffer[ 0];
                buffer[ 1] = CubeBuffer[ 1];
                buffer[ 2] = CubeBuffer[ 2];

                CubeBuffer[ 0] = CubeBuffer[ 3];
                CubeBuffer[ 1] = CubeBuffer[ 4];
                CubeBuffer[ 2] = CubeBuffer[ 5];

                CubeBuffer[ 3] = CubeBuffer[ 6];
                CubeBuffer[ 4] = CubeBuffer[ 7];
                CubeBuffer[ 5] = CubeBuffer[ 8];

                CubeBuffer[ 6] = CubeBuffer[ 9];
                CubeBuffer[ 7] = CubeBuffer[10];
                CubeBuffer[ 8] = CubeBuffer[11];

                CubeBuffer[ 9] = buffer[ 0];
                CubeBuffer[10] = buffer[ 1];
                CubeBuffer[11] = buffer[ 2];
            }
            else
            {
                buffer[ 2] = CubeBuffer[11];
                buffer[ 1] = CubeBuffer[10];
                buffer[ 0] = CubeBuffer[ 9];
               
                CubeBuffer[11] = CubeBuffer[ 8];
                CubeBuffer[10] = CubeBuffer[ 7];
                CubeBuffer[ 9] = CubeBuffer[ 6];
               
                CubeBuffer[ 8] = CubeBuffer[ 5];
                CubeBuffer[ 7] = CubeBuffer[ 4];
                CubeBuffer[ 6] = CubeBuffer[ 3];
               
                CubeBuffer[ 5] = CubeBuffer[ 2];
                CubeBuffer[ 4] = CubeBuffer[ 1];
                CubeBuffer[ 3] = CubeBuffer[ 0];

                CubeBuffer[2] = buffer[ 2];           
                CubeBuffer[1] = buffer[ 1];             
                CubeBuffer[0] = buffer[ 0];
               
               
            }

        }



'# 2) .Net ( Vs 2005 ) > 기타' 카테고리의 다른 글

PWD 암호화 객체.  (0) 2009.05.08
인터페이스와델리게이트조합1  (2) 2009.05.08
DB로컬 연결시 문구  (0) 2009.05.02
XML 컨트롤...  (0) 2009.05.02
DB Connection Factory  (0) 2009.05.01


SBS 전자 자막의뢰 Web사이트 구축하면서 
로그파일관리 페이지를 만들면서 작성했던 부분임.
간단한 재귀로 하위 디렉토리들을 추가 하게 됨. 

 /// <summary>
 /// 폴더 이하 파일&디렉토리 검색해서 트리뷰에 추가하는 재귀 함수
 /// </summary>
 /// <param name="sDirectoryName"></param>
 /// <returns></returns>
 private TreeNode GetTreeNodes(string sDirectoryName, string rootPath)
 {

  string[] fileNames = Directory.GetFiles(sDirectoryName);
  string[] directoryNames = Directory.GetDirectories(sDirectoryName);

  int fileCount = fileNames.Length;

  //TreeNode root = new TreeNode(sDirectoryName.Replace(rootPath, ""));
  TreeNode root = new TreeNode(string.Format("{0} : {1}", sDirectoryName.Replace(rootPath, ""), fileCount), sDirectoryName.Replace(rootPath, ""));

  foreach (string dir in directoryNames)
  {
   if( dir.Replace(sDirectoryName+"\\","") == ".svn") continue;
   TreeNode tnode = GetTreeNodes(dir, sDirectoryName+@"\");    // 재귀!
   tnode.SelectAction = TreeNodeSelectAction.Select;      // 포스트백 발생하지 않게 됨.
   root.ChildNodes.Add(tnode);
  }
  //foreach (string fileName in fileNames)
  //{
  //    TreeNode tnode2 = new TreeNode(fileName.Replace(sDirectoryName + "\\", ""));
  //    tnode2.SelectAction = TreeNodeSelectAction.None;
  //    root.ChildNodes.Add(tnode2);
  //}
  root.SelectAction = TreeNodeSelectAction.Select;
  return root;
 }




Xml을 조작하기엔     XmlDocument 로 가지고 놀기 편하였다.


XmlDocument xDoc = new XmlDocument();
xDoc.Load : 읽어오기
xDoc.Save : 저장하기
XmlNodeList  xList  = xDoc.GetElementsByTagName("태그명");
xDoc["태그명"]


< XmlElement1   XmlAttribute1  XmlAttribute2 ... >
< XmlElement2   XmlAttribute1  XmlAttribute2 ... />
< XmlElement3   XmlAttribute1  XmlAttribute2 XmlAttribute3 ... />
</XmlElement1>

간단하게 위처럼 XmlElement로 접근이 쉽다.

간단한 설정 데이타나, 메세지 전달이 필요할때 변환이 쉽더라.


'# 2) .Net ( Vs 2005 ) > 기타' 카테고리의 다른 글

PWD 암호화 객체.  (0) 2009.05.08
인터페이스와델리게이트조합1  (2) 2009.05.08
DB로컬 연결시 문구  (0) 2009.05.02
큐브~  (0) 2009.05.02
DB Connection Factory  (0) 2009.05.01



SMS 입력받고 데이타 길이 체크하는 처리부분.

 public partial class Form1 : Form
    {
        bool char_ASCIICODE = false;

        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {           
            int length = Encoding.Default.GetBytes(this.textBox1.Text).Length;

            if (length > 80)
            {
                this.textBox1.Text = this.textBox1.Text.Substring(0, this.textBox1.TextLength - (char_ASCIICODE ? 1 : 2));
                char_ASCIICODE = false;
                this.textBox1.Select(this.textBox1.TextLength, 0);
                return;
            }
            length = Encoding.Default.GetBytes(this.textBox1.Text).Length;
            this.label1.Text = string.Format("{0}/80", length);
        }
       
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar < 256)
                char_ASCIICODE = true;
            else
                char_ASCIICODE = true;
        }   
}

그리 어려운 코드가 아니라 주석도 없다!

'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글

폼간 데이타 전달  (0) 2009.05.02
그리드뷰 컨트롤  (0) 2009.05.02
Excel Export  (0) 2009.05.01
판넬 슬라이드 애니메이션  (0) 2009.05.01
데이타베이스 브라우져 ver3  (0) 2009.05.01


데이타 그리드 뷰를 Excel로 내보내는 처리를 함.


아래는 OleDb를 이용해서 Excel파일을 만들어 그 내용을 저장하는
ExcelToExportClass 객체를 만들어서 사용하는 부분임.

추가적으로 프로그래스바를 지원하며
변환 중에 프로그래스바에 진행률을 전달하여 표시해줌.

 void _Export()
        {
            ExcelToExportClass ex = new ExcelToExportClass();

            ex.ExportStart = delegate(int max)
            {
                this.Invoke(prog.MaxInit, new object[] { max });
            };

            ex.Exporting = delegate()
            {
                this.Invoke(prog.Increment, new object[] { 1 });
            };

            ex.ExportEnd = delegate()
            {
                this.Invoke(prog.Hide);
                MessageBox.Show("파일이 저장되었음.");
            };
            //ex.ExcelToExport(this.dataGridView3, DateTime.Now.ToString("HHmmss"));
            ex.ExcelToExport(this.dataGridView3);
        }

'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글

그리드뷰 컨트롤  (0) 2009.05.02
SMS TextLength 비교  (0) 2009.05.01
판넬 슬라이드 애니메이션  (0) 2009.05.01
데이타베이스 브라우져 ver3  (0) 2009.05.01
다각형 내부 클릭 체크.  (0) 2009.05.01


DB연결객체과 Excel Access 연결객체를 만들어주는 놈을 만들었다. 

    /// <summary>
    /// 연결 문자열 팩토리.
    /// </summary>
    public static class OleDbConnetionFactory
    {

        /*
            Provider (OLE DB only) 
            Access : Microsoft.JET.OLEDB.4.0 
            Oracle - MSDAORA 
            MS SQL - SQLOLEDB 
            Data Source(server) :  데이터베이스 위치 (Domain or IPAddress) 
            Initial Catalog (database): 데이터 베이스 이름 
            User ID/Password : 인증 정보  
         */
        /// <summary>
        /// MS-SQL 데이타 베이스 연결 문자열.
        /// </summary>
        /// <returns> 연결 문자열 </returns>
        public static string MSSQLConnectionString()
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("AppSettings");

            OleDbConnectionStringBuilder oleCon = new OleDbConnectionStringBuilder();
            oleCon.Add("Provider", "SQLOLEDB");
            oleCon.Add("Data Source", string.Format("{0}", "서버명"));
            oleCon.Add("UID", "아이디");
            oleCon.Add("PWD", "패스워드");
            oleCon.Add("Database", "DB명");
            return oleCon.ConnectionString;
        }


        /// <summary>
        /// 엑셀-> 읽기, 쓰기관련 플래그 셋팅
        /// </summary>
        public enum Excel_Imex
        {
            /// <summary>
            /// 읽기 적용
            /// </summary>
            Read = 1,
            /// <summary>
            /// 쓰기 적용.
            /// </summary>
            Write = 0
        }
        /// <summary>
        /// 엑세스(Excel) 데이타 베이스 연결 문자열
        /// </summary>
        /// <param name="ExcelFilePath"></param>
        /// <param name="imex"></param>
        /// <returns> 연결 문자열 </returns>
        public static string ExcelConnectionString(string ExcelFilePath, Excel_Imex imex)
        {
            OleDbConnectionStringBuilder oleCon = new OleDbConnectionStringBuilder();
            oleCon.Add("Provider", "Microsoft.Jet.OLEDB.4.0");
            oleCon.Add("Data Source", string.Format("{0}", ExcelFilePath));
            oleCon.Add("Extended Properties", string.Format("Excel 8.0;imex={0};HDR=Yes", (int)imex));
            return oleCon.ConnectionString;
        }
    }

'# 2) .Net ( Vs 2005 ) > 기타' 카테고리의 다른 글

PWD 암호화 객체.  (0) 2009.05.08
인터페이스와델리게이트조합1  (2) 2009.05.08
DB로컬 연결시 문구  (0) 2009.05.02
큐브~  (0) 2009.05.02
XML 컨트롤...  (0) 2009.05.02