关于DrawGrid组件的用法!!!

tujj99 2003-08-23 02:39:39
我想改变指定的单元的背景颜色,如何实现??

即用鼠标单击一单元,该单元颜色就变化,再单击一下就还原!!!
这个功能怎么实现呢??
...全文
453 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellolulu 2003-08-26
  • 打赏
  • 举报
回复
不好意思,从C++Builder粘过来后有乱码,贴了二次都不完全正确
我再试一次

试一下下面的代码
在头文件声明一个足够大的数组,下标应大于最大的Grid的网格下标

private: // User declarations
int ColorNo[10][10];

然后:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
for (int i=0;i<10;i++) for (int j=0;j<10;j++) ColorNo[i][i]=0;
}

//---------------------------------------------------------------------------
void __fastcall TForm1::DrawGrid1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{

TGridCoord XY=DrawGrid1->MouseCoord(X,Y);
TRect R1=DrawGrid1->CellRect(XY.X,XY.Y);
ColorNo[XY.X][XY.Y]=1-ColorNo[XY.X][XY.Y];
TColor C1;
if (ColorNo[XY.X][XY.Y]==1) {
C1=clBlue; //改变后的颜色
}
else {
C1=clWhite; //原色;
}
DrawGrid1->DefaultDrawing=false;
DrawGrid1->Canvas->Brush->Color=C1;
DrawGrid1->Canvas->Rectangle(R1);
//如果需要填写字符,则
//DrawGrid1->Canvas->TextOutA(R1.X+2,R1.Y+2,字符串);
}
hellolulu 2003-08-26
  • 打赏
  • 举报
回复
void __fastcall TForm1::DrawGrid1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{

TGridCoord XY=DrawGrid1->MouseCoord(X,Y);
TRect R1=DrawGrid1->CellRect(XY.X,XY.Y);
ColorNo[XY.X][XY.Y]=1-ColorNo[XY.X][XY.Y];
TColor C1;
if (ColorNo[XY.X][XY.Y]==1) {
C1=clBlue; //改变后的颜色
}
else {
C1=clWhite; //原色;
}
DrawGrid1->DefaultDrawing=false;
DrawGrid1->Canvas->Brush->Color=C1;
DrawGrid1->Canvas->Rectangle(R1);
//如果需要填写字符,则
//DrawGrid1->Canvas->TextOutA(R1.X+2,R1.Y+2,字符串);
}
//---------------------------------------------------------------------------

hellolulu 2003-08-26
  • 打赏
  • 举报
回复
试一下下面的代码
在头文件声明一个足够大的数组,下标应大于最大的Grid的网格下标

private: // User declarations
int ColorNo[10][10];

然后:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
for (int i=0;i<10;i++) for (int j=0;j<10;j++) ColorNo[i][i]=0;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::DrawGrid1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{

TGridCoord XY=DrawGrid1->MouseCoord(X,Y);
TRect R1=DrawGrid1->CellRect(XY.X,XY.Y);
ColorNo[XY.X][XY.Y]=1-ColorNo[XY.X][XY.Y];
TColor C1;
if (ColorNo[XY.X][XY.Y]==1) {
C1=clBlue; //¸Ä±äÒÔºóµÄÑÕÉ«
}
else {
C1=clWhite; //Ô­É«
}
DrawGrid1->DefaultDrawing=false;
DrawGrid1->Canvas->Brush->Color=C1;
DrawGrid1->Canvas->Rectangle(R1);
//Èç¹ûµ¥ÔªÉÏÓÐÄÚÈÝÔò
//DrawGrid1->Canvas->TextOutA(R1.X+2,R1.Y+2,ÄÚÈÝ);
}
//---------------------------------------------------------------------------
tujj99 2003-08-25
  • 打赏
  • 举报
回复
没有人回答,55555

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧