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

📄 43.asp

📁 ASPWeb数据库范例总览
💻 ASP
📖 第 1 页 / 共 3 页
字号:
是 VB 所 提 供 的 物 件 类 别 , 而 以 下 叙 述 可 以 建 立 一 个 Collection
类 型 的 物 件 : </P>

<P><FONT COLOR="#000099">  Dim X As Object</FONT> <BR>
<FONT COLOR="#000099">  Set X = New Collection</FONT> <BR>
<BR>
<FONT COLOR="#CC0000">◆ 建立具体物件方法二</FONT> </P>

<P>方 法 二 其 实 是 把 方 法 一 的 两 个 叙 述 合 而 为 一 , 也 就 是
说 : </P>

<P><FONT COLOR="#000099">   Dim OX2 As Object</FONT> <BR>
<FONT COLOR="#000099">   Set OX2 = New ClassName</FONT> </P>

<P>完 全 等 於 : </P>

<P><FONT COLOR="#3333FF">   Dim OX2 As New ClassName</FONT> </P>

<P>既 然 如 此 , 我 们 只 要 使 用 方 法 二 来 建 立 物 件 不 就 好 了
, 何 必 瞭 解 方 法 一 的 叙 述 呢 ? 其 实 方 法 一 与 方 法 二 是 有
区 别 的 , 方 法 二「Dim OX2 As New ClassName」 之 中 的 OX2 一 开 始
就 被 定 义 成 ClassName 类 别 , 所 以 是 一 个 「 固 定 类 别 」 的 物
件 变 数 , 如 果 我 们 设 定 其 他 类 别 的 物 件 给 这 个 物 件 变 数
, 则 會 产 生 错 误 , 此 一 道 理 与 「 定 型 变 数 」 完 全 相 同 。
至 於 方 法 一 「 Dim OX1 As Object」 之 中 的 OX1 则 属 於「不 固 定 类
别 」 的 物 件 变 数 , 所 以 下 面 的 叙 述 都 是 正 确 的 : </P>

<UL>
<P><FONT COLOR="#000099">' 建立 ClassName1 类型的物件给 OX1</FONT> <BR>
<FONT COLOR="#000099">Set OX1 = New ClassName1</FONT> <BR>
<FONT COLOR="#000099">' 重新建立另一个 ClassName2 类型的物件给 OX1</FONT>
<BR>
<FONT COLOR="#000099">Set OX1 = New ClassName2</FONT> </P>
</UL>

<P><FONT COLOR="#990000">◆ 建立具体物件方法三</FONT> <BR>
</P>

<UL>
<P><FONT COLOR="#000099">Dim OX2 As Object</FONT> <BR>
<FONT COLOR="#000099">Set OX2 = OX1 ' 将 OX1 的具体物件指定给 OX2</FONT></P>
</UL>

<P>此 一 方 法 的 意 义 是 把 某 一 个 物 件 变 数 的 具 体 物 件 狡 制
给 另 一 个 物 件 变 数 , 若 以 变 数 的 四 个 元 素 来 表 示 , 则 如
图 -11:</P>

<CENTER><P><A HREF="43-11.gif">图-11 「Set OX2 = OX1」的内部运作过程</A>
</P></CENTER>

<P>以 上 的 「 Set OX2 = OX1」 称 为 「 物 件 设 定 叙 述 」 (或 物 件
指 定 叙 述 ), 在 语 法 上 , 它 只 比 「 变 数 指 定 叙 述 」 (例 如 
X = Y) 多 了 一 个 Set 保 留 字 , 但 是 在 系 统 内 部 的 运 作 上 ,
却 复 杂 得 多 。 </P>

<P><FONT COLOR="#990000">◆ 建立具体物件方法四</FONT> </P>

<P>在 以 上 建 立 具 体 物 件 的 方 法 中 , 方 法 三 是 将 一 个 已 存
在 具 体 物 件 设 定 给 另 一 个 物 件 变 数 , 而 方 法 一 及 方 法 二
则 是 利 用 New 保 留 字 为 物 件 变 数 建 立 具 体 物 件 , 但 有 些 物
件 类 别 却 无 法 使 用 New 保 留 字 来 建 立 物 件 , 例 如 VB 所 提 供
的 Picture 物 件 类 别 , 此 类 物 件 类 别 通 常 會 搭 配 有 「 建 立
具 体 物 件 的 函 数 」 来 代 为 建 立 具 体 物 件 , 例 如 以 下 是 建
立 Picture 类 别 物 件 的 方 法 : </P>

<P><FONT COLOR="#000099">   Dim pic As Picture</FONT> <BR>
<FONT COLOR="#000099">   Set pic = LoadPicture ( &quot;图档名称&quot;
)</FONT> </P>

<P>以 上 的 LoadPicture 就 是 建 立 Picture 类 别 物 件 的 函 数 。 此
一 建 立 具 体 物 件 的 方 法 通 常 与 方 法 一 及 方 法 二 是 互 斥 的
, 例 如 Picture 类 别 物 件 的 建 立 , 若 使 用 New 叙 述 就 會 产 生
错 误 : </P>

<P><FONT COLOR="#000099">   Dim pic As New Picture ' 将产生错误</FONT>
<BR>
 </P>
</UL>

<H3><U>破坏具体物件的方法</U></H3>

<UL>
<P>   就 所 占 用 的 记 忆 体 而 言 , 物 件 变 数 所 占 用 的 记 忆
体 是 固 定 的 , 以 VB 现 况 而 言 , 只 占 用 4 bytes(够 省 吧 !), 但
物 件 变 数 所 指 到 的 「 具 体 物 件 」 则 可 能 占 用 大 量 的 记 忆
体 , 因 此 若 程 式 随 意 建 立 具 体 物 件 , 使 用 完 毕 时 又 不 将
它 破 坏 以 归 还 给 系 统 , 就 可 能 造 成 系 统 记 忆 体 耗 尽 的 现
象 。 </P>

<P>至 於 破 坏 具 体 物 件 , 将 记 忆 体 归 还 系 统 的 叙 述 则 十 分
简 单 , 如 图 -12: </P>

<P> <FONT COLOR="#000099">  Set 物件变数 = Nothing</FONT> <BR>
</P>

<P>此 一 叙 述 的 作 用 若 以 变 数 的 四 个 元 素 来 表 达 , 则 如 下
:</P>

<CENTER><P><A HREF="43-12.gif">图-12「Set OX1 = Nothing」的内部运作过程</A>
</P></CENTER>

<P>请 参 阅 以 下 副 程 式 , 想 一 想 , 假 如 我 们 没 有 执 行 「 Set
物 件 变 数 = Nothing」 , 将 會 有 怎 样 的 後 果 : </P>

<P><FONT COLOR="#000099">Sub SubX()</FONT> <BR>
<FONT COLOR="#000099">  Dim X As Object</FONT> </P>

<P><FONT COLOR="#000099">  ' 建立 ClassX 的具体物件给 X</FONT> <BR>
<FONT COLOR="#000099">  Set X As new ClassX</FONT> <BR>
<FONT COLOR="#000099">  ' 结束副程式之前,忘了执行 Set X = Nothing</FONT>
<BR>
<FONT COLOR="#000099">End Sub</FONT> </P>

<P>结 果 以 上 副 程 式 每 被 呼 叫 一 次 , 就 會 建 立 一 个 具 体 物
件 , 但 它 并 不 會 在 副 程 式 结 束 前 , 将 具 体 物 件 归 还 系 统
, 所 以 被 呼 叫 的 次 数 越 多 , 吃 掉 的 记 忆 体 就 越 多 , 而 使
得 系 统 可 用 之 记 忆 体 越 来 越 少 。 <BR>
 </P>
</UL>

<H2><A NAME="S2"></A><FONT COLOR="#000099">控制元件(control)</FONT></H2>

<UL>
<P>控 制 元 件 是 VB 之 中 非 常 重 要 的 物 件 , 但 笔 者 必 须 强 调
一 点 , 控 制 元 件 的 行 径 与 前 面 介 绍 过 的 标 准 物 件 有 极 大
的 差 异 , 首 先 从 控 制 元 件 的 建 立 与 破 坏 谈 起 , 当 我 们 在
表 单 (Form) 布 置 一 个 控 制 元 件 之 後 , 将 来 只 要 这 个 表 单 被
载 入 , 控 制 元 件 就 會 跟 著 被 载 入 (建 立 ), 而 当 表 单 被 载
出 时 , 控 制 元 件 也 會 跟 著 被 载 出 (破 坏 ), 完 全 不 劳 程 式
设 计 者 费 心 , 由 於 很 多 人 是 从 控 制 元 件 开 始 学 习 VB 的 ,
以 致 後 来 使 用 标 准 物 件 时 , 很 容 易 忘 了 执 行「Set 物 件 变
数 = Nothing」破 坏 具 体 物 件 。 </P>

<P>使 用 控 制 元 件 时 , 常 见 的 问 题 是 :「如 何 动 态 地 建 立 控
制 元 件 ?」, 例 如 表 单 上 一 开 始 没 有 控 制 元 件 或 只 有 少 数
的 控 制 元 件 , 而 程 式 希 望 随 著 执 行 时 的 状 况 动 态 地 建 立
所 需 之 控 制 元 件 。 如 果 使 用 上 一 个 段 落 所 介 绍 的 方 法 ,
可 能 有 人 會 撰 写 以 下 叙 述 : </P>

<P><FONT COLOR="#000099">   Dim X As Object</FONT> <BR>
<FONT COLOR="#000099">   Set X = New TextBox ' 建立 TextBox 控制元件</FONT>
</P>

<P>但 实 际 上 是 行 不 通 的 , 为 什 麼 ? 因 为 控 制 元 件 是 表 单
的 子 物 件 , 而 利 用「Set 物 件 变 数 = New 物 件 类 别 名」所 建 立
的 物 件 则 属 於「程 式」所 管 辖 , 而 VB 并 不 允 许 我 们 建 立 附
属 於「程 式」的 控 制 元 件 , 因 此 以 上 叙 述 會 产 生 错 误 , 但
怎 样 在 表 单 上 面 动 态 地 建 立 控 制 元 件 呢 ? </P>

<P>以 TextBox 控 制 元 件 的 建 立 为 例 , 至 少 必 须 在 表 单 上 先
布 置 一 个 TextBox 控 制 元 件 , 并 且 设 定 它 的 Index 属 性 , 然
後 使 用 Load 叙 述 建 立 控 制 元 件 : (假 设 此 一 TextBox 名 称 为
Text1, 而 Index 属 性 设 定 为 0) </P>

<P><FONT COLOR="#000099">   Load Text1(I) ' I 可以是 0 以外的正整数</FONT>
<BR>
<FONT COLOR="#000099">   Text1(I).Visible = True ' 将 Text1(I) 显示出来</FONT>
<BR>
<FONT COLOR="#000099">   ' 此外,可能还需要设定 Left、Top 属性以决定座标位置</FONT>
</P>

<P>假 设 我 们 执 行 了 以 下 叙 述 : </P>

<P><FONT COLOR="#000099">  Load Text1(1)</FONT> <BR>
<FONT COLOR="#000099">  Load Text1(3)</FONT> </P>

<P>则 Text1 阵 列 的「值」元 素 可 以 表 达 成 图 -13:</P>

<CENTER><P><A HREF="43-13.gif">图-13 经过 Load 叙述之後的「值」元素结构</A>
</P></CENTER>

<P>至 於 破 坏 Text1 阵 列 中 的 某 一 个 控 制 元 件 , 方 法 则 是 :
</P>

<P>   <FONT COLOR="#000099">Unload Text1(I)</FONT> </P>

<P>以 上 被 破 坏 之 控 制 元 件 必 须 是 利 用 程 式 建 立 出 来 的 
Text1(I), 假 设 Text1(0) 是 设 计 阶 段 就 已 经 布 置 在 表 单 上 面
的 控 制 元 件 , 则「Unload Text1(0)」将 會 产 生 错 误 。 <BR>
 </P>
</UL>

<H3><U>「Set X = 控制元件名」的意义</U></H3>

<UL>
<P>在「建 立 具 体 物 件 的 几 个 方 法」的 段 落 中 , 我 们 介 绍 过「Set
物 件 变 数 1 = 物 件 变 数 2」的 叙 述 , 此 一 叙 述 的 作 用 是 复 制
物 件 变 数 2 的 具 体 物 件 给 物 件 变 数 1, 在 控 制 元 件 之 中 ,
也 有 类 似 的 叙 述「Set 物 件 变 数 名 =控 制 元 件 名」, 例 如 : </P>

<P><FONT COLOR="#000099">   Dim X As Object</FONT> <BR>
<FONT COLOR="#000099">   Set X = Text1</FONT> </P>

<P>但 它 的 作 用 不 是「复 制」Text1 的 具 体 物 件 给 X, 而 是 将 
Text1 的 具 体 物 件 与 X 的「值」元 素 产 生 连 结 关 系 , 如 图 -14:</P>

<CENTER><P><A HREF="43-14.gif">图-14「Set X = Text1」的意义</A> </P></CENTER>

<P>也 就 是 说 ,「Set X = Text1」并 不 會 建 立 具 体 物 件 , 而 执 行
此 一 叙 述 之 後 , X 与 Text1 指 的 将 是 同 一 个 具 体 物 件 , 所
以 以 下 叙 述 會 将 Text1 的 内 容 变 成 &quot;ChangeIt!&quot;: </P>

<P><FONT COLOR="#000099">   X.Text = &quot;ChangeIt!&quot;</FONT> <BR>
<FONT COLOR="#000099">   ' 作用相当於 Text1.Text = &quot;ChangeIt!&quot;</FONT>
<BR>
 </P>
</UL>

<H2><A NAME="S3"></A><FONT COLOR="#3333FF">表单(Form)</FONT></H2>

<UL>
<P>表 单 也 是 物 件 , 但 它 又 跟 标 准 物 件 及 控 制 元 件 又 有 些
出 入 , 以 下 让 我 们 来 比 较 几 个 操 作 表 单 的 叙 述 : </P>

<P><FONT COLOR="#CC0000">◆ Load FormX</FONT>: 载 入 FormX。 与「Load
控 制 元 件 (I)」不 同 的 是 ,「Load FormX」只 能 载 入 既 有 的 表 单
, 而 无 法 动 态 地 建 立 表 单 。 此 外 请 注 意 , 载 入 并 不 等 於
显 示 出 来 , 若 要 显 示 出 来 还 要 执 行 以 下 叙 述 : </P>

<P><FONT COLOR="#000099">   FormX.Visible = True  或</FONT> <BR>
<FONT COLOR="#000099">   FormX.Show</FONT> </P>

<P><FONT COLOR="#CC0000">◆ FormX.Show</FONT>: 显 示 表 单 , 若 表 单
尚 未 载 入 , 则 此 一 叙 述 會 先 载 入 表 单 再 显 示 。 </P>

<P><FONT COLOR="#CC0000">◆ Unload FormX</FONT>: 载 出 表 单 。 </P>

<P><FONT COLOR="#CC0000">◆ Set X = New FormX</FONT>: 复 制 FormX 的 具
体 物 件 给 物 件 变 数 X, 执 行 此 一 叙 述 後 , X 与 FormX 为 两 个
独 立 的 物 件 。 (注 : 想 要 将 X 所 指 到 的 表 单 显 示 出 来 , 还
是 要 将 X.Visible 设 定 为 True) </P>

<P><FONT COLOR="#CC0000">◆ Set X = FormX</FONT>: 将 X 指 到 FormX 的
具 体 物 件 , 也 就 是 说 , X 与 FormX 指 的 是 同 一 个 表 单 物 件
, 举 例 来 说 , 若 执 行 此 一 叙 述 後 , 接 著 又 执 行「X.Caption
= &quot;NewTitle&quot;」, 则 FormX 的 标 题 将 會 变 成 &quot;NewTitle&quot;。
</P>

<P><FONT COLOR="#CC0000">◆ Set X = Nothing</FONT>: 将 X 所 指 到 的 表
单 具 体 物 件 归 还 给 系 统 。 <BR>
 </P>
</UL>

<H2><A NAME="S4"></A><FONT COLOR="#3333FF">结 语</FONT></H2>

<UL>
<P>本 期 介 绍 了 变 数 及 物 件 在 系 统 内 部 的 组 成 , 虽 然 没 有
程 式 设 计 的 技 巧 , 却 是 改 善 程 式 体 质 不 可 或 缺 的 观 念 。
瞭 解 变 数 及 物 件 的 组 成 , 就 好 像 瞭 解 血 液 是 由 红 血 球 、
白 血 球 、 血 小 板 … 所 组 成 的 一 样 , 但 血 液 不 是 静 止 的 ,
同 样 的 , 变 数 及 物 件 在 程 式 中 也 不 是 静 止 的 , 静 止 的 变
数 及 物 件 是 没 有 bug 的 , 唯 有 到 处 流 窜 的 变 数 及 物 件 才 會
造 成 程 式 的 错 误 , 下 一 期 笔 者 将 介 绍 变 数 与 物 件 在 程 式
中 的 流 窜 模 式 。</P>
</UL>

<P>
<HR WIDTH="100%"></P>

</BODY>
</HTML>

⌨️ 快捷键说明

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