求教关于捕获StringGrid刷新的问题,在线解决就给分:200分

iec 2003-10-16 07:00:36
在Form上放StringGrid
StringGrid1->Canvas->TextOutA(left,top,"刷新");
如果最小化Form,再最大化Form ,StringGrid1已经被刷新了
开始写上的文字就没了
如何捕获StringGrid刷新的消息,使之不用刷新?


...全文
38 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjy1001 2003-10-21
  • 打赏
  • 举报
回复
把 canvas上要画的字写成函数
在form的OnResize里 重新调用你的写canvas函数 就可以了
例如:
form的OnResize中:
StringGrid1->Canvas->TextOutA(left,top,"刷新");

就可以了



iec 2003-10-18
  • 打赏
  • 举报
回复
我需要在StringGrid上显示不同颜色的字,用Cells则不能显示
ezhoulu 2003-10-18
  • 打赏
  • 举报
回复
下面的代码可解决的实际问题
void __fastcall TMainForm::DG_TimePlayDrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
int valX, valY;
String valStr;
if(ARow==0)
{
valStr=ProgramTitle[ACol];
}
else
{
if(ARow-1==2)
this->DG_TimePlay->Canvas->Font->Color = clRed;
if(ARow-1==3)
this->DG_TimePlay->Canvas->Font->Color = clFuchsia;
switch(ACol)
{
case 0:
valStr = IntToStr(ARow);
break;
case 1:
valStr = PA[ARow-1].JM_name;
break;
case 2:
valStr = PA[ARow-1].JM_length;
break;
case 3:
valStr = PA[ARow-1].JM_mustattrib;
break;
case 4:
valStr = PA[ARow-1].JM_maker;
break;
case 5:
valStr = PA[ARow-1].JM_loop;
break;
case 6:
valStr = PA[ARow-1].JM_filename;
break;
}
}
valX =((Rect.Left + Rect.Right) - this->DG_TimePlay->Canvas->TextWidth(valStr)) /2;
valY =((Rect.Top + Rect.Bottom) - this->DG_TimePlay->Canvas->TextHeight(valStr)) / 2;
this->DG_TimePlay->Canvas->TextOutA(valX, valY, valStr);

}
sfemil 2003-10-17
  • 打赏
  • 举报
回复
你为什么不直接在StringGrid的Cells中写信息,这样信息不需要刷新时维护。
Canvas只是他的画布,只负责显示图象,本身不保存图象信息,所以刷新时 原由信息会被擦除。
你可以考虑使用TStringGrid的OnDrawCell事件 将代码放在这里处理,这样就能达到你要的效果。
ljianq 2003-10-17
  • 打赏
  • 举报
回复
在Form的OnPaint事件中,再调用一次StringGrid1->Canvas->TextOutA(left,top,"刷新");
domustdo 2003-10-16
  • 打赏
  • 举报
回复
为什么要在StringGrid的canvas上写字?
iec 2003-10-16
  • 打赏
  • 举报
回复
这样的因为我已经在StringGrid1上写上很多数据了,如果用Form的OnPaint事件的话,数据还要重写一遍,麻烦,有没有不让StringGrid1刷新,不重写, songhtao(三十年孤独) 能说得详细点吗?


klbt 2003-10-16
  • 打赏
  • 举报
回复
同意楼上
我不懂电脑 2003-10-16
  • 打赏
  • 举报
回复
可以用Form的OnPaint事件呀。
yjy1001 2003-10-16
  • 打赏
  • 举报
回复
捕获form刷新
然后在form刷新后 你再——StringGrid1->Canvas->TextOutA(left,top,"刷新");
textout一次 不就可以了吗?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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