Q&A

  • TStringGrid에 TButton 넣기
안녕하세요 서비입니다.



제가 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번인 배가 나타나는 것입니다.



저로써는 도저히 해답을 찾지 못하겠습니다.



도사님들의 도움을 요청합니다.















1  COMMENTS
  • Profile
    이재식 2000.11.28 11:28
    [RE] 이재식 Wrote :

    안녕하세요?



    질문 잘 보았습니다.



    셀에 버튼을 그릴때는 천상 BoundsRect를 쓰든, SetBounds를 쓰든

    아님 일일이 좌표를 지정해주든 뭐 그러한 방식으로 셀에 버튼을 그릴것입니다.

    보통 onDrawCell이벤트에 말이죠.... 맞나요?



    님께서 말씀하신 그러한 에러(?)는 당연한 현상입니다.

    버튼의 좌표는 강제적으로 세팅을 했지만,

    스트링그리드의 행은 스크롤박스를 움직일때마다 유동적이잖아요.

    따라서, 원하는 행/열에 데이터를 쓰지 못하고 엉뚱한 위치를 찾아서

    값을 쓰는 것이죠...



    해결책은 사람마다 다를것입니다.

    여하튼, 저의 해결책은 이렇습니다.

    버튼이 생성되었고, 그 버튼을 클릭할때 해당 버튼이 놓인 스트링그리드의

    행과 열위치를 정확이 안다면 문제는 해결된다고 생각합니다.

    그렇지 않습니까?



    데이터가 몇 건이든, 스트롤박스를 위아래로 움직이든

    해당 셀에 그려진 버튼에 대해서, 그 버튼이 놓인 스트링그리드의 행과 열위치를

    알수 있다면 얼마든지 해당 행안에서 원하는 열에 "번호"값을 참조해서 원하는 값을

    쓸 수 있잖아요...



    이런 해결책이라도 원하신다면 저에게 메일을 주십시요.



    혹, 님께서 그런 해결책은 원치 않으실까바 작성한 샘플 프로그램을

    먼저 보내드리지 못하겠네요... ^^

    덕분에 저두 공부 좀 했습니다. thank you~~!!



    그럼...