起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 277|回复: 15

【结贴】怎样遍历枚举类型**

[复制链接]
发表于 2008-7-28 17:32:05 | 显示全部楼层 |阅读模式
我想把TBizObjectKind的所有值的名称显示在combobox里面,请问怎么做?
回复

使用道具 举报

发表于 2008-7-28 18:14:47 | 显示全部楼层
楼主,我个人建议不要使用枚举查找,还是用数据查找,这样你要控制或者操作的东东方便多了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-28 18:21:41 | 显示全部楼层
不好意思 不太明白,能给段代码提示一下么
回复 支持 反对

使用道具 举报

发表于 2008-7-28 18:23:15 | 显示全部楼层
function GetKindStr(A: TBizObjectKind): String;
begin
  case a of
  TBizObjectKind.boNone: Result := 'boNone';
  TBizObjectKind.boFolder: Result := 'boFolder';
  TBizObjectKind.boFile: Result := 'boFile';
  TBizObjectKind.boServer: Result := 'boServer';
//  boBizServer, boFileServer, boOrgServer, boSpace, boBizDictSpace, boBizInfoSpace, boBizFuncSpace, boBizProcSpace, boParamGroup, boParam, boElementGroup, boElement, boFieldTempletGroup, boFieldTemplet, boDatabase, boTable, boField, boLibrary, boForm, boInfo, boDataSet, boDataSetField, boFormDoc, boSheetDoc, boRichDoc, boFunc, boProc, boOrgRoot, boPositionRoot, boPersonRoot, boOrgan, boDept, boPositionMember, boPersonMember, boWorkGroup, boWorkGroupMember, boPosition, boPerson, boIcon, boBitmap, boGif, boJpeg, boHeaderFooter, boToolBar, boOperationGroup, boOperation);
  else Result := '(unknown)';
  end;
end;

procedure TMainForm.Button1Click(Sender: TObject);
var
  i: TBizObjectKind;
begin
  for i:= Low(TBizObjectKind) to High(TBizObjectKind) do
    memo1.Lines.Add(GetKindStr(i));
end;

是这样吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-28 18:24:48 | 显示全部楼层
for j:=Low(TBizObjectKind) to High(TBizObjectKind) do
   begin                  
       ComboBox2.Items.Add(j.tostring);
   end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-28 18:26:58 | 显示全部楼层
必须用case么,这也不是遍历啊
这么多项,要是一个一个写,很累啊
回复 支持 反对

使用道具 举报

发表于 2008-7-28 18:27:19 | 显示全部楼层
你这么运行不会报错?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-28 18:29:58 | 显示全部楼层
报错了
Access violation at address 00000000. Read of address 00000000
回复 支持 反对

使用道具 举报

发表于 2008-7-28 22:37:14 | 显示全部楼层
最初由 拓思科技 发布
[B]for j:=Low(TBizObjectKind) to High(TBizObjectKind) do
   begin                  
       ComboBox2.Items.Add(j.tostring);
   end; [/B]

这么写不对吧。
参照上面的函数,应该这么写才对
ComboBox2.Items.Add(GetKindStr(j));
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-29 08:39:02 | 显示全部楼层
最初由 拓思科技 发布
[B]必须用case么,这也不是遍历啊
这么多项,要是一个一个写,很累啊 [/B]

有别的方法么,不能通过函数获取TBizObjectKind里每一项的名称么
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-20 07:48 , Processed in 0.040857 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表