由于抽签HT For Web ComboBox下拉框组件
传统HTML5的下拉框select仅仅能实现简单的文字下拉列表,而HT
for Web通用组件中ComboBox不仅可以实现传统HTML5下拉框效果,并且可以在文本框和下拉列表中加入自己定义的小图标,让整个组件看起来更直观。今天我就怎样制定ComboBox自己定义下拉框做一番探讨。
首先我们先来目睹下效果:
看起来跟普通的ComboBox好像也没什么特殊的,是的,依照规范的ComboBox设计,全然能够实现相同的效果,可是今天的主要任务并非讨论有多少实现方案,今天的首要任务是介绍HT
for Web的ComboBox自己定义下拉列表的使用方法。
那么接下来就開始详细的方案介绍,废话不多说,上代码:
function createGradientComboBox(dataModel){
var sm = dataModel.sm(),
gradientComboBox = new ht.widget.ComboBox(),
gradients = ['linear.southwest','linear.southeast','linear.northwest','linear.northeast',
'linear.north','linear.south','linear.west','linear.east',
'radial.center','radial.southwest','radial.southeast','radial.northwest','radial.northeast',
'radial.north','radial.south','radial.west','radial.east',
'spread.horizontal','spread.vertical','spread.diagonal','spread.antidiagonal',
'spread.north','spread.south','spread.west','spread.east'],
gradientImages = [],
indent = gradientComboBox.getIndent(),
height = 18,
padding = 2; gradients.forEach(function (gradient) {
gradientImages[gradient] = {
width: indent,
height: height,
comps: [
{
type: 'rect',
rect: [padding, padding, indent - 2 * padding, height - 2 * padding],
background: 'red',
gradient: gradient,
gradientColor: 'white'
}
]
};
}); gradientComboBox.setValues(gradients);
gradientComboBox.setValue('linear.southwest');
gradientComboBox.setWidth(90);
gradientComboBox.setDropDownWidth(140);
gradientComboBox.drawValue = function(g, value, selected, x, y, w, h){
var self = this,
indent = self.getIndent(),
label = self.toLabel(value),
icon = gradientImages[value]; if(icon){
ht.Default.drawCenterImage(g, icon, x+indent/2, y+h/2);
x += indent;
}
if(label){
ht.Default.drawText(g, label, self.getLabelFont(value, selected), self.getLabelColor(value, selected), x, y, 0, h);
}
}; gradientComboBox.onValueChanged = function(oldValue, newValue){
onComboBoxValueChanged(dataModel, oldValue, newValue, 'shape.gradient', this);
};
return gradientComboBox;
}
这是背景渐变效果列表的详细构建代码,我来描写叙述下详细的设计思路:
- 将HT
for Web支持的渐变效果组合起来放在一个叫gradient的数组变量中。 - 通过遍历gradient数组来动态创建gradient相应的矢量图。并将矢量图存放在gradientImages的数组变量中。
- 将gradient文本值作为ComboBox的value,并设置ComboBox的相关參数;
- 通过重载ComboBox的drawValue方法来实现自己定义下拉列表;
- 在drawValue方法中须要传入的參数有:g(画笔),value(相应comboBox中values),selected(是否被选中),x,y(画笔的事实上绘制坐标x,y),w,h(画笔绘制的宽高w。h);
- 通过ht.Default.drawCenterImage()方法将数量图元绘制到指定位置。
- 通过ht.Default.drawText()方法将要显示的的值绘制到指定的位置;
- 最后重载ComboBox的onValueChanged()方法来监听ComboBox的属性变化,并依照要求做相应的业务处理。
总体思路就是这样子的。对应的图形ComboBox组件也是如此的设计思路,接下来我们来了解下ComboBox和HT
for Web网络拓扑图组件GraphView的联动效果实现吧。
通过两张图的对照,我相信大家都可以感受到变化吧。
前一张是GraphView的初始状态,后一张是通过选中图元后改动gradient渐变选择框后的效果,我们来看看详细的代码实现,GraphView和Node的创建我就不在这多说了。直接上事件处理的详细实现代码:
function onComboBoxValueChanged(dataModel, oldValue, newValue, style, scope){
var sm = dataModel.sm();
if(sm.size() === 0){
dataModel.each(function(data){
data.setStyle(style, newValue);
}, scope);
}else{
sm.each(function(data){
data.setStyle(style, newValue);
}, scope);
}
}
代码非常easy,做的事情也非常easy。接下来我们就来分析下代码的详细实现:
- 方法的入參:dataModel(数据容器),oldValue(comboBox老值),
newValue(comboBox新值),
style(要改变的样式名称), scope(方法调用者)。 - 从dataModel中获取对应的selectionModel
sm。 - 依据sm.size()来推断在GraphView中选取了多少个data,假设一个都没选中,则改动dataModel中的全部data的属性;假设有选中的data。则仅仅改动所选中data的属性。
到此自绘制HTfor Web ComboBox下拉框组件的介绍就结束了。HT for Web通用组件的灵活性和易用性还不止如此,在本文中涉及到矢量、ComboBox、几个关键知识点的拓扑结构部件等。在可能的文章会做详细,欢迎大家关注。
由于抽签HT For Web ComboBox下拉框组件的更多相关文章
- 自绘制HT For Web ComboBox下拉框组件
传统的HTML5的下拉框select只能实现简单的文字下拉列表,而HTforWeb通用组件中ComboBox不仅能够实现传统HTML5下拉框效果,而且可以在文本框和下拉列表中添加自定义的小图标,让整个 ...
- 从后台绑定数据到ligerui 的comboBox下拉框组件
这次来记录一下ligerUI的comboBox下拉框组件,ligerUI的API里也有相关描写叙述,上面都是前台写死数据,然后显示在组件中,我这次要说的是将后台的数据绑定到下拉框组件中,废话不多说. ...
- paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结
paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结 ====总结: 数据绑定下拉框,Uapi 1.最好的是默认绑定..Map(k ...
- 关于easyui combobox下拉框实现多选框的实现
好长时间没有更博了,一是因为最近真的比较忙,二是因为自己是真的偷懒了,哈哈 好啦,这篇博客主要是总结一些关于easyui combobox下拉框实现多选框的实现,包括前台界面的展示,和后台对数据的获取 ...
- winform c#绑定combobox下拉框 年度代码。
winform c#绑定combobox下拉框 年度代码. comboBox1.Items.AddRange("});//邦定数据 comboBox1.Text = DateTime.Now ...
- sencha combobox下拉框不用jsonstore,直接使用字符串数组做数据源
combobox下拉框的store除了可以选择一个jsonstore来加载数据,还可以直接使用符串Array做数据源. { xtype: 'combobox', fieldLabel: 'Label' ...
- easyui的combobox下拉框初始化默认值以及保持该值一直显示的方法
easyui的combobox下拉框默认初始值是空,下面是实现从远程加载数据之后初始化默认值,以及让该值一直排在下拉框的最顶部的方式. 目前的需求是需要在初始化的时候添加"全部数据库&quo ...
- 快速设计ComboBox下拉框
传统软件项目开发时,需要每个控件一个一个的来设计,同时需要在页面功能中对每个控件的属性进行判定处理,尤其是页面风格布局样式需要花去一大半的时间,并且后续要想修改是非常麻烦繁琐,这样就导致设计完成一个功 ...
- easyui combobox下拉框复制后再禁用,点击不会出现下拉框
easyui combobox下拉框禁用,点击不会出现下拉框 需要做到,在给easyui combobox赋值后,再禁用easyui combobox 解决办法: $("#time-sele ...
随机推荐
- JDK源码学习系列02----AbstractStringBuilder
JDK源码学习系列02----AbstractStringBuilder 因为看StringBuffer 和 StringBuilder 的源码时发现两者都继承了AbstractStringBuil ...
- Unreal Engine 4 创建Destructible Mesh(可破坏网格)
Unreal Engine 4的物理引擎用的是PhysX. 支持网格破坏.布料.物理粒子等,非常强大.曾经须要编码才干完毕的工作,在Unreal Engine 4 中仅仅须要拖拖拽拽就完毕了,非常方便 ...
- SlopOne推荐算法
在开源框架taste中有SlopOne的Java实现,效果不错.使用movielens的数据,代码例如以下 代码 #coding:utf-8 import re import math #读取数据,并 ...
- Linux常见命令整理(一)
整理一下,以备后用 cd /home 进入/home文件夹 cd .. 返回上一级文件夹 cd ../.. 返回上两级文件夹 cd 进入个人的主文件夹 cd - 返回上次所在的文件夹 pwd 显 ...
- WebService 用户名密码验证
原文:WebService 用户名密码验证 在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是 ...
- 有向图的邻接矩阵表示法(创建,DFS,BFS)
package shiyan; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; publi ...
- FastDFS设备、构造、配置()一-安装和部署
FastDFS是一个开源的.高性能的的分布式文件系统,他基本的功能包含:文件存储.同步和訪问,设计基于高可用和负载均衡,FastDFS很适用于基于文件服务的站点.比如图片分享和视频分享站点 FastD ...
- 【原版的】Redis事件驱动内核
Redis事件驱动内核 作者:cf (360电商技术组) 概述 Redis实现了自己的事件驱动,与开源事件库libevent.libev一样,都是基于I/O多路复用技术实现的.出于性能和代码精炼双方面 ...
- [改变自己wordpress.2]给wordpress加上简单debug sql调试.
或者说,同事. 需要帮她打印出来sql 调试输出到页面sql 在这里,我们使用插件或一个的方式来启动配置文件wordpress的debug 在插件文件夹 wordpress/wp-content/pl ...
- 初步STL集装箱Vector
vector 特点: 1.可变长的动态数组 2.使用时包括头文件 #include <vector> 3.支持随机訪问迭代器 • 依据下标随机訪问某个元素时间为常数 • 在尾部加入速度非常 ...