社区
C++ Builder
帖子详情
请教一个简单的问题
jiangwei_122
2002-08-22 05:14:52
我想知道TSpeedButton 为什么有GroupIndex功能,我自己编了一个控件继承了TSpeedButton 改了Paint函数,就没有此功能了,应该如何添加。我看了它的源代码因为是ObjectPascal很多都在C++中不可能。还请高手指点。
...全文
39
2
打赏
收藏
请教一个简单的问题
我想知道TSpeedButton 为什么有GroupIndex功能,我自己编了一个控件继承了TSpeedButton 改了Paint函数,就没有此功能了,应该如何添加。我看了它的源代码因为是ObjectPascal很多都在C++中不可能。还请高手指点。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jiangwei_122
2002-08-22
打赏
举报
回复
void __fastcall TSButton::Paint()
{
const int DownStyles[2]={BDR_RAISEDINNER,BDR_SUNKENOUTER};
const int FillStyles[2]={BF_MIDDLE,0};
TRect PaintRect;
UINT DrawFlags;
int temflag;
if (Enabled==false)
{
FState=bsDisabled;
FDragging=false;
}
else
{
if (FState==bsDisabled)
if (FDown && GroupIndex!=0)
FState=bsExclusive;
else
FState=bsUp;
}
Canvas->Font=Font;
PaintRect=Rect(0,0,Width,Height);
Canvas->Brush->Color=Color;
Canvas->FillRect(PaintRect);
if (FFlat==false)
{
DrawFlags=DFCS_BUTTONPUSH | DFCS_ADJUSTRECT;
if ((FState==bsDown)||(FState==bsExclusive))
{
DrawFlags=DrawFlags |DFCS_PUSHED;
temflag=1;
}
DrawFrameControl(Canvas->Handle,&PaintRect,DFC_BUTTON,DrawFlags);
}
else
{
if((FState==bsDown)||(FState==bsExclusive)||(FMouseInControl &&(FState!=bsDisabled))||(ComponentState.Contains(csDesigning)))
DrawEdge(Canvas->Handle,&PaintRect,DownStyles[temflag],FillStyles[Transparent]|BF_RECT);
else if (Transparent==false)
{
Canvas->Brush->Color=Color;
Canvas->FillRect(PaintRect);
}
InflateRect(&PaintRect,-1,-1);
}
if((FState==bsDown)||(FState==bsExclusive))
{
if((FState==bsExclusive)&&((FFlat==false)||(FMouseInControl==false)))
{
Canvas->Brush->Bitmap=AllocPatternBitmap(clBtnFace,clBtnHighlight);
Canvas->FillRect(PaintRect);
}
}
Canvas->StretchDraw(PaintRect,Glyph) ;
Canvas->Brush->Style=bsClear;
if(FState==bsDisabled)
{
OffsetRect(PaintRect,1,1);
Canvas->Font->Color=clBtnHighlight;
DrawText(Canvas->Handle,Caption.c_str(),Caption.Length(),&PaintRect,DT_CENTER|DT_VCENTER|DrawTextBiDiModeFlags(0)|DT_SINGLELINE);
OffsetRect(PaintRect,-1,-1);
Canvas->Font->Color=clBtnShadow;
DrawText(Canvas->Handle,Caption.c_str(),Caption.Length(),&PaintRect,DT_CENTER|DT_VCENTER|DrawTextBiDiModeFlags(0)|DT_SINGLELINE);
}
else
DrawText(Canvas->Handle,Caption.c_str(),Caption.Length(),&PaintRect,DT_CENTER|DT_VCENTER|DrawTextBiDiModeFlags(0)|DT_SINGLELINE);
}
这就是我重新写的paint函数。
kingcaiyao
2002-08-22
打赏
举报
回复
你将你的Paint函数贴出来看看
向别人
请教
问题
,不要这样开头
前言 我们经常会有
请教
别人
问题
的时候,而下面这...毋庸置疑,你提问的目的自然是想得到解答,而上面三种提问方式都有
一个
共性,就是在看到上面的
问题
之后,仍然不知道具体
问题
是什么,而要
简单
回复之后才能得到真...
英文邮件礼仪:向教授
请教
学术
问题
英文邮件礼仪:向教授
请教
学术
问题
邮件主题 邮件主题(subject)不需要写自己的名字...
一个
好的标题,要能简洁地概括邮件的目的或内容。如果你对教授的某个研究项目感兴趣,就可以用这个研究方向作标题,例如"De
聊聊
请教
技术
问题
的正确方式
但当发消息
请教
时却如石沉大海,毫无回音。难道技术大牛都那么高冷么? 当你备注了添加好友的原因,如果对方通过了,其实已经表明愿意就此内容与你沟通交流。但为什么当你发消息时却得不到回应?这不排除对方很忙,...
如何
请教
别人
问题
?
尽管大牛们有蔑视
简单
问题
和不友善的坏名声,有时看起来似乎对新手,对知识贫乏者怀有敌意,但其实不是那样的。 大牛们不想掩饰对这样一些人的蔑视--他们不愿思考,或者在发问前不去完成他们应该做的事。...
学会和人沟通与
请教
问题
秘籍
2.1.2 学会沟通与
请教
问题
在当今的社会,无论在任何
一个
行业,以及做任何事情,首先需要学会的就是有效地沟通与交流表达,如果你是动物世界迷,你会发现动物界也是一样的。当然Linux运维人员也不例外了。 朋友们...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章