首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

DBGrid所选择的行不随滚动条滚动而变化解决思路

2012-02-04 
DBGrid所选择的行不随滚动条滚动而变化如何固定DBGrid选择行的位置??我找到一个消息调用,不知道如何改,特

DBGrid所选择的行不随滚动条滚动而变化
如何固定DBGrid选择行的位置??
我找到一个消息调用,不知道如何改,特别是第三个消息看不懂。相信离问题解决就差一步,大家帮看看。


void       _fastcall       TForm1::GridWindowProc(TMessage       &Message)      
    {      
            if       (Message.Msg       ==       WM_VSCROLL)      
            {      
                                    int       nPos       =       GetScrollPos((HWND)Message.LParam,       SB_VERT);      
                                    if       (Message.WParam       ==       SB_LINEUP)      
                                    {      
                                                    t-> DataSource-> DataSet-> Prior();      
                                                    Message.Msg       =       0;      
                                    }      
                                    if       (Message.WParam       ==       SB_LINEDOWN)      
                                    {      
                                                    t-> DataSource-> DataSet-> Next();      
                                                    Message.Msg       =       0;      
                                    }      
                                    if       (LOWORD(Message.WParam)       ==       SB_THUMBPOSITION       ||      
                                                    LOWORD(Message.WParam)       ==       SB_THUMBTRACK)      
                                    {      


                                                    t-> DataSource-> DataSet-> RecNo       =       HIWORD(Message.WParam);      
                                                    return;      
                                    }      
            }      
            OldGridProc(Message);      
    }      


[解决办法]
void _fastcall TForm1::GridWindowProc(TMessage &Message)
{
if (Message.Msg == WM_VSCROLL)
{
int nPos = GetScrollPos((HWND)Message.LParam, SB_VERT);
if (Message.WParam == SB_LINEUP)
{
//t-> DataSource-> DataSet-> Prior();
Message.Msg = 0;
}
if (Message.WParam == SB_LINEDOWN)
{
//t-> DataSource-> DataSet-> Next();
Message.Msg = 0;
}
if (LOWORD(Message.WParam) == SB_THUMBPOSITION ||
LOWORD(Message.WParam) == SB_THUMBTRACK)
{
//t-> DataSource-> DataSet-> RecNo = HIWORD(Message.WParam);
return;
}
}
OldGridProc(Message);
} //OK!

热点排行