📄 bcjq051.txt
字号:
C++ Builder开发者:程序员之家
var how_many_ads = 3;
var now = new Date()
var sec = now.getSeconds()
var ad = sec % how_many_ads;
ad +=1;
首页
| 控件天堂 | 控件使用
| 编程技巧
| 源代码 | 编程工具 |
系统补丁 | 电子书籍 | 技术论坛
| 相关链接
if (ad==1) {document.write(''+'');}
if (ad==2) {document.write(''+'');}
if (ad==3) {document.write(''+'');}
var marqueecontents=''+scroll_text+''
if (document.all)
document.write(''+marqueecontents+'')
function regenerate(){
window.location.reload()
}
function regenerate2(){
if (document.layers){
setTimeout("window.onresize=regenerate",450)
intializemarquee()
}
}
function intializemarquee(){
document.cmarquee01.document.cmarquee02.document.write(marqueecontents)
document.cmarquee01.document.cmarquee02.document.close()
thelength=document.cmarquee01.document.cmarquee02.document.height
scrollit()
}
function scrollit(){
if (document.cmarquee01.document.cmarquee02.top>=thelength*(-1)){
document.cmarquee01.document.cmarquee02.top-=speed
setTimeout("scrollit()",100)
}
else{
document.cmarquee01.document.cmarquee02.top=marqueeheight
scrollit()
}
}
window.onload=regenerate2
当前位置
:
编程技巧
C++Biulder
程序设计两点技巧
我在开发一个软件的过程中,遇到了不少的困难。其中有些问题,是系统的帮助、一般的书籍是不可能提到的,只能靠自己摸索。以下是我在实践中总结的一些经验,现在整理出来让同行们参考,避免走弯路。不对之处,请多多指正。
一、窗体的访问:
----
由系统直接建立的窗体(全局可见)、由父窗体动态建立的子窗体,可直接通过名称访问。但是如果父窗体也是动态建立的,而由父窗体动态建立的子窗体想要访问父窗体,则不能通过直接引用父窗体的名称来实现。如在父窗体(类:TfrmParent
实例:frmParent)有以下代码:
TfrmChild *frmChild=new TfrmChild (this);
frmChild->Show( );( 或ShowModal ( ) )
----
动态生成了一个子窗体,而在子窗体想要访问父窗体的Edit1成员,则应该使用下面的方式:
----
((TfrmParent*)this->Owner)->Edit1->Text="从子窗体访问父窗体的成员Edit1。";
二、组件数组的使用:
---- VB的控件数组非常方便,可以使多个控件通过索引来进行集体引用,并且共享同一个带索引参数的事件处理程序。在C++Biulder中不直接支持这样的控件数组,给编写需要大量同一个类型控件的程序带来不便。通过摸索,我发现可用TList类来实现这个想法。如在一个窗体中大量使用CheckBox控件:
---- 1、在窗体类中声明一个变量:TList
*CHKBXList;
---- 2、在窗体的构造函数中加入以下代码:
---- CHKBXList=new Tlist;//使用的系统类提供的抽象类,声明了定义后,
//还要在实现文件中用new生成实例对象。
CHKBXList ->Add(CheckBox1);
CHKBXList ->Add(CheckBox2);
CHKBXList ->Add(CheckBox3);
……
---- 3、引用方法:
---- ((TCheckBox *)
CHKBXList)->Items[ i ])->Checked= true;
---- 注意两点:首先,因为Tlist的Item
属性返回的是 Void * 类型的指针,所以要用(TCheckBox
*)对此指针进行强制转换。其次,索引的编号是从0开始的,即
i 应该从0开始算,不要搞错了。
----
对于共享事件处理,可以采用其中任意一个控件的的事件处理程序。如:
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
…….//添入事件处理代码
}
---- 然后,在其它控件的属性工具窗口中选择
Events 标签,再在OnClick 栏点击下拉框,选择CheckBox1Click
即可。
---- 以上程序在win98、C++Biulder
5 环境下调试成功。
孙波 王德明
if (ad==1) {document.write(''+'');}
if (ad==2) {document.write(''+'');}
if (ad==3) {document.write(''+'');}
C++ Builder开发者®
2000年06月01日 站长:唐朝