📄 bcjq030.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++ Builder 3.0 使 用 经 验 谈
---
C++ Builder 3.0 是Borland 公 司( 现 已 更 名 为Insprise)
于1998 年 推 出 的 新 一 代 基 于C 语 言 的RAD 开 发
工 具。C++ Builder 3.0 的 问 世, 对 广 大 爱 好C 语
言 的 用 户 来 说 不 啻 是 个 福 音。 因 为 以 往
在Windows 下, 没 有 一 种 真 正 基 于C 语 言 的 可
视 化 编 程 语 言。 你 如 果 想 用VB 或Delphi 这 一
类 可 视 化 编 程 语 言 去 编 程, 你 就 不 得 不
去 重 温 一 遍Basic 或Pascal 语 言, 没 有 了 像C 语
言 一 样 可 以 灵 活 应 用 的 指 针, 没 有 了"
+ +"、"――" 这 样 一 类 可 爱 的 运
算, 总 之 一 切 使 用 起 来 都 不 如C 语 言 一 样
得 心 应 手。 现 在 这 一 切 烦 恼 都 不 复 存 在
了。C++ Builder 3.0 不 仅 支 持 传 统 的C 语 言, 也
支 持Borland 的OWL 和Microsoft 的MFC。 可 以 这 样 说,C++
Builder3.0 是 目 前Windows 下 功 能 最 为 强 大 的C 语
言 编 译 器。 由 于C++ Builder 3.0 问 世 不 久, 有 关
资 料 不 是 很 多, 下 面 结 合 笔 者 的 使 用 情
况, 谈 谈 几 点 经 验、 体 会。
---- 一、 动 态 调 用 窗
体Form
---- 在 缺 省 情 况 下, 由File/New
Form 生 成 添 加 入 项 目 文 件 中 的 窗 体 都 具 有"Auto
Create"( 自 动 创 建) 的 特 性。 即 只 要 程
序 运 行, 该 窗 体 就 存 在 于 内 存 中 了, 不
管 当 前 它 是 否 被 调 用。 具 有 这 种 特 性 的
窗 体 一 般 适 用 于 窗 体 属 性 比 较 固 定、 经
常 被 调 用 的 情 况。 其 优 点 是 速 度 快, 缺
点 是 占 用 内 存。 在 实 际 程 序 设 计 中, 会
遇 见 大 量 类 似 对 话 框 功 能 的 窗 体, 它 们
用 于 显 示 状 态 或 输 入 信 息, 仅 须 在 程 序
中 调 用 一 下, 完 成 其 功 能 就 行 了, 无 需
常 驻 内 存。 这 时 可 以 通 过 选 择Project/Options/Forms,
将"Auto--Create forms " 栏 中 相 应 的 窗 体, 如Form1,
用" >" 键 移 动 到 "Available forms" 栏
中, 并 在 程 序 需 调 用 该 窗 体 处, 加 入 下
列 语 句:
TForm1 *myform=new TForm1(this);
myform- >ShowModal();
delete myform;
---- 窗 体Form1 仅 是 在 需
要 调 用 时 才 调 入 内 存, 调 用 完 成 后, 即
用delete 清 除 出 内 存。 这 样 可 减 少 程 序 对 内
存 资 源 的 占 用。
---- 二、 遍 历 窗 体 控
件 的 方 法
---- 要 访 问 或 修 改 窗 体
上 的 控 件, 方 法 很 简 单, 以TEdit 为 例 子:
---- Edit1- >Text="";
---- Edit2- >Text="";
---- 但 如 果 窗 体 上 有 十
来 个 像Edit1 这 样 的 控 件, 需 要 进 行 相 同 的
初 始 化, 用 上 面 的 方 法 一 个 一 个 地 进
行, 岂 不 麻 烦 ! 所 以 有 必 要 掌 握 遍 历 窗
体 控 件 的 方 法。 在 介 绍 该 方 法 之 前, 让
我 们 先 了 解 一 下 窗 体Form 的Components 和Controls
属 性。 参 见 表 一。
表 一
属性
类型
说明
ComponentCount
Int
目前Form上各类
控件的总数
Components
TCompont*
目前Form上指向
所有控件的数组
ControlCount
Int
目前Form上某一子
区域上各类控件的总数
Controls TControl*
目前Form上指向某一子
区域上所有控件的数组
---- 以 图 一 为 例( 图
略) 说 明,Form1 的ComponentCount=6, 而Panel1 的ControlCount=4.,
---- 其 中: 数 组 对 象
Components[0] Panel1
Components[1] Label1
Components[2] Edit1
Components[3] Label2
Components[4] Edit2
Components[5] Button1
数 组 对 象
Controls[0] Label1
Controls[1] Edit1
Controls[2] Label2
Controls[3] Edit2
---- 下 面 这 段 代 码 完 成
了 对Panel1 上 所 有TEdit 控 件 的 遍 历 初 始 化。
读 者 稍 加 修 改, 即 可 对 其 它 控 件 进 行 遍
历。 这 里 有 一 个 小 技 巧, 我 们 把 需 要 进
行 初 始 化 的 控 件 放 置 在 了 一Panel1 上, 与 不
需 要 初 始 化 的 控 件 区 分 开 来, 这 样 便 于
编 程。
AnsiString namestring="TEdit";
for(int i=1;i< Panel1- > ControlCount;i++)
{
if(Panel1- > Controls[i]- >
ClassNameIs(namestring))
{
TEdit *p=dynamic_cast
< TEdit* > (Panel1- >Controls[i]);
P- >Text="";
}
}
---- 三、 用Enter 键 控 制 焦
点 切 换 的 方 法
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -