⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 20000916001.htm

📁 C++Builder教学大全
💻 HTM
字号:
<HTML>

<HEAD>



<TITLE>在BCB中使用VCL控件数组(二)</TITLE>



<META content="MSHTML 5.00.2314.1000" name=GENERATOR>

</HEAD>

<BODY aLink=#FF0000 bgColor=#ffffff leftMargin=0 link=#187800 topMargin=0 

vLink=#990099>



<div align="center">

  <table width="744" border="0" cellspacing="0" cellpadding="0" height="76">

    <tr> 

      <td> 

        <p><br>

        <p>

        <p>

        <p> 

        <p align="center"><b><font size="3">在BCB中使用VCL控件数组(二)</font></b><br>

          抱雪(驰骋软件中心)</p>

        <p>我的《BCB中使用VCL控件数组》中,提到了用TList来实现时无法释放资源的问题,结果今天就得到了答案,邬彦华等等网友都指教了TList实现的释放方法,定义代码同前文:<br>

          <br>

          for (int i=1;i&lt;=ButtonCount;i++)<br>

          {&nbsp;<br>

          TSpeedButton *spdBtn=new TSpeedButton(this);<br>

          spdBtn-&gt;Parent=ScrollBox;//指定父控件<br>

          spdBtn-&gt;Caption=IntToStr(i);<br>

          spdBtn-&gt;Width=80;<br>

          spdBtn-&gt;Height=80;<br>

          spdBtn-&gt;OnClick=ButtonClick;<br>

          spdBtn-&gt;Left=intLeft;<br>

          spdBtn-&gt;Top=intTop;<br>

          spdBtn-&gt;GroupIndex=1;<br>

          spdBtn-&gt;Flat=true;<br>

          intLeft=intLeft+80+intSpace;<br>

          if (i%LineCount==0)<br>

          {<br>

          intTop=intTop+80+intSpace;<br>

          intLeft=intSpace;<br>

          }<br>

          buttons-&gt;Add(spdBtn);//buttons是一个TList的指针<br>

          }<br>

          释放资源的代码如下:<br>

          <br>

          int num = button-&gt;Count;<br>

          for(int i=0;i&lt;num;i++)<br>

          {<br>

          delete (TSpeedButton *)button-&gt;Items[i];<br>

          }<br>

          其实说穿了就是删除TList的每一项,不过因为TList-&gt;Items的类型是void *,在C/C++中,void *可匹配任何类型,所以只要加一个强制类型转换(TSpeedButton 

          *)就可以了,当然用(TObject *)等也是可以的,因为TObject是VCL中所有类的基类,而基类的指针是可以指向它的直接或间接子类的。<br>

          <br>

          两种方法的比较:我上次的方法可说是典型的C++解决方法,而这种方法可说是C++Builder的解决方法,用双重指针比较灵活、高效,但大家都知道,多重指针可不那么好懂,想当初我曾用过4重指针(不要用那么目光看着我!),到后来我自已都糊涂了。而这次的方法比较好懂,并且能用TList类的方法,使用比较方便,但不如上一种高效,总的来说,两种方法各有优劣,具体使用那一种,就看个人的喜好了。</p>

    </td>

    </tr>

  </table>

 

</div>

</BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -