为什么会出现E2089的错误,代码方面貌似没问题啊,求大神们帮助

qq_36828534 2016-11-26 04:01:00

//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdlib>
#pragma hdrstop

#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CGRID"
#pragma link "CSPIN"
#pragma resource "*.dfm"
int startX;
int startY;
int endX;
int endY;
int tool=1;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Panel1->DoubleBuffered=true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
startX=X;
startY=Y;
Image1->Canvas->MoveTo(X,Y);
Image1->Canvas->Pen->Color=CColorGrid1->ForegroundColor;
Image1->Canvas->Pen->Width=CSpinEdit1->Value;
if(CSpinEdit1->Value>20)
{Image1->Canvas->Pen->Width=20;}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if(Shift.Contains(ssLeft))
switch(tool)
{ case 1:Image1->Canvas->LineTo(X,Y);break;
case 2:Image1->Canvas->LineTo(X,Y);
Image1->Canvas->Pen->Width=20;break;
case 6:Image1->Canvas->LineTo(X,Y);
Image1->Canvas->Pen->Width=25;
Image1->Canvas->Pen->Color=clWhite;break;
case 7:for(int i=0;i<50;i++)
{ int x=rand()%20;
int y=rand()%20;
Image1->Canvas->Pixels[x+X][y+Y]=CColorGrid1->ForegroundColor;break;

}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
endX=X;
endY=Y;
switch(tool)
{ case 3:Image1->Canvas->MoveTo(startX,startY);
Image1->Canvas->LineTo(endX,endY);break;
case 4:Image1->Canvas->Rectangle(startX,startY,endX,endY);break;
case 5:Image1->Canvas->Ellipse(startX,startY,endX,endY);break;
}
Image1->Canvas->Brush->Style=bsClear;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
tool=1;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
tool=2;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
tool=3;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton4Click(TObject *Sender)
{
tool=4;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton5Click(TObject *Sender)
{
tool=5;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton6Click(TObject *Sender)
{
tool=6;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton7Click(TObject *Sender)
{
tool=7;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton8Click(TObject *Sender)
{
tool=8;

}
//---------------------------------------------------------------------------
...全文
340 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooolinux 2016-11-26
  • 打赏
  • 举报
回复
除了 do { ... }while(); 其它情况的大括号都应该独立一行,这样风格比较清晰,不容易出错。 for() { ... } case 、break 也应该单独一行。
ooolinux 2016-11-26
  • 打赏
  • 举报
回复
楼主同样代码的函数太多,其实可以合并成一个,参考: 利用控件Tag属性统一处理消除重复性代码 http://blog.163.com/tab_98/blog/static/1192409720166310186242/
ooolinux 2016-11-26
  • 打赏
  • 举报
回复
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if(Shift.Contains(ssLeft)) switch(tool) { case 1:Image1->Canvas->LineTo(X,Y);break; case 2:Image1->Canvas->LineTo(X,Y); Image1->Canvas->Pen->Width=20;break; case 6:Image1->Canvas->LineTo(X,Y); Image1->Canvas->Pen->Width=25; Image1->Canvas->Pen->Color=clWhite;break; case 7:for(int i=0;i<50;i++) { int x=rand()%20; int y=rand()%20; Image1->Canvas->Pixels[x+X][y+Y]=CColorGrid1->ForegroundColor;break; } } 大括号不配对

13,825

社区成员

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

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