初学BCB,实在不好意思问高手
一个画板程序,其中画笔样式由自己写的函数SetPenStyle实现(抄书上的),SolidPen,DasPen等是一此快速按钮的Name
void __fastcall TForm1::SetPenStyle(TObject *Sender)
{if(Sender==SolidPen)
Image->Canvas->Pen->Style=psSolid;
else if(Sender==DashPen)
Image->Canvas->Pen->Style=psDash;………………
}
画线函数
DrawLine(TPoint TopLeft,TPoint BottomRight,TPenMode AMode)
{
//设定画笔的绘制方式
Image->Canvas->Pen->Mode=AMode;
Image->Canvas->MoveTo(TopLeft.x,TopLeft.y);
Image->Canvas->LineTo(BottomRight.x,BottomRight.y);
}
可是在画线的时候就是改变不了画线线条的样式,怎么回事呀。
在SetPenStyle(TObject *Sender)里面,*Sender参数有什么用呀。我那700页的教程都没提……
可本人 QQ37351453,跪求大侠指教!
问题点数:20、回复次数:5Top
1 楼rainfall19831109(恩恩)回复于 2006-05-02 11:56:59 得分 5
SolidPen和DasPen是SpeedButton的Name属性吗?
那么函数SetPenStyle感觉这样判断就不对咯
我判断的方法就是if( ((TSpeedButton*)Sender)->Name == "SolidPen" || ((TSpeedButton*)Sender)->Name == "DasPen");
但前提是要确保触发SetPenStyle函数的是那两个按钮其中的一个
Sender函数前面都说了,就是触发这个函数的对象指针,就象在Button1的OnClick事件里,事件函数中的Sender参数,就是Button1本身,如果Button2的OnClick事件也是调用Button的OnClick函数的话,那么这时Button1OnClick函数里的Sender就是Button2了Top
2 楼zyyoung(倡导开源)回复于 2006-05-02 14:41:51 得分 5
友情upTop
3 楼stevenjscn(小胖)回复于 2006-05-02 15:55:07 得分 5
UPTop
4 楼bashenkiss()回复于 2006-05-02 23:05:09 得分 0
请问一楼,如果同时有两个按带Sender指针的按钮被按下,Sender指的是哪个按钮被触发??Top
5 楼BlueDeepOcean(蓝色·深海)回复于 2006-05-03 16:33:44 得分 5
几种可能是:
1、画笔的宽度大于1,即:…->Pen->Width ≠ 1;
2、你的自定义函数写的就错误了。(TObject *Sender)中的Sender是发出该消息的控件(对象)是什么,而不是画笔的Name或者其他的什么。
看你的错误就集中在第一个函数上了。另一个函数没有错误。Top




