计算机vfp返回值,VFP 中 怎 样 获 取 表 单 的 返 回 值

在 调 用 自 定 义 的 对 话 框 表 单 时, 我 们 往 往 需 要 获 得 该 表 单 执 行 后 的 选 择 结 果 或 是 某 些 控 件 的 值 等 等。 许 多 人 采 用 的 方 法 是 设 置 一 个 全 程 变 量, 然 后 在 对 话 框 表 单 内 部 修 改 该 标 志 变 量, 进 而 获 得 需 要 的 结 果。 其 实VFP 提 供 了 一 种 更 为 安 全 的 方 法, 使 得 表 单 不 光 能 够 接 收 参 数, 而 且 能 够 返 回 值。 由 于 不 使 用 全 程 变 量, 表 单 的 通 用 性 和 独 立 性 得 以 增 强。 要 使 得 一 个 表 单 能 够 返 回 值, 必 须 满 足 以 下 条 件:

1. 该 表 单 的 窗 体 类 型 必 须 是 模 式 窗 体;

2. 调 用 该 表 单 的 命 令 为

DO  FORM  frmName  [WITH参数列表]  TO  VarName

其 中frmName 是 被 调 用 表 单 的 名 称( 若 表 单 有 参 数 应 正 确 指 定 实 参),

VarName:用来接收表单返回值的变量名.如果该变量原先没有定义,则会被自动创建.

3. 被 调 用 表 单 必 须 在unload 方 法 的 代 码 中 使 用 返 回 语 句

return  表 达 式

并 且 应 保 证 该 语 句 一 定 能 够 被 执 行 到, 以 将 表 达 式 的 值 送 入 指 定 的 变 量 中。return 命 令 后 的 表 达 式 可 以 是 任 意 类 型 的 合 法 表 达 式, 如 果 省 略 了return 语 句 后 的 表 达 式, 则 表 单 将 返 回 值 逻 辑 值.T.。 下 例 简 要 说 明 了 获 取 表 单 返 回 值 的 方 法:

一、 创 建 循 环 调 用 程 序test.prg

do while .T.

tempvar = ''&&接收表单返回值的变量

do form test totempvar

*:\\调用表单,返回值送入变量tempvar

if empty(tempvar)

&&若直接关闭了表单则

exit

else

wait window '表单返回值是'+ tempvar

endif

enddo

二、 创 建 示 例 表 单test

1. 添 加 新 属 性uRetuVal;

2. 在unload 方 法 中 添 加 代 码: ----

retu this.uRetuVal

注 意: 由 于 表 单 的unload 事 件 发 生 在destroy 事 件 之 后, 而 此 时 依 附 于 表 单 的 其 他 控 件 都 已 经 释 放, 只 能 引 用 表 单 的 属 性, 而 不 能 引 用 这 些 控 件 的 任 何 属 性 值, 如command1.caption 等 等。 因 此 一 定 要 先 将 需 要 返 回 的 值 送 入 表 单 的 公 共 属 性uRetuVal 中, 这 样 才 能 够 获 得 表 单 的 返 回 值。

3. 设 置 表 单 属 性windowtype 的 值 为1, 即 表 单 为 模 式 表 单。

4. 添 加 三 个 按 钮command1,command2,command3。 设 置 其 属 性 如 下:

command1.caption ="OK"

command1.caption = "CANCEL"

command1.caption = "HELP"

在这三个按钮的click方法里填写相同的代码

thisform. uRetuVal = this.caption

rele thisform

三、 保 存 退 出, 执 行test.prg。

可 以 观 察 到, 按 下 不 同 的 按 钮 时, 变 量tempvar 将 返 回 不 同 的 值, 这 证 明 表 单 的 确 可 以 返 回 值 到 调 用 过 程。 利 用 这 种 方 法, 我 们 可 以 从 表 单 中 返 回 任 何 类 型 的 值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值