|
경호 님이 쓰신 글 :
: 원영준 님이 쓰신 글 :
: : 만약 있다면 방법좀 일러 주시면 감사하겠습니다.
: :
: : 건강하십시요 !
:
: 물론 가능하지요
: 방법은 스트링그리드에서 마우스다운 이벤트 일어난 부분에서 그때의 x,y값을
: 저장하구 스트링 그리드 클릭 이벤트 부분에서 해당셀의 크기와 위치를 읽어와 셀의
: 크기로 체크박스의 크기를 변화시키면 됩니다.
: int c, r;
: TRect t;
:
: StringGrid1->MouseToCell( gx, gy, c, r); //gx,gy는 마우스 다운에서 저장한 위치
:
: if (r<1) return;
: c=4; //바꿀 셀릐 컬럼
: gRow = r; // 바꿀셀의 로우
: t = StringGrid1->CellRect(c, r);
:
: CheckBox1->Left = StringGrid1->Left + tr.Left+1;
: CheckBox1->Top = StringGrid1->Top + tr.Top+1;
: CheckBox1->Width = (tr.Right - tr.Left)+3;
: CheckBox1->Visible = True;
: 물론 동적으로 생성해서 원하는 셀에 집어 넣으셔두 되구요
:
: 그럼 즐프하세요^^
***************
위의 코드에 좀추가를 해서
TCheckBox *cb = new TCheckBox(this);
TRect t;
t = h->CellRect(2,2);
h->Objects[2][2] = cb;
cb->Parent = h;
cb->Color = clBtnFace;
cb->Left = t.Left;
cb->Top = t.Top;
cb->Width = (t.Right-t.Left);
cb->Height = t.Height();
cb->Caption= "xx";
cb->OnClick = CheckBox1Click; <-
과 같이 했는데 check가 안됩니다. 그래서 <- 같이 하고
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
TCheckBox *cb = (TCheckBox*)Sender;
cb->Checked = !cb->Checked;
}
로 했는 데오 안됍니다. 제가 뭘 잘못 한거죠 ?
감사합니다.
|