You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:FM16标签页签名捕获窗口的信息传递与返回实现

实现签名捕获到对应标签页门户的方案

嘿,我来帮你一步步搞定这个需求——GetLayoutObjectAttribute确实是核心工具,咱们从基础到脚本落地来梳理:

1. 先给标签面板起个可识别的名字

首先在布局模式下,选中你的标签面板,在检查器的「对象名称」栏给它起个明确的名字,比如 SignatureTabPanel。这一步是为了让脚本能精准定位到这个标签面板的状态。

2. 编写按钮的触发脚本

这个按钮的核心逻辑是:先判断当前激活的是不是Sig1/Sig2标签,记录下标签名,再打开捕获窗口。脚本代码如下(直接在FileMaker脚本编辑器里复制就行):

# 按钮触发脚本:打开签名捕获窗口
Set Variable [$$ActiveSignatureTab; Value:GetLayoutObjectAttribute("SignatureTabPanel"; "CurrentTabName")]

# 过滤非目标标签的情况,避免无效操作
If [$$ActiveSignatureTab = "Sig1" or $$ActiveSignatureTab = "Sig2"]
    # 打开你的签名捕获窗口,这里替换成你实际的窗口名称和参数
    Open Window [Name: "签名捕获窗口"; Style: Document; Size: 450, 350; Top: Get(WindowTop) + 50; Left: Get(WindowLeft) + 50]
Else
    Show Custom Dialog ["提示"; "请先切换到Sig1或Sig2标签页再进行签名捕获哦"]
End If

这里用$$ActiveSignatureTab这个全局变量是为了让签名捕获窗口能读取到当前激活的标签信息——全局变量的作用域覆盖整个文件,跨窗口也能访问。

3. 签名捕获完成后的回写逻辑

当用户在捕获窗口完成签名后,需要把签名数据写入对应标签页的门户字段里。假设你已经有了捕获签名的逻辑(比如用FileMaker自带的签名控件,或者第三方插件获取到了签名数据),在完成捕获的脚本里加上以下逻辑:

# 签名捕获完成后的回写脚本
If [$$ActiveSignatureTab = "Sig1"]
    # 替换成Sig1门户对应的签名字段,比如 Sig1_Portal::Signature_Field
    Set Field [Sig1_Portal::Signature_Field; 你的签名捕获数据]
Else If [$$ActiveSignatureTab = "Sig2"]
    # 替换成Sig2门户对应的签名字段,比如 Sig2_Portal::Signature_Field
    Set Field [Sig2_Portal::Signature_Field; 你的签名捕获数据]
End If

# 关闭捕获窗口并刷新原窗口,确保签名立即显示
Close Window [Current Window]
Refresh Window [Original Window]

# 可选:用完全局变量后清空,避免残留影响后续操作
Set Variable [$$ActiveSignatureTab; Value:""]

几个关键注意点

  • 标签页的名称要完全匹配:脚本里判断的"Sig1"/"Sig2"必须和你标签面板里设置的标签名一模一样,大小写也要一致。
  • 门户字段的上下文要正确:确保Set Field操作时,当前记录是门户里对应的记录(如果是新增记录,可能需要先在门户里创建空记录再写入)。
  • 全局变量的清理:用完后清空$$ActiveSignatureTab,防止下次误读之前的残留值。

这样操作下来,点击按钮时就会自动识别当前激活的Sig标签,捕获完成后签名也会精准回到对应的门户里啦~

内容的提问来源于stack exchange,提问作者Jammocash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:37:55