📄 c++ builder 程序设计实用教程 - 6_2 多页窗体设计 - 张晋 - 17xie.htm
字号:
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes"> </SPAN>Top =
27<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes"> </SPAN>Caption =
'</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">余切曲线</SPAN><SPAN
lang=EN-US style="FONT-FAMILY: 'Times New Roman'">'<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes"> </SPAN>object Image4:
TImage<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes"> </SPAN>Left
= 8<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes"> </SPAN>Top
= 8<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes">
</SPAN>Width = 289<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes">
</SPAN>Height = 161<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes">
</SPAN>OnClick = Image4Click<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes">
</SPAN>end<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes"> </SPAN>end<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes"> </SPAN>end<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">end<o:p></o:p></SPAN></P>
<H4><SPAN lang=EN-US>2</SPAN><SPAN
style="FONT-FAMILY: 楷体_GB2312; mso-ascii-font-family: 'Times New Roman'">.响应窗体事件</SPAN></H4>
<P class=MsoNormalIndent><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">本示例程序的作用是在不同的标签页上能够绘制出正弦、余弦等四种曲线,为此要在程序的初始化阶段定义画笔的属性和作为绘图容器——</SPAN><SPAN
lang=EN-US>Image</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控件——的显示属性。</SPAN></P>
<P class=MsoNormalIndent><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为此,在程序的设计阶段,用鼠标左键双击窗体上的空白处,在弹出的代码窗口中选择窗体的</SPAN><SPAN
lang=EN-US>FormCreate</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事件,并且添加如下所示的响应代码:</SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'">void
__fastcall TForm1::FormCreate(TObject *Sender)<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">{<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">Form1->Image1->Canvas->Pen->Width=5;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">Form1->Image2->Canvas->Pen->Width=5;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">Form1->Image3->Canvas->Pen->Width=5;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">Form1->Image4->Canvas->Pen->Width=5;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">//</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设置画笔大小</SPAN><SPAN
lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">Form1->Image1->Transparent=true;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">Form1->Image2->Transparent=true;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">Form1->Image3->Transparent=true;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">Form1->Image4->Transparent=true;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">//</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设置四个控件具有透明色</SPAN><SPAN
lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">}<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">//-----------------------------------------------------------------------<o:p></o:p></SPAN></P>
<P class=MsoNormalIndent><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序说明:</SPAN></P>
<P class=MsoNormalIndent><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">窗体的</SPAN><SPAN
lang=EN-US>FormCreate</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事件在程序运行初期就会被执行,程序通过:</SPAN></P>
<P class=MsoNormalIndent><SPAN
lang=EN-US>Form1->Image1->Canvas->Pen->Width=5;</SPAN></P>
<P class=MsoNormalIndent><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等四条语句设置了画笔的大小,然后通过</SPAN><SPAN
lang=EN-US>Form1->Image1->Trans parent=true;</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等四条语句来设置四个</SPAN><SPAN
lang=EN-US>Image</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控件在程序运行的过程中背景色都是透明的。</SPAN></P>
<H4><SPAN lang=EN-US>3</SPAN><SPAN
style="FONT-FAMILY: 楷体_GB2312; mso-ascii-font-family: 'Times New Roman'">.响应绘图事件</SPAN></H4>
<P class=MsoNormalIndent><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在程序运行的过程中,切换到不同的标签页就会隐藏其余三个标签页上的控件和图形,但是并不能绘制图形,图形绘制是通过用鼠标单击</SPAN><SPAN
lang=EN-US>Image<SPAN style="mso-tab-count: 1"> </SPAN></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控件来实现的,为此要在程序中添加如下代码(由于篇幅的关系,在这里仅列举了</SPAN><SPAN
lang=EN-US>Image1</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控件的响应代码,其余控件的代码请参看附后的程序清单):</SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'">void
__fastcall TForm1::Image1Click(TObject *Sender)<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">{<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'">float
x1;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'">float
y1;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'">float
x2;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'">float
y2;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'">float
n;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">//</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义变量</SPAN><SPAN
lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">x1=0;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">y1=(Form1->Image1->Left+Form1->Image1->Width)/4;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">x2=x1;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">y2=y1;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">Form1->Image1->Canvas->MoveTo((x2),(y2));<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">//</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义绘图起始点</SPAN><SPAN
lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">n=0;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'">while
(n<3.1415926*6)<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes">
</SPAN>{<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes">
</SPAN>x2=x2+3.1415926/12;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes">
</SPAN>y2=y1-40*sin(n);<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes">
</SPAN>Form1->Image1->Canvas->LineTo((x2),(y2));<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes"> </SPAN>//</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">绘制正弦曲线</SPAN><SPAN
lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes">
</SPAN>n=n+3.1415926/180;<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US style="FONT-FAMILY: 'Times New Roman'"><SPAN
style="mso-spacerun: yes">
</SPAN>}<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">}<o:p></o:p></SPAN></P>
<P class=a1><SPAN lang=EN-US
style="FONT-FAMILY: 'Times New Roman'">//-----------------------------------------------------------------------<o:p></o:p></SPAN></P>
<P class=MsoNormalIndent><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序说明:</SPAN></P>
<P class=MsoNormalIndent><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在程序运行的过程中,切换到标签页“正弦曲线”,那么</SPAN><SPAN
lang=EN-US>Image1</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控件就已经准备好绘制正弦曲线了,如果用户用鼠标左键单击控件</SPAN><SPAN
lang=EN-US>Image1</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,那么就会激活控件的</SPAN><SPAN
lang=EN-US>Image1Click</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事件,开始绘图。</SPAN></P>
<P class=MsoNormalIndent><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在绘图开始阶段,首先定义了五个变量</SPAN><SPAN
lang=EN-US>x1</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN
lang=EN-US>x2</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN
lang=EN-US>y1</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN
lang=EN-US>y2</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN
lang=EN-US>n</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,其中</SPAN><SPAN
lang=EN-US>x1</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</SPAN><SPAN
lang=EN-US>y1</SPAN><SPAN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -