안녕하세요 서비입니다.
제가 TStringGrid안에 Button을 넣었습니다. GUI상으로는 잘 나오더라구요.
근데 Button을 넣을때 TButton.BoundsRect의 Property를 이용해서 넣지 않습니까?
이 설정때문에 StringGrid가 한 페이지를 넘어가더라도 항상 첫번째로 보이는
버튼은 '버튼1'이라는 이름을 갖고 있더라구요.
아래 그림을 참고해 주십시요.
#전체 그림
번호 버튼 내용
---------------------------
1 버튼 사과
2 버튼 배
3 버튼 귤
4 버튼 나무
#실제로 프로그램을 Maximize한 후에 보면 4번이 나오지 않는다고 가정합니다.
번호 버튼 내용
---------------------------
1 버튼 사과
2 버튼 배
3 버튼 귤
이때 번호2의 버튼을 누르면 '배'라고 나타납니다.
#이제 스크롤바를 이용해서 한칸 내려왔다고 가정합니다.
번호 버튼 내용
---------------------------
2 버튼 배
3 버튼 귤
4 버튼 나무
당연히 1번은 사라지고 4번이 나타나겠죠.
하지만 번호3의 버튼을 누르면 역시 '배'라고 나타납니다.
왜냐하면 Button을 생성시킬 때 TButton.BoundsRect를 위치로 지정해 주었기 때문에
번호3번은 두번째 위치하기 때문에 전체에서 2번인 배가 나타나는 것입니다.
저로써는 도저히 해답을 찾지 못하겠습니다.
도사님들의 도움을 요청합니다.
안녕하세요?
질문 잘 보았습니다.
셀에 버튼을 그릴때는 천상 BoundsRect를 쓰든, SetBounds를 쓰든
아님 일일이 좌표를 지정해주든 뭐 그러한 방식으로 셀에 버튼을 그릴것입니다.
보통 onDrawCell이벤트에 말이죠.... 맞나요?
님께서 말씀하신 그러한 에러(?)는 당연한 현상입니다.
버튼의 좌표는 강제적으로 세팅을 했지만,
스트링그리드의 행은 스크롤박스를 움직일때마다 유동적이잖아요.
따라서, 원하는 행/열에 데이터를 쓰지 못하고 엉뚱한 위치를 찾아서
값을 쓰는 것이죠...
해결책은 사람마다 다를것입니다.
여하튼, 저의 해결책은 이렇습니다.
버튼이 생성되었고, 그 버튼을 클릭할때 해당 버튼이 놓인 스트링그리드의
행과 열위치를 정확이 안다면 문제는 해결된다고 생각합니다.
그렇지 않습니까?
데이터가 몇 건이든, 스트롤박스를 위아래로 움직이든
해당 셀에 그려진 버튼에 대해서, 그 버튼이 놓인 스트링그리드의 행과 열위치를
알수 있다면 얼마든지 해당 행안에서 원하는 열에 "번호"값을 참조해서 원하는 값을
쓸 수 있잖아요...
이런 해결책이라도 원하신다면 저에게 메일을 주십시요.
혹, 님께서 그런 해결책은 원치 않으실까바 작성한 샘플 프로그램을
먼저 보내드리지 못하겠네요... ^^
덕분에 저두 공부 좀 했습니다. thank you~~!!
그럼...