팡이네

ComponentOne의 FlexGrid에서 Cell에 이미지 버튼을 표현하는 방법
아래의 방법은 일종의 이미지 버튼을 흉내내는 방법이다.

//이벤트 핸들러 추가
grdMain.MouseMove += new MouseEventHandler(grdMain_MouseMove);
grdMain.MouseDown += new MouseEventHandler(grdMain_MouseDown);

//커서 변경
private void grdMain_MouseMove(object sender, MouseEventArgs e)
{
	if (grdMain.MouseRow > 0)
	{
		if (grdMain.MouseCol == grdMain.Cols["ViewInfo"].Index)
			this.Cursor = Cursors.Hand;
		else
			this.Cursor = Cursors.Default;
	}
}

//마우스 클릭
private void grdMain_MouseDown(object sender, MouseEventArgs e)
{
	if (grdMain.MouseRow > 0)
	{
		if (grdMain.MouseCol == grdMain.Cols["ViewInfo"].Index)
		{
			Row row = grdMain.Rows[grdMain.MouseRow];
			string seqNo = row["SeqNo"].ToString();

			ViewInfo(seqNo);
		}
	}
}

//그리드 바인딩 후 아래와 같은 방법으로 이미지를 표시한다.
//전체 Row에 같은 이미지를 표시하고자 할 경우 아래와 같이 구현한다.
private void LoadCellImage()
{
	Hashtable ht = new Hashtable();
	ht.Add("", 특정 이미지);
	Column LinkCol = grdMain.Cols["ViewInfo"];
	LinkCol.ImageMap = ht;
	LinkCol.ImageAndText = false;
	LinkCol.ImageAlign = ImageAlignEnum.CenterCenter;
}

//해당 Row의 상태에 따라 다른 이미지를 표시하려면 아래의 메소드처럼 구현한다.
private void LoadCellImage()
{
	Hashtable ht = new Hashtable();

	//그리드 제목이 있을 경우 grdMain.Rows.Fixed부터 처리
	for (int i = grdMain.Rows.Fixed; i < grdMain.Rows.Count; i++)
	{
		Row row = grdMain.Rows[i];
		if (row["Exist"].ToString() == "Y")
		{
			ht.Add(row["SeqNo"].ToString(), 특정 이미지1);
		}
		else
		{
			ht.Add(row["SeqNo"].ToString(), 특정 이미지2);
		}
	}

	Column LinkCol = grdMain.Cols["SeqNo"];
	LinkCol.ImageMap = ht;
	LinkCol.ImageAndText = false;
	LinkCol.ImageAlign = ImageAlignEnum.CenterCenter;
}