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

Visual FoxPro 9 ListBox控件无法显示数组数据问题求助

ListBox无法显示数组数据的问题修复

问题描述

需要将变量cListData接收的游标结果显示在ListBox控件中,为支持超过255字符的显示,设置了RowSourceType = 5(数组)、RowSource = "aListData"。调试确认aListData数组已正确加载元素,但ListBox始终无文本显示。

相关代码:

LPARAMETERS cListData

* 获取SQL前缀信息
LOCAL cPrefix
cPrefix = SQLMessage(81664)

* 调试显示前缀内容
MESSAGEBOX("Prefix: " + cPrefix)

* 创建并填充带前缀的数组
LOCAL aListData[1]
LOCAL nLines

* 将数据分割为独立元素
nLines = ALINES(aListData, cListData, ",")
DIMENSION aListData[nLines + 1]

* 仅在数组第一个元素添加前缀
aListData[1] = cPrefix

* 初始化临时数组存储分割后的行
LOCAL tempListData[1]
DIMENSION tempListData[nLines]

* 将元素存入临时数组
FOR i = 1 TO nLines
    tempListData[i] = ALLTRIM(aListData[i])
NEXT

* 将临时数组元素放回aListData,从第二个索引开始
FOR i = 1 TO nLines
    aListData[i + 1] = tempListData[i]
NEXT

* 调试显示aListData内容
FOR i = 1 TO ALEN(aListData)
    MESSAGEBOX("aListData[" + TRANSFORM(i) + "]: " + aListData[i])
NEXT

* 设置ListBox使用数组作为数据源
ThisForm.List.RowSourceType = 5 && 数组类型
ThisForm.List.RowSource = "aListData"  && 数组名加引号

* 清空表单Tag(可选)
ThisForm.Tag = ""

问题截图:
ListBox未显示数据截图

核心问题与修复方案

核心问题

aListData是局部变量(LOCAL),方法执行完毕后局部变量会被自动释放,ListBox后续无法访问到该数组,导致无数据显示。此外原代码中ALINES的参数使用有误,分割逻辑存在冗余。

修复步骤

  1. 将数组改为表单级变量:确保方法执行后数组依然存在,ListBox可持续访问。
  2. 修正ALINES参数:正确指定分隔符位置,避免分割错误。
  3. 简化数组操作逻辑:移除冗余的临时数组,优化元素后移的循环方式。
  4. 强制ListBox刷新:添加Requery()方法确保控件重新读取数据源。

修正后的代码

LPARAMETERS cListData

* 获取前缀信息
LOCAL cPrefix
cPrefix = SQLMessage(81664)

* 分割数据到表单级数组,逗号作为分隔符
LOCAL nLines
nLines = ALINES(ThisForm.aListData, cListData, .F., ",")

* 调整数组大小,插入前缀作为第一个元素
DIMENSION ThisForm.aListData[nLines + 1]
* 从后往前循环,避免元素覆盖
FOR i = nLines DOWNTO 1
    ThisForm.aListData[i + 1] = ALLTRIM(ThisForm.aListData[i])
NEXT
* 设置前缀到第一个位置
ThisForm.aListData[1] = cPrefix

* 配置ListBox并强制刷新
ThisForm.List.RowSourceType = 5
ThisForm.List.RowSource = "ThisForm.aListData"
ThisForm.List.Requery()

ThisForm.Tag = ""

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:02:10