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

📄 jump_com.htm

📁 对于学习很有帮助
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>用Delphi设计拨动、跳线开关组件</title>
</head>

<body bgcolor="#FFFFFF" text="#000000">

<p align="center"> <font color="#0000c0"></p>

<h2 align="center">用Delphi 设 计 拨 动、 跳 线 开 关 组 件 </font></h2>

<h3 align="center">昆 明 贵 金 属 研 究 所 所 办 公 室<br>
马 骏 </h3>

<p><font color="#ffffff">----</font> 计 算 机 测 控 系 统 中 常 使 用 各 种 
计 算 机 测 试 板 卡, 在 这 些 板 卡 上 多 设 有 各<br>
种 编 码 和 跳 线 开 关。 在 编 写 与 之 配 用 的 测 控 程 序 时, 
常 需 编 写 这 些 开 关 操<br>
作 时 的 相 应 程 序, 如 果 有 一 个 编 码 或 跳 线 开 关 组 件 是 
十 分 有 帮 助 的。 以 下<br>
是 我 用Delphi 编 写 的 一 个BiSwitch 控 件。 </p>

<p><font color="#ffffff">----</font> 此 控 件 由TGraphicControl 继 承 而 来, 具 
有 常 用 的 属 性, 如Enabled、Tag、Hint 等, 此 外<br>
新 增 加 了State, Color 属 性。 对 于 编 码 和 跳 线 开 关, 只 有 两 
个 状 态(ON 和OFF), 在 预<br>
先 编 辑 好 的 资 源 文 件 中 存 有 开 关 在 不 同 状 态 下 的 图 
片, 当 开 关 改 变 状 态 时<br>
将 相 应 的 图 形 显 示 出 来, 开 关 在 屏 幕 上 就 能 被“ 拨 动” 
了。Color 属 性 用 于 开 关<br>
的 背 景 与 窗 口 背 景 颜 色 配 合, 取 红 色 有 较 好 的 视 觉 效 
果, 绿 色 和 黄 色 是 电<br>
路 板 常 用 的 保 护 漆 色, 当Form 被 模 拟 成 电 路 板 时 这 会 有 
所 帮 助( 通 过 修 改 资<br>
源 文 件 可 以 得 到 你 想 要 的 开 关 颜 色 和 形 状)。 </p>

<p><font color="#ffffff">----</font> DIP 封 装 的 编 码 开 关 有4 位、8 位、12 
位 等 规 格, 跳 线 开 关 则 可 以 任 意 数 量 使<br>
用。 将BiSwitch 组 合 使 用 就 可 以 满 足 不 同 位 数 的 要 求, 所 
附 的SWITCH 程 序 中 就<br>
有 一 个8 位 编 码 开 关 的 例 子, 效 果 如 图。 下 面 以 双 诺 公 
司 的AC1032 数 字I/O 卡 上<br>
的SW1 开 关 说 明 使 用 方 法,SW1 用 于 设 定 测 试 卡 在 计 算 机 
中 的 基 址, 其 开 关<br>
SW1 的 位2 确 定 基 址 的 位10, 开 关 位8 确 定 基 址 的 位4, 基 址 
位10 以 上 接 地, 位4 以<br>
下 供 测 试 卡 自 用, 基 址 调 节 范 围 从210H-7F0H。 为 了 使 编 码 
开 关 的 拨 动 与 基 址<br>
对 应 起 来, 将 每 一 个BiSwitch 的Tag 属 性 赋 值 为 相 应 基 址 位 
的 数 值, 如 开 关 位8 的<br>
Tag 值 为4, 开 关 位1 未 使 用Tag 为0。 在 每 一 个BiSwitch 的OnClick 事 
件 中 都 调 用doSwitch 来<br>
响 应。 </p>

<pre>Procedure doSwitch
var
bs : TBiSwitch;
begin
bs := (Sender as TBiSwitch);
{改变开关的显示状态 }
bs.State := not bs.State;

{根据Tag的值确定新的基址 }
if bs.Tag &gt;0 then
   begin
   { HiByte, LoByte为窗体的私有变量作
为中间变量计算基址 }
   if bs.Tag &gt;7 then HiByte.SetBit( bs.Tag-8 )
   else                     LoByte.SetBit( bs.Tag );
   end;

{将新的基址赋值给测试卡 }
pc1032.SetAddress(HiByte.FValue * 256 + LoByte.FValue);
{在窗体中显示新的地址 }
lbAddress.Caption := Format
('BaseAddress is %xH', [pc1032.GetAddress]);
end;
</pre>
</body>
</html>

⌨️ 快捷键说明

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