StringGrid에 멀티 타이틀를 아래와 같이 구성하려고 합니다.
1번 그림
┎────────────┰───────────┒
┃ 가 ┃ 나 ┃
┠──────┰─────╂───┰───┰───┨
┃ 가1 ┃ 가2 ┃ 나1 ┃ 나2 ┃ 나3 ┃
┖──────┸─────┸───┸───┸───┚
스트링그리드를 두개를 놓습니다.
타이틀이 가, 나 인것은 StringGrid1이고 타이틀이 가1, 가2...인 것은 StringGrid2입니다.
서로 횻캬?하나의 스트링그리드처럼 보이는 거죠..
멀티 타이틀을 구성하기 위한 트릭(잔머리) 이죠.
void __fastcall TForm1::StringGrid2TopLeftChanged(TObject *Sender)
{
StringGrid1->LeftCol = StringGrid2->LeftCol;
}
위의 TopLeftChanged 이벤트를 실행해서 오른쪽으로 스크롤을 하면 이렇게 됩니다..
2번 그림
┎────────────┰───────────┒
┃ 가 ┃ 나 ┃
┠──────┰─────╂───┰───┰───┨
┃ 가2 ┃ 나1 ┃ 나2 ┃ 나3 ┃ 나4 ┃
┖──────┸─────┸───┸───┸───┚
제가 원하는 건...아래와 같은 그림인데...
3번 그림
┌────────────┬───────────┐
│ 나 │ 다 │
├───┬───┬────┼─────┬─────┤
│ │ │ │ │ │
│ 나1 │ 나2 │ 나3 │ 다1 │ 다2 │
└───┴───┴────┴─────┴─────┤
그래서, 다른 방법을 사용하려고 합니다..
스크롤시에 스트링그리드에 WM_HSCROLL를 발생시키려고 합니다..
StringGrid2를 스크롤하면 3번 그림처럼 처리하려고요...
그러니까.. 스트링그리드를 상속받으면서 이 메시지의 핸들러를 작성하고,
이 핸들러에서 다시 두번째 스트링그리드로 메시지를 보내면 될 거라고 생각되는데
SendMessage(StringGrid2->Handle, Message.Msg, Message.WParam, Message.LParam);
unit.h에
private: // User declarations
void __fastcall OnWMScroll(TWMScroll& Message);
public: // User declarations
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_HSCROLL, TWMHScroll, OnWMScroll)
END_MESSAGE_MAP(TForm)
이렇게 선언하고...
unit.cpp에서
void __fastcall TForm1::OnWMScroll(TWMScroll& Message)
{
// SendMessage(StringGrid1->Handle, Message.Msg, Message.WParam, Message.LParam);
SendMessage(StringGrid1->Handle, WM_HSCROLL , Message.ScrollCode, 0);
}
이렇게 까진 했는데... 원하는데로 안되는 군요..
메세지 처리를 잘 못 한것 같은데...
어떻게 수정하면 되죠...
제발 부탁합니다...
그럼 이만..
|