|
: 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; <-
안녕하세요 경호입니다. 음 체크박스를 동적으로 생성하셨군요
그리구 체크박스의 parent로 stringgrid를 선택하셨군요...
그렇게 하시려면 체크박스를 동적으로 생성시키지 마시구 보이지 않게 속성을
지정하셔서 하나를 올려 놓으시구 위치를 변경시키면서 작업을 하셔요
아마 그렇게 하는게 더 간단항거예요 셀의 위치를 변화시킬때마다 사용자가 선택한 결과를
그리드에 표시해 주고 체크박스는 초기화 해서 움직이면 되는거죠...
님처럼 동적으로 생성할때에는 체크박스의 parent를 form으로 하시구요
음 그럼 한가지 문제가 생기겠죠 마우스를 그리드상에 클릭했을때 위치가
폼에서 클릭했을때와 위치값이 달라져서 다른곳에 체크박스가 생기는 거죠..
그런이유로 체크박스가 생성될 위치를 폼의 위치와 더불어서 다시 계산해 주어야 한답니다.
약간 번거롭죠 ^^
위의 두가지 방법다 별무리는 없이 동작할거예요...
하지만 동적으로 생성하면 계속 new 와 delete를 반복해야 하는것두 있구 약간
번거롭기두 해서 저두 처음에 설명드렸던 방법을 이용해서 셀에 콤보나 래디오등을
넣는 작업을 한적이 있답니다....
그럼 즐프하세요^^
|