Dephi自定义类型说明

定义了如下两个类型

  TChannelType = (ctUser, ctTrunk, ctEmpty, ctRecord, ctMessage, ctFax,
    ctVirtual);
  // 通道状态
  TChannelStatus = (
    csFree, // 空闲
    csOffHook, // 摘机
    csDial, // 拨号
    csWaitingSignal, // 等待拨号音结果
    csTimeOut, // 超时
    csConnect, // 连接,被叫摘机
    csPlaying, // 放音
    csRecording, // 录音
    csGetDtmf, // 收码
    csHangup, // 挂机
    csLink, // 连接,会议模式
    csDisable); // 禁用
现在,需要在界面上显示相应的中文信息,例如:通道类型是ctUser时,显示内线;ctTrunk=外线,等等。
一个解决办法,使用case
case achannel.ChannelType of
ctUser: s:='内线';
ctTrunk: s:='外线';
...
end;
如果状态多的话,修改很麻烦。
----------------------------------
另外一个解决方法:
在一个单元文件uGlobeUnit中定义
resourcestring
  RsUser = '内线';
  RsTrunk = '外线';
  RsEmpty = '悬空';
  RsRecord = '录音';
  RsMessage = '短信';
  RsFax = '传真';
  RsVirtual = '虚拟';  

  RsFree = '空闲';                // 空闲
  RsOffHook = '摘机';             // 摘机
  RsDial = '拨号';                // 拨号
  RsWaitingSignal = '等待拨号音'; // 等待拨号音
  RsTimeOut = '超时';             // 超时
  RsConnect = '连接';             // 连接,被叫摘机
  RsPlaying = '放音';             // 放音
  RsRecording = '录音';           // 录音 
  RsGetDtmf = '收码';             // 收码
  RsHangup = '挂机';              // 挂机
  RsLink = '连接';                // 连接
  RsDisable = '禁用';             // 禁用
然后,在上面定义TChannelType的相同单元中定义:

const
  // 预定义的通道状态
  GAChannelStatusLabels: array [TChannelStatus] of string = (RsFree, RsOffHook,
    RsDial, RsWaitingSignal, RsTimeOut, RsConnect, RsPlaying, RsRecording,
    RsGetDtmf, RsHangUp, RsLink, RsDisable);
  // 通道类型说明
  GAChannelTypeLabels: array[TChannelType] of string = (RsUser, RsTrunk, RsEmpty,
    RsRecord, RsMessage, RsFax, RsVirtual);

最后,使用的时候

s:=GAChannelTypeLabels[aChannel.ChannelType]; aChannel.ChannelType 是TChannelType类型
就可以获得相应的说明了。
同样的
s:=GAChannelStatusLabels[aChannel.status]; 
可获得状态说明。
 
 
 
 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据