Previous topicNext topic
Help > 开发指南 > 窗体开发 > 控件参考 > 控件参考 > 通用成员 >
转换类控件

开发版及以上授权用户无需看此部分内容。

为了让一些没有C1授权的用户也可以正常使用窗体设计功能,这里提供了一些常用控件的替代控件。控件界面观感差一点,但是使用方式与最终运行效果跟原控件是一样的。

名称 森之格基础控件 转换替代控件 带标题转换绑定控件
复选框 SmCheckBox CtCheckBox CtBoxCheckBox
复选组合框 SmCheckedComboBox CtCheckedComboBox CtBoxCheckedComboBox
复选列表框 SmCheckedListBox 可用SmCheckedListBox 可用BoxCheckedListBox
颜色选择框 SmColorPicker CtColorPicker CtBoxColorPicker
组合框 SmComboBox CtComboBox CtBoxComboBox
日期选择框 SmDateTimePicker CtDateTimePicker CtBoxDateTimePicker
自动筛选框 DropDownAutoFilterBox   CtBoxDropDownAutoFilter
下拉组合框 SmDropDownBox CtDropDownBox CtBoxDropDownBox
下拉目录树框 DropDownTreeFilterBox CtDropDownTreeFilterBox CtBoxDropDownTreeFilter
颜色选择框 SmFontPicker CtFontPicker CtBoxFontPicker
列表框 SmListBox 可用SmListBox 可用BoxListBox
数值组合框 SmNumericComboBox CtNumericComboBox CtBoxNumericComboBox
图片 SmPictureBox 可用SmPictureBox 可用BoxPictureBox
文本框 SmTextBox CtTextBox CtBoxTextBox
时间选择框 SmTimePicker CtTimePicker CtBoxTimePicker
文件管理 SmFilesManager CtFilesManager  
图片管理 SmImagesManager CtImagesManager  
分组框 BoxGrouper    
树表 SmEditTreeGrid    
树表组合面板 SmEditTreeTable CtEditTreeTable 蓝色字体表示可绑定控件。我们可以直接进行字段绑定
路径选择框 SmFilePathSelectBox CtFilePathSelectBox
命令按钮 SmButton CtButton 黄色背景色表示此控件是甚至C1控件扩展而来,使用时需要C1授权,开发版以下用户,比如试用版、单机授权版用户不能够正常使用。但是可以使用它们的替代控件,以Ct开头的控件代替使用。只是窗体设计时可见效果差一点,实际运行效果以开发方式是一样的。
窗体 SmForm  
菜单按钮 SmFormMenuButton  
SmGrid CtGrid
标签 SmLabel  
线条 SmLine  
列表视图 SmListView  
面板 SmPanel  
单选框 SmRadioButton  
单选列表框 SmRadioListBox  
单记录表 SmRecordGrid CtRecordGrid
分区面板 SmSplitContainerClass  
分区折叠面板 SmSplitContainerEx    
系统选项 SmSystemOption    
页面集合 SmTabControl    
目录树 SmTreeView    
目录树查找框 SmTreeViewFind CtTreeViewFind  
目录树菜单 SmTreeViewMenu CtTreeViewMenu  
表字段索引框 GridDataSearch CtGridDataSearch  
标准树表面板 GridEditTreeStandard CtGridEditTreeStandard  
绑定控件集 GridFieldControls CtGridFieldControls  
表筛选框 GridFilter CtGridFilter  
空菜单 GridMenuBase CtGridMenuBase  
表菜单 GridNavigator CtGridNavigator  
主子表结点面板 GridNode CtGridNode  
字段预览面板 GridNotes CtGridNotes  
表记录导航菜单 GridRecordNavigator CtGridRecordNavigator  
标准编辑表面板 GridStandard CtGridStandard  
树表筛选框 GridTreeFilter CtGridTreeFilter  
子表集合 SubGrids CtSubGrids  
数据透视表 PivotPage CtPivotPage  
透视表控制面板 PivotPanel CtPivotPanel  

这套控件有以下几个特点:

1、在窗体设计中的界面难看,只有一个框。

实际运行效果

2、作为商用控件的免费代替品,主要靠代码控制。

3、代码控制方式跟它替代的原对象一致。我们甚至要对代码编辑器中引用控件的类型也要替换成原对象类型。我们需要对自己做一个自我催眠,Ct开头转换类控件,与正常的原控件唯一不同的地方就是设计窗体中的显示效果。

最后执行效果如下:

4、虽然我们上面强调了Ct开头转换类控件,与正常的原控件唯一不同的地方就是设计窗体中的显示效果。可是真的是这样吗?当前这套转换类控件的实现原理是,我们做一套普通控件,然后让它的属性和事件跟要替代的商业控件的属性、事件一致。然后方便我们在设计窗体中进行控件的布局。写代码的时候我们引用的对象类型还是原控件类型,这是因为我们在运行窗体时,创建控件的时候就直接用原控件类型创建,然后取窗体设计中设置的一些属性设置和事件代码绑定。这个过程一切看起来都很完美,丑的只是设计界面,属性变动无法直观地看到修改效果。但是,实际的操作过程中,我们原控件可能功能修改,添加或删除了一些属性、方法、事件,而这个转换类控件并没有同步地跟着修改。这就必然会给我们的窗体设计带来一点点意外的效果。而且不是所有的属性、事件都可以方便地在Ct开头的转换类控件上实现。

所以,如果一些功能在正常原控件中可以实现,但是为什么在这里的替换控件不能实现?原因一:可能是还没有同步。原因二:相应的功能可能并不太适合转换。那有什么办法解决吗?有!那就是通过代码控制。代码操作的都是原控件类型,就没有这种限制。想省钱,那就只能忍受这样那样的限制。最终结果是OK的就行了。

5、我们在了解了此类控件的大概背景后,也只需要正常的学习其他控件即可。