请教一个打开画面时自动填充下拉框控件的问题

已锁定

szy868

  • 帖子

    101
  • 精华

    6
  • 被关注

    18

论坛等级:侠客

注册时间:2006-10-24

普通 普通 如何晋级?

请教一个打开画面时自动填充下拉框控件的问题

1156

3

2009-11-04 15:46:51

我在做一个画面,画面中有一个下接框,一个列表控件,一个趋势曲线控件,一个按钮。
列表和曲线控件组态的变量是一致的,但列表和曲线控件不同时显示出来,按钮用来切换显示列表或曲线。
我的想法是打开该画面时,将列表控件所组态的列名称填充到下拉框控件的列项中去,代码如下。
现在问题是打开该画面时,有时候能够成功填充下拉框,有时候不能填充,没有什么规律。
请各位兄弟给个建议。
//
#include "apdefap.h"
void OnOpenPicture(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma option(mbcs)

#define GetObjectA GetObject

int iListCount, iListIndex;
char *strLable;
int i;
BOOL bTrendDis;

__object *pdl=NULL;
__object *pic=NULL;
__object *obj=NULL;

bTrendDis = GetTagBitWait("bTableDisplay");
if(!bTrendDis)
{
pdl = __object_create("PDLRuntime");
if(!pdl)
{
printf("Open pdl = NULL\r\n");
return;
}

pic = pdl->GetPicture("pMain.pMainArea:pTableAndTrend");
if( pic == NULL)
{
__object_delete(pdl);
printf("Open pic = NULL\r\n");
return;
}
//cb2是一个S7flatDropDown控件
obj = pic->GetObject("cb2");
if( obj == NULL)
{
__object_delete(pic);
__object_delete(pdl);
printf("Open obj = NULL\r\n");
return;
}

// obj->Clear( );
//iTrendNo是一个内部变量,表示当前要显示的趋势曲线序号
iListIndex = GetTagSDWordWait("iTrendNo");
//cb3是一个表格控件
iListCount = GetPropWord(lpszPictureName,"cb3","NumItems");

if(iListIndex >= iListCount)
iListIndex = 0;

for(i = 0; i {
SetPropWord(lpszPictureName,"cb3","Index",i);
strLable = GetPropChar(lpszPictureName,"cb3","Name");
printf("Open Picture The Lable is: %s \r\n",strLable);

//cb4是一个趋势曲线控件
SetPropWord(lpszPictureName,"cb4","Index",i);
if(i == iListIndex)
{
SetPropBOOL(lpszPictureName,"cb4","ItemVisible",TRUE);
SetPropChar(lpszPictureName,"cb4","Label",strLable);
}
else
SetPropBOOL(lpszPictureName,"cb4","ItemVisible",FALSE);

obj->AddItem(strLable,i);
}

SetPropWord(lpszPictureName,"cb2","ListIndex",iListIndex);

SetPropWord(lpszPictureName,"cb4","Index",iListIndex);
SetPropChar(lpszPictureName,"cb4","Command","Reload");

printf( "Open Picture iTrendNo is: %d \r\n", iListIndex );
printf( "Open Picture cb3->NumItems is: %d \r\n", iListCount );

iListCount = GetPropWord(lpszPictureName,"cb2","ListCount");
printf( "Open Picture cb2->iListCount is: %d \r\n", iListCount );

__object_delete(obj);
__object_delete(pic);
__object_delete(pdl);
}
}
请教一个打开画面时自动填充下拉框控件的问题 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32889条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。