반응형

 

타이머를 이용해서 간단하게 구현할수 있습니다.

 

유저에게 필수 입력 항목을 강조할때 사용했습니다.

 

1) 코드 예제

 

이해가 안되시면 코드전체를 긁어서 사용하시면 됩니다.

 private Timer mBlinkTimer = new Timer();
       private bool mStart = false;
​
       public Form1()
       {
           InitializeComponent();
       }
​
       Button btnBlink;
       Button btnRun;
​
       private void Form1_Load(object sender, EventArgs e)
       {
           this.Size = new Size(1000, 500);
​
           btnBlink = new Button();
           btnBlink.Size = new Size(300, 300);
           btnBlink.Location = new Point((this.Width - btnBlink.Size.Width) / 2, (this.Height - btnBlink.Size.Height) / 2);
           this.Controls.Add(btnBlink);
​
           btnRun = new Button();
           btnRun.Text = "Start/Stop";
           btnRun.Size = new Size(100, 0);
           btnRun.Dock = DockStyle.Right;
           this.Controls.Add(btnRun);
​
           btnRun.Click += btnRun_Click;
​
           mBlinkTimer.Interval = 500;
           mBlinkTimer.Tick += BlinkTimer_Tick;
​
           btnBlink.BackColor = Color.Gainsboro;
       }
​
       private void BlinkTimer_Tick(object sender, EventArgs e)
       {
           if (mStart)
           {
               if (btnBlink.BackColor == Color.Gainsboro)
               {
                   btnBlink.BackColor = Color.Yellow;
               }
               else
               {
                   btnBlink.BackColor = Color.Gainsboro;
               }
           }
       }
​
       private void btnRun_Click(object sender, EventArgs e)
       {
           mBlinkTimer.Enabled = !mStart;
           mStart = !mStart;
       }

Timer Interval에 반짝일 속도를 설정하고 

Timer Tick 이벤트에서

멤버 변수인 불린 start가 true 일때만 반짝이게 하는 코드입니다.

 

 

 

2) 결과

 

반응형
반응형

 

 

1. 코드 예시

​
       private DataTable CreateDataTable()
       {
           DataTable dt = new DataTable();
​
           dt.Columns.Add("NUM", typeof(int));
           dt.Columns.Add("NAME", typeof(string));
           dt.Columns.Add("DESC", typeof(string));
​
           for(int i=1; i <= 10; i++)
           {
               var dr = dt.NewRow();
​
               dr["NUM"] = i;
               dr["NAME"] = i % 2 == 0 ? "이름" : null;
               dr["DESC"] = "";
​
               dt.Rows.Add(dr);
           }
​
           return dt;
       }
       
       private void Form1_Load(object sender, EventArgs e)
       {
           gridControl1.DataSource = CreateDataTable();
​
           gridView1.Columns["NAME"].ShowButtonMode = DevExpress.XtraGrid.Views.Base.ShowButtonModeEnum.ShowAlways;
       }
​
     
​
       private void gridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
       {
           RepositoryItemButtonEdit rbtnEdit = new RepositoryItemButtonEdit();
​
           if(e.Column.FieldName == "NAME")
           {
               if(e.CellValue.ToString() == "")
               {
                   e.RepositoryItem = rbtnEdit;
               }
           }
       }

 

CustomRowCellEdit 이벤트에서 표시하고 싶은 셀에 조건을 두어 RepositoryItem에 버튼을 추가한다.

 

 

 

2. 실행 결과

 

반응형
반응형

 

MS SQL ORDER BY 조건

 

프로그래밍시 정렬을 해도되지만

  

쿼리단계에서 ORDER BY CASE 문을 이용한 정렬 방법이다

 

다음과 같은 테이블이 있을때

 

USER_ST 3, 2, 1, 4 로 정렬하려면

 

SELECT * FROM USERS
ORDER BY 
  CASE 
    WHEN USER_ST = 3 THEN 0 
	WHEN USER_ST = 2 THEN 1
	WHEN USER_ST = 1 THEN 3
	WHEN USER_ST = 4 THEN 4
	ELSE 99
  END ASC

위와 같이 CASE 를 사용하여 임의로 순서를 지정해주면 된다.

 

 

 

SELECT * FROM USERS
ORDER BY 
  CASE 
    WHEN USER_ST = 3 THEN 0 
	WHEN USER_ST = 2 THEN 1
	WHEN USER_ST = 1 THEN 3
	WHEN USER_ST = 4 THEN 4
	ELSE 99
  END ASC,
  CASE 
    WHEN USER_ID = 'PARK' THEN 0
	ELSE 1
  END ASC

위와 같이 CASE 문을 여러개 중복 사용하여 정렬도 가능하다.

반응형

+ Recent posts