粉丝1338获赞2814

各位同学大家好,然后今天端午节,首先祝大家端午节快乐。 然后昨天群里面有一个同学问,就是他看到别人项目里面这种下拉组合框啊,带图标的这种,那么怎么来做?那今天老师呢,带同学们做这样一个很有意思也很实用的一个功能啊, 我们直接看一下最终实现的一个效果,那么这个是我们这个 combo box 啊,包括这个 list box 啊,列表框都是一样的这个我们这个制作方法。然后这节课呢,老师给同学们就做一下这个 combo box 怎么样来使用,对吧?那么这里面呢,就是我们这种带这种图标的艾特, 那么怎么样来绘制啊?然后我们就带同一个来做这样的一个功能啊, 创建一个项目, 然后就是带图标的 combo bob box, 那么我们同学哈拿来一个功能,我们想做一个功能的时候,提前的时候呢?我们呃在这里呢,同学注意一下,老师这里是怎么思考的,对吧?怎么思考的? 那么我们这个 combo box 下面啊,有很多这个 item, 对吧?假如说我们这个 把爱的一,爱的二,爱的三,那么这样的话呢,我们就有三个这个 it, 对吧? 啊?一、二三,那么呢这个是我们默认的 combo box, 它的这个,呃绘制的方式是以我们系统啊系统绘制的方式,那么我们这个 combo box c 啊 combo box 啊,它有这个 john model, 对吧?有这个 john model, 同学们看一下啊,这个属性什么意思呢?就是说只是我们这个控件啊,他的一个绘制方式是以系统默认的这种绘制方式,还是说以我们人人工 中的手动这个编程的绘制方式,看到没有?那么这种呢,我们选择这个 owner to fix, 这个就是我们这个手动绘制啊,我们手动编程来绘制,那么默认的话呢, 它是这种 normal, 就是由有由我操作系统来绘制,对吧?那么在这里呢,我们要做这种图片带文本的这种,那么呢有图片有文本,那么这种呢,我们就要需要我们手动绘制, 那我们选择这个 joe fix, 那么这个 joe fix 跟这个 joe variable, 这是什么意思呢?同学们看一下,一会呢就能看出我们的效果,这个呢是我们的宽度是固定的啊,相同的这个宽度和大小, 相同的宽度和高度啊,相同的大小,那么这个呢是大小不同的。那么最后呢,同学们 看有什么区别?我们选择这个,对吧?那我们手工来绘制,那么手工来绘制呢?我们这里面 it, 对吧?既有图片,对吧?那么又有我们这个 it 呢?既有图片又有文本,对吧?那么在这里呢,我们这边要干什么呢? 我们这边新创建一个类吧,是吧?新添加一个类,假如说这个类呢,就叫 my it, 那么我们封装一下这个类,然后把这个类的这个对象呢,然后作为 item 传递进我们这个 combo box 里面。那么首先呢,我们这边儿假如说有个 public, 有个有个 text, 对吧?然后呢我们这边呢?呃,有个构造函数,对吧? 构造函数呢?我们直接传递进去什么呢?传递进去我们一个支付串啊,这个是我们这个 text, 然后呢我有个 image out 加回车啊,传递进来一个图片类型, 对吧?因为我们带一个图片嘛,然后呢,我们在这个构造函数里呢, 我们看一下啊,嗯, 假如说在这里我们给他一个图片类型的一个属性, image i m g, 然后呢?我们这个 text 在这个构造函数里呢? text 等于 text, 然后 image 等于 image, 然后这样传递进来,这样的话 呢,嗯,就可以了,这类这样的就可以了。有一个,有两个属性,对吧?一个是文本属性,一个是我们的这个图片属性, 那我们在这里呢,我们就可以传递进来图像了,对吧?传递进来图像,那么假如说是我们这个 new 的 my item, 那么第一个呢?假如说我们要传递进来几个对象,对吧?呃, new white, 嗯,这样来写, 那么第一个参数呢?是我们这个文本,假如说这个文本我们要传递进来好多的对象,对吧?传递进来好多个对象,那么我们把,呃,之前那个例子他的这个图库直接给复制过来, 省的我们还得扫, 我们事先得准备好几个 item 的它的图片,对吧? 这下面呢,就是我们这个五个图片 复制到我们这个项目里来, 然后呢,我们第一个是什么呢?第一个是我们这个发电机组,对吧? 然后第二一个呢?呃,我们看一下第一个,呃,显示的文本是我们发电机组,然后第二个那个图像的路径,对吧? 图片的路径,那么 image, 我们这边 from fail 从文件,那么这里呢,就要选择我们这个根部路,对吧?选择我们这个根部路,那么就是 a p p abdication 点儿 start up pass, 然后加上一个什么呢?加上一个 我们这个 p n g 这个文件夹,然后发电机主 p n g, ok, 这样的话呢,就添加进来了一个这样的一个 it, 那么我们要添加五个,对吧?第二个是我们这个发动机, 发动机,第三个是我们的螺母,这些图片呢?同学们到我们这个阿里巴巴图库 啊,提前给它下载好就可以了。螺丝钉 污水泵站 水泵吧,这叫水泵啊, ok, 那么这几个 item 添加完了以后呢?呃,然后这个属性也设置好了,设置成我们手工绘制,然后呢?我们把这个宽度,对吧? 嗯,这个我们现在不用设置了吧,我们现在就是这样,一会我们再看一下,为什么要改一些其他的一些属性啊?这些东西我们给他删掉,那么同学们注意看啊,当老师把这个 combo box 一的 join model 啊,属性设置成了我们手工绘制了以后呢? 那么对象也添加进来了,对吧?这个时候呢?然后呢?我们现在运行先看一下啊,啊,这里报错了,这个水泵平局,他找不到了,我们这个可以叫水泵啊, 那么同学看啊,我现在这里面呢,是没有,他没有显示任何的 item, 对吧?没有显示任何的 item, 那为什么呢? 那为什么呢?因为我们现在光把这个对象给添加进来了,对吧?但是这个对象添加进来了以后,我们这个空间要把这个 item 怎么样进行一个绘制的一个处理,对吧?我们得怎么绘制啊? 啊?你是文本拿过来了,然后你的图片也拿过来了,但是我们是不是需要一个在一个事件里面进行一个绘制啊?来显示出来,对吧?那么同学们 注意一下,如只有当我这个 joy model 设置成了这个 owner joy fix, 对吧?手工绘制,这个时候我们在这个空间的这个事件里面, 它才能触发这个事件,我们这个叫 joy item, 对吧?每当需要绘制车镜像区域时发生,对吧?这个事件才会被触发,对吧?然后这个时候呢,我们可以先看一下 control 点 right line 一啊,我们看一下这个事件是不是触发了, 同学们看一下这个实验是不是出发了,对吧?打印输控制台,打印输出一一一了,对吧?那么这个时候呢,我们在这里来对我们这个空间进行具体的一个绘制,对吧?具体的绘制,那么怎么绘制呢?是不是得先绘制我们的 图片啊?然后再绘制我们的这个制服串,对吧?再绘制我们后面的这个制服串,那么同学们看一下啊,那么我们首先呢要干什么呢? my item, 对吧?我们这个对象 my item, combo box, 一点 items, 一点 index, 然后把这个强制转换成我们这个 my item, 对,我们这里是转换,就是把我们当前这个 item, 然后这一个这个,把当前这个 item 转换成我们这个 my item, 然后呢把 my item, 然后把 image 创建一个变量,里面一句等于什么呢?等于我们这个对象的 go, 对吧?等于我们这个对象呢? amy, 没错吧?有对象这个 image。 然后呢,我们这个时候呢,来绘制 绘制我们这个绘制区域图像,先绘制我们这个图片,那么它是一个正方形,对吧? 那么他的一个顶点坐标是什么呢?我们这边就给个五吧, 然后重坐标呢,就是我们这个我们整个这个区域的 item 区域的这个重坐标,对吧?然后呢?嗯,给他再加上加上一个二吧, 然后呢?我们的这个宽度,然后是四十五,高度也是四十五这样的一个正方形的一个矩形,对吧?这个一点 bond, 一点 bond, 这个就是我们这个呃 item, 这个 item 这个对象的他的这个呃 矩形,然后我们这个矩形,它的这个 y 就是我们这个重坐标,对吧?然后呢我们再绘制什么呢?然后我们通过 一点 fix the joy image, 同学们看一下这个呢?我们绘制我们这个图像,绘制哪个图像呢?第一个参数呢?就是我们的这个 啊,这个 item 的它的这个图像啊,获取到了我们这个对象里面的这个 item 属性,把这个对象传递过来。那么绘制的区域是什么区域呢?就是我们刚才定义的这个区域,对吧?这个区域呢?比我们 item 这个区域呢略微小一点, 对吧?他的重坐标呢?是我们的这个一点 boss 的 y 加上二就往内部进行缩近了一点五呢?横坐标往里面进行缩进了五个五个像素,对吧?五个像素。那么这个时候呢, 我们就绘制完了我们这个图像,那么在绘制我们的文本,是吧?在绘制我们的文本, 那么绘制文本的时候呢,我们同样啊要定一个区, text 等于六一个,那么这个我们这个文本的区应该等于什么呢?它是不是应该等于我们刚才图像的那个区域的后面,对吧? 应该等于我们的 image react, 然后应该是我们什么呢?应该是我们那个点 right, 对吧?那这个点 right 呢?就是获取到了我们刚才图像的这最右边的这个 x 坐标,然后加上二,然后加上二,然后呢? hmm why? 众筹票跟他 一样就可以了。然后呢,我们宽度呢? 一点 bones, 一点 wise, 等于我们整个这个 item 的宽度减去我们 image, 减去我们图像的这个宽度,然后呢,我们的高度等于什么呢? 等于我们这个 item 的高度减去二,整个往内部经缩进了一点,那么这个,这个就是我绘制文本的这么一个 区域,对吧?绘制文本这么一个区域,那文本的内容应该等于什么呢? 应该等于我们看 or boxing their items, their items, 一点 index 啊,当前 item 的缩影传递进来,那 to string, 咳咳咳, 让我们看一下啊, 嗯,这是我们当前这个文本 item, 然后点儿图词句。那么同学们注意一下啊,在这里面呢,我们对这个 combo box 里面这个 item, 对吧?对,我们当前这个 item 对象,那么它它的类型呢?是 my item, 对吧?对,当 目前的这个 my it, 我们进行 to swing 这个方法,对吧?我们要获取到我们这个螺丝钉啊,螺母啊,获取到这个文本,对吧?那么我们必须得把 to swing, 对吧?进行干什么呢?进行一个复写,对吧?在这里我们要进行一个复写, override string, 这应该 return 什么呢?应该 return tax, 应该 written text。 然后这个时候我们再来看一眼,这个时候 to string 呢,就应该返回我们这个螺丝钉了,在这里注意一下这个细节啊。 然后呢,我们开始绘制我们文本,一点 geographies, 绘制我们的图像, 绘制我们的文本,绘制我们的文本,那么呢,第一个是文本内容是什么呢?是我们的 item text, item text, 然后呢第二个是我们这个字体 new points, new friend, 我们给他假如说给他一个微软雅黑,然后呢大小呢?十二, 然后呢笔刷的颜色, brushes, dark black, 这里面我可以其他的颜色可以 yellow, 嗯, text 我们的区域,对吧?然后我们这个格式,呃,我们这个文本还有一个格式,对吧?最后是一个格式,那我们这个 string format, string format a new screen format, 然后 screen format 这儿 alignment 等于给它居中对齐,然后这个时候呢我们再把这个传递起来, 好,这样的话呢,我们这个文本就绘制完了,对吧?文本绘制完了,然后这个呢是我们这个居中居中显示啊, 对吧?传递进来了我们的字体文本内容,字体笔刷颜色,然后呢绘制区域,还有我们的文本格式,这样的话都给他定义完了, 然后这样的话呢,我们看看可不可以,可不可以?同学们看一下啊?现在呢他是不是已经有了,对吧?是不是已经有了?但是我们现在看见这个效果非常不好, 对吧?为什么不好?首先第一点我们这个每个 item 它太密集了,对吧?我们得给它打开一点,那么就是说在我们的这里面就是刚才老师说过的这个坑 点 items, 点 voice, 呃, items, 呃,这里面应该是我们这个 it 点 item height, item height, 假如这里面给他五十,对吧?压的太紧了, 然后呢把它打开一点,这个等于二百,这时候我们来看一下效果,我们一步一步的根据我们这个显示的出来的效果来做我们的功能,对吧?那么这时候呢?同学们看,对吧?现在是有了,嗯,你看我单击哪个的话,他这个文本呢,也能选择过来了,对吧?也能选 过来了,单击哪个他就选择过来哪个, 嗯,这都没有问题,对吧?绘制版本去尾 at, 去尾 string 没有问题。那么在这个时候呢,图片注意看我这个下拉,这里面呢?没有背景颜色,对吧?选中哪个了,他看不出来,对吧? 那么我们必须得把当前选中的,对吧?这个背景颜色首先在前面也得给他绘制出来,对吧?那这个时候怎么办呢?那么就说如果我当前选中,选中哪项,把哪项的背景颜色给改变,如果没有选中,他背景颜色就是白色,对吧?那么就是 e 和 else, 对吧?我们这个 if, if 怎么怎么样? else 怎么怎么样啊?那么 我们先写 als, 对吧? als 呢?如果没有选中,那么它的背景颜色就应该是我们的这个白色,呃, new solid rush color, the white, 对吧?就这么一句代码,那如果没有选中,那么上面如果选中,如果选中某个 item 怎么来写,对吧?如果选中某个 item, 那么我们这里面有个下了 item 的 这个事件,那么通过这个 e their state 代表我们现在选中的当前 item 是否被选中, 那么它呢?啊,必须得什么呢? your item, states that are selected 啊,必须得实时判断我们当前选中的这个项是不是该项, 是不是该想如果他俩都满足,他俩余都满足,都为一的时候,这如果他俩都为一的时候, 这样来写,然后呢?这样的话呢?判断我们当前选中项,是吧?这种方法呢?同学们,这个是非常常见的,在我们这个 list box 和 combo box 里面,判断我们当前选中项是不是该项的时候啊?这个时候经常要用到啊, 那么呢,我们这个时候如果说鼠标选中在这个项上啊,注释写一下,鼠标选中该项, 然后呢就把该项的,我们就要绘制我们的背景社,对吧?背景社,那么呢背景社呢?我们这边呢?假如说 e 点, 对吧?画我们的这个区,那么画我们这个区呢?两个参数,第一个是我们这个笔的颜色,对吧?笔的颜色,假如说我们这边给他一个 pad new color from rgb 假如说我们这里面给他一个呃二二九幺九五幺零幺。 然后呢这是我们这个笔的颜色这个钢笔,然后呢第二个呢是我们这个区域,对吧?这个区域应该等于什么呢?对吧?这个区域应该等于什么呢?我们不能一点 bounce, 一点 bounce 太大了,是我们整个 item 的区域,那么 在这里面呢,我们给它一个这个 talk um, 嗯,我们这边就 few, 嗯,我们在这里我们先给他画一个边框,再给他填充,对吧?这个去背景,我们这边有填充颜色,然后也有画的这个边框。我们假如说选用连两种颜色,对吧? 那么我们先把这个区域给找到,区域是什么呢?区域假说,我们这个是一个山吧,一点 boys, 然后一点 boys 点 y 啊,那么这个是我们的这个, 呃,我们这个 item 的纵坐表,然后三呢是向内部缩进三个像素,然后我的宽度呢?一点 bond 点 voice, 对吧?然后也稍微往里边呢缩近一点点, 高度呢,也往里面缩进一点点,那么这个就是我要绘制整个这个 item 的区域,对吧?这个区域,那么我们这边 joy 呢?我们就把这个填进来,对吧? 我们在这边呢就是绘制了我们整个的这个,呃,绘制这个矩形啊,通过这个颜色来绘制我们这个矩形,那么呢这时候我们看一下效果啊图片,看一下我现在选到哪个 item 呢?它这个 艾特外面就有一个边框了,对吧?但是没有背景颜色,对吧?背景颜色,没有背景颜色我们怎么画呢?背景颜色我们的一点是我们 face 点 feel, 是吧? feel return。 然后呢我们这边笔刷呢,我们还得给他一个刷子, 这个刷子呢,我们给他一个,嗯,两个参数,第二个参数是我们这个区域啊,那么第一个参数呢?是我们这个刷子,假如说我们这个是一个呃 new, 一个假如说我们给他一个渐变色,对吧?给他一个渐变色, 那么呢?呃一点 boss 区, 然后呢他有我们用其中这个构造函数,第一个是我们这个整个 item 的区域,然后第二个呢是我们这个颜色从哪到哪渐变,对吧?从哪到哪渐变?假如说我们这个是 color, 然后最后呢我们给他一个这个 界面的方向,对吧?这是界面的方向,那么同学们看一下,我们这个这段代码就写完了,那么呢我们要填充这个矩形,对吧?填充矩形的区域呢, 是我们这个之前定义的这个区域,对吧?比我们整个 item 区略微相对缩小了一点,然后呢笔刷呢,就是我们定义了一个线性的一个笔刷,线性的这个笔刷,渐变的一个笔刷,然后这个渐变的笔刷呢?他 内部啊,它的区域呢?是我们这个整个 item 的区域,然后呢颜色呢?是从这两个颜色啊,一个垂直的一个渐变,然后这个时候我们来看一下效果, 对吧?那么这个时候呢,我们就能看出来这个,但是这个颜色, 这个颜色看起来好像不太那个,我们看一下啊,绘制这个文本,这个我们还是用 black, 要不看的不太清楚。然后同学我们写完了, 我们看一下运行,看下效果啊,这时候呢,背景也是有了,对吧?单击一个呢,然后他就上去了,对吧? 这就把这个文本啊添进去了,但这时候呢,我们看还有一些问题,对吧?什么问题呢?首先我们这个文本呢,他好像没有没有对齐,对吧?没有对齐,我们先把这个文本对齐, 那就说明我刚才绘制文本的时候,对吧?绘制的这个重桌标,我们稍微给它修改一下, 这时候好像还差一点, ok, ok, 现在呢?就对中了,对,中了以后,我们选中了某个 item 以后呢,他只是把这个文本上来了,对吧?并没有 把前面图标上来,那么这个时候为什么呢?因为我们在这个在前面的时候, combo box 一点,呃, 交不当 style, 交不当 list 啊?下拉列表,然后,哦,这个地方我们要注意一下啊,因为这个时候你变成下拉列表以后呢,我们把当前的这个 当前所有人改为零,这样他就不会报错了。同学们看一下,这样的话呢,我选中了哪个? at 们以后呢?连图标带文本,这样就都上来了,对吧?就都上来了, 好吧,那这个呢,就是老师解说给同学们 讲的这个讲的这个内容,然后同学们下去以后呢?啊,这是 combo box 啊, list box 也是一样的,同学们下去以后呢,可以啊,举一反三,然后把这个整个,这个,我们这个 对空件啊,这种自定义的这种绘制啊,好好熟练一下。也是,如果想让整个空件界面风格变得更美观,同学们一定要掌握这种方法。好吧, 那么在这里呢要注意一下我们这个呃, joy model 把这个首先要一定要改成这种方式。好,那这节课呢就讲到这,同学有任何问题呢,可以加郭老师微信进入学员群, 然后呃,系统呢?学习我们 c 叉上位机。好,谢谢大家。

大家好,我是枫叶,有这么一个需求,就是 a 列中存放有一些关于地区名称的数据,这些数据都是由省份加地区名称组合而成。现在我的需求就是要将这些数据存放到 这个窗体的复选框当中,当我启动这个窗体的时候, 点击这个小按钮,下面就会罗列出这些数据作为这个复选框,也就是 combo box 的选项,让我做选择,从而提高了我手工录入的效率。 其实把数据装入 combo box 很容易实现,你看我怎么写的啊?我希望 当这个窗体加载的同时,我就把这些数据装入到这个 combo box 当中, 所以我双击这个窗体,选择一个,在这里选择一个加载事件, 这个可立刻事件,我们把它删除。首先我在这里定义一个 a r r 来存放刚才的数据,就是这些数据好, a r r 等于任景, a 二应该是 a 二到 a 三十四。 好,这样我就把这些数据都装入到这个数组当中,下一步我只需要把这个数组装入到 combo box 当中就可以了,一点 六十等于 a r。 好了,写完了,我们来看一看。当我启动这个窗体的时候,点击这个下拉按钮,所有的数据都进来了,都进来了,那么这样我就可以做选择了,就可以做选择了,但是你会发现 我要做一个选择还要找很久,因为这个选项太多,于是就有了更进一步的需求,就是你比如说我要输入, 我只知道输入,我要输入的是呼和浩特,那当我录一个呼的时候啊,我还不知道这个呼和浩特他是哪个省份的啊,我只记得是呼和浩特是吧?当我输入一个呼的时候,那么你 就把这些选项带有忽字的都把它罗列出来,不带有忽字的都筛选掉,那就减少了选项,这样我就好找了。 是的,那这个又应该如何实现呢?其实也不难,有了刚才的基础,我们就再稍作 修改就行了,这些我就不要了,因为我接下来要做的并不是在窗体的加载事件了,而是在这个 combo box 的劝解事件,我双击它以后,自动就会跳入到这个 combo box 的劝解事件,也就是当这个 控件,这个 combo box 控件,当它变化的时候就触动我的这个世界。那什么时候是变化呢? 我们在录入数据的时候,每录入一个数字,他都会变化一次,是吧?好,首先跟刚才一样,我也要定一个 a r r 数组来存放数据, a r 到 a 三十四,然后再定义一个变量 a r 来便利这个数组。 for each a r in a r 好,便利,接着我再来定义一个什么呢?啊,我先不定义这个,我要判断便利出来的这个 a r 第一次出来的肯定是首都北京,第二个是浙江义乌,是吧? 那么我就把这些,当我录入数据的时候,我就把我录入的内容来在这个选项当中来查找,如果它含有这个字,那么我就把它装入另外一个数组, 如果不含有这个字,我就把它忽略掉,不要它,是不是?所以我要。那我们怎么获取这个 combo box 的内容呢? temple box, 一点 test 就可以获取到我们在这个复选框空间里面输入的内容来判断它。 if 用一个函数 in 啊, i n s t r 在哪里找呢?在这个我们便利出来的这个字符串来查找,查找我们录入的内容, 如果他存在,他带有这个内容,那么他就会返回一个数字,那么这个时候 证明他就是带有我们需要的这个这个选项,所以这个时候我就定义另外一个数组,这个时候我定义的是动态数组和一个整形, 然后我重新定义旅定,我希望保存它的原来的值, b r n, 然后呢? b r n 就等于这个 a r 等于我们的这个选项,然后做完以后别忘了这个 n 还要累加 n 等于 n 加一,这样我们就能够成功的把那些我们多 多余的选项给去除掉了,那最后得到这个 b r r 这个数组,我们把它装进这个 combo box, 一点 list 等于 b r r。 好,完成,完成,我们来试一试。注意啊,当你启动这个窗体,你在录入数据的时候,他会发生,他会发生错误,为什么呢?因为我们我们说了,当他发生变化的时候,就触动了我们刚才的那一串代码, 那当我们在敲键盘的时候,他其实就已经发生变化了,而此时他并没有任何内容,那他就带着这个没有任何内容去查找,去执行了,那那串代码。好,我们回到那个那个代码啊,就执行这串代码后 便发现根本什么都没有,是吧?因为他根本就不符合条件,你拿一个任何没有任何东西的一个制服串来找他,肯定是没有找到,那没有找到,最后是一个空,这个数组是空,那么你把一个空数组交给付给他,那是,所以他就会报错了, 因此啊,我们还是再来演示一遍啊。好,现在我开始敲键盘,他立马报错,是吧?啊?就报错了, 所以呢,我们在在最开始的时候就给他一个容错语句,就是 on l l s u next, 就是这句话,就是当他遇到错误的时候继续 执行。好,这回我们再来看,我们任意输入,他都没有问题了,都不会报错了,都不会报错了啊,都不会报错了。那我们输入一个呼字,呼, 当我输入完这个呼的时候,这个事件其实已经启动了,已经是触动了,他已经实行了一遍那个代码了,是吧?那么他就在这个选项当中查找带有呼字的,比如说这个带有呼字的,他就把它罗列到这边来,那整个选项他只有一个选项,带有呼字的,是不是? 你看是不是很方便?那就非常的高效了。好,现在如果我要查找广字, 好,广字,当我说一个广字以后呢,他就会把广东的,广西的所有选项都罗列出来了, 都有在里面呢。那如果你只需要广东的,你再输一个东,好,那么后面他就把这个西字广西的选项都排除掉了,剩下的就只是广东的了, 是吧?因为他在广西的那个选项呢,找不到广东这个这个字了,他只有广,但是现在我找我找的是广东,因此广西他是不符合的。 好,比如说你要录入一个海,海南,是吧?当你输入一个海字,他就把海南的所有的选项列出来了,就连这个广东、珠海,他带有海字的,他都罗列进来了啊,都罗列出来了 啊,当你把再输入一个很难字的时候呢?那么刚才那个广东什么青海啊?啊?什么珠海,是吧?那个珠海,那那个选项 他就他就筛选出去了,你看是不是?你看是不是已经没有了那个广珠海了,是吧? 那是不是很方便呢?好,我们再来看一看我们的这个代码,其实也代码并不多,也并不难,是不是?好,那么今天这个视频我们就分享到这,再见。

呃,各位同学大家好,我是龚宏光老师。呃,今天呢给同学们讲一个小小技巧,就是我们这个呃 combo box 啊,这个下拉列表框,那么它呢有一个这个自动搜索的一个功能,怎么来做?我们先看一下最终这个效果啊, 那么的话呢,我们这里面现在是空的对吧?呃,如果说我们搜索对吧,我们键盘上输入 a, 它自动的就把 a 相关的给打出来,然后输入 b 啊,就把 b 相关的,然后呢,你看我们 b 对吧,自动有搜索功能,如果我们输入零一啊,自动把这个包括零一的都给搜去,搜索到了对吧,零一二。然后呢,我们如果说这里面有个中文,我输入你好对吧,输入你好,他也会出来。 那么如果说我们这里面输入小写的 a 对吧,他也是能出来的对吧,小写的 b。 那么我们经常在做上一集的时候呢,对数据库呢,有的时候需要进行一些查询筛选,然后会经常用到这个下拉列表框,包括我们做这个, 呃,对我们这个服务器啊,创口号啊,播特率啊等等等等啊,进行我们这个通讯的时候,要经常用到这个下载列表框。那么当我们操作人员不知道啊,这里面具体有哪些内容的时候呢,我们 只要输入特定的字符,就能把跟那个字符相关的内容全都搜索到。那么具体怎么来做这个课呢?老师带同学们做这样的一个项目对吧?就这样的一个例子,然后我们新创建一个程序对吧?还是新创建一个 combo box, 然后那个下拉 带搜索功能的下拉菜单, 然后首先呢我们放一个这个 combo box 过来,这里面也有很多细节啊,然后老师在同学做的时候呢,同学就可以举一反三看老师遇到问题的时候怎么来处理的对吧? 那么这是一个 combo box, 那么我们要在这里面啊,默认情况下这里面是我们这个是交不到啊,我们这个类型是交不到,就这里面可以输入一些文本对吧?可以输入一些文本, 那么我们要在什么呢?输入文本改变的时候,我们进行筛选功能对吧?那么我们一定要写在这个什么呀?这里面有个 text update 对吧?左框文本更改时发生好,我们写在这里面双击一下。那么在这里面呢,我们要写什么样的一个功能呢,对吧? 首先我们要把我们当前这个主额框给获取到对吧?那我们就 combo box, 然后呢,我们这个 c b 等于 center as combo box, 把我们当前这个 combo box 对象给获取到。那呢我们首先呢要把我们这个 c b 里面的 items 点 clear since 全部给他清空对吧?然后当我们在这里输入文本的时候呢,文本改变的时候呢,来对我们这个 c b 重新这个 items 进行我们增加进行复制对吧? 那么显示哪些 items? 那么的话呢?我们默认,首先我们得有一个什么呀? 我们首先得有个默认的一个列表对吧?默认的这个列表我们在这里面进行一个筛选,假设说我们这边默认列表,我们给他一个假如说我们这边是呃 a 零零一对吧?我默认给他复制一些内容, a 零零二, a 零零三,然后我们是 b 零零一, 然后是 b 零一二,然后假设我们是 b 零三一,然后我们再给他来一个 c 零二二 c 零一二, c 等于三,然后这里给它来个你好, 这是我默认的一个支付串。那么呢,当我们文本改变的时候呢?同学们要注意这个思路。文本改变的时候呢,我们要对我们这个输入的这个在文在这个 combo box 里面输入文本的时候呢,我们要判断我们这个 这些字,这个我们这个历史的数组里面包不包括我们当前输入这个文本对吧?如果包括的话,就把当前这个内容给添加进来,如果不包括呢,我就不添加对吧?那么我们就得用什么呀?用我们这个 for e 去。 我们判断什么呢?在我们的这个 list 啊,在这个 list 里面,我们 item in list 呃, if item 对吧?假如我搜索到这个 a 零零一,包括包括零一对吧?点 contents 包括我们零一,零一就是我们 detects 对吧?我输了这个文本,如果它包括 呃,我们要往哪个里面 i 的呢?是不是要往一个新的一个速度里面,那么这里要新创建一个对吧?新创建一个,这应该是一个 new list, new list 它应该等于一个 new 的一个 list。 spring 把这个添加进来,然后呢,如果包括,我们就添加,包括 我就添加。然后最后呢,我们判断一下对吧? if new list 点 count 如果说它大于一,证明我们搜索到了,对吧?如果大于一,我们搜索到了, 搜索到了,我们就干什么呢?我们就这边就劝一下, 如果有异常,我们抛出个异常,如果说我们搜索到了,那么呢就要干什么呢?把我们这个 c, b 就是我们的 combo box, 点 items, 点整个就 add arrange, 把我 我们整个这个新的数组给它添加进去,添加进去,添加进去以后我们看一下可不可以啊。我们在这里面输入 a, 同学们看他默认没有弹出来对吧?那么说明我们这里面有个属性 c, b 呢,默认的话你得让那个下拉列表给让他打开,交不到 交不当 d r, o, p 交不当。它这个属性呢,等于 true 等于 true。 我们输入一个 c, 同学看一下,现在就有了对吧?输入 c, 它是有的,那我们输入小写的 c 呢,它就搜索不到了,对吧?那怎么办呢?就是我们操作人员有的时候输入大写, 比如说输入小写对吧,那么你他也不知道该输入大写,输入小写,那么我们这个记录里面都是大写对吧?都是大写,那么我们就把你输入的这个文本,不管你是大写和小写,我们全给你转换成大写, 这样就可以了。我们这个时候再看一下啊,我数小写的 c, 它也能把我们这个包括这个小写 c 的字母串儿的对吧? 他都给你搜索,搜索出来 b 对吧,都可以,那当然了,大写也可以。那么同学注意看一下啊,我现在输入呢,假如我想输入 b 零一对吧,那么他的光标呢?我们看这是报错了啊,我一会看一下,为什么 我们再运行一下啊。就这里面有很多小细节,你看我输入一个 b 对吧, b 它光标自动,它应该再往后去移对吧? 它现在是往前移了对吧?那么说明什么呢?它这个 combo box 我们默认的,必须得把这个光标啊,得给它往后挪一下。那么得把我们这个 c b 点儿每次输入完文本呢?得把我们这个 selection, selection start 应该等于我们 c b 点 tax 点 lens 对吧?这个是什么呢?就是我们这个 combo box 它的一个呃,选定文本的起始,所以对吧?选定文本的起始,所以我们看 现在我们如果再输入文本 c b, 我们看一下它这里边为什么总报错啊,为什么总报错?因为这个它提示这个锁眼无效啊。因为什么呢?因为我 我们当前如果说同学注意看啊,我现在输入这个 c 对吧? c 如果说我现在没有搜,搜索到对吧,没有搜索到我这个新的速度 ctrl, 如果是小于一的话,我现在往旁边单击一下,他就报这个错误了。那是因为什么呢?因为我们单击的时候,同学注意看,在这个位置大于一的时候,然后在这里 set up, 如果说小于一的时候, 我们这里必须得写一些代码,如果小于一的时候呢?我们 c b 点 items 对吧?默认的话一定要给它加上一个空的, 这样它就不会报错了。然后让我这个 c b 呢,点 select start, 等于 c b 点 x, 点 less, 这个时候我们来看一下,就没有搜索到的时候,假如说我们先输入个 y, 没有搜索到,现在点他也不会报错了,对吧?因为默认我添加了一个空的一个字母串,对吧?如果你默认不添加空的字母串呢,他就会他就刚才那个异常,我们现在给他,哎啊,这样都没有问题。然后输 c, c 同学看现在光标呢,自动就往后移了,对吧?光标自动往后移了,没有问题。零零他也能搜索的到好吧,我输入小写的 c 呢,他也能搜索到,大写也是可以的。 然后现在呢,是不是看似就没有什么太大问题了?看似没有什么太大问题了呢?同学们还要注意一下。我们再看一下。我输入 c, 特别看,我现在看不到鼠标了,对吧?鼠标是不是没有了,对吧?那这个时候呢,我们还得在这里面再加一个,得让我们什么呢?得让我们这个 c b 点, 呃,不是 c b 了,就是我们这个 caution, 我们这个鼠标 对吧?让我们这个鼠标呢,呃,位于我们空间上上时候呢,显示的光标呢,是我们这个默认值啊,这样得设置一次。这样的话,我们输入 c, 你们看现在这个光标呢,他就还在,对吧?光标还在。然后 这样的话呢,就没有什么问题了。 a 对吧,这样的话呢,我们可以就是操作人员呢,只要输入我们跟我查询相关的这个支付串,只要有,只要包括我们输入的这个文本,他就自动能 把我们这个所有相关的都给显示出来,这个是比较实用的一个功能。然后同学们有问的老师就把这个内容呢,给同学们稍微稍微讲一下,也比较简单。同学们下去以后稍微练习一下啊。稍微练习一下。 嗯,说你好好,没有问题。那同学们下去以后呢,练习一下。有任何问题呢,可以加郭老师这个微信。然后呢,进我们学员群。 呃,来系统的学习。我们 c 叉五收音机。然后呢,最近呢也是有活动,然后希望同学们呢能持续关注龚坤郭老师,然后我们把这个编程呢,嗯,能学的很扎实,应用在我们实际工作当中。好,谢谢大家。

大家好,我是柯南一梦,今天我们继续来说一个空间啊,我们看这个插入这里,这里我们可以插入一个组合框,我们来试一下这个组合框它是什么意思呢?我们把设计模式关掉,我们点这里,我们就可以看到底下是有一个下拉菜单的,其实它就是一个下拉菜单的功能, 但是我们这里现在是什么都没有,我们怎么给他添加相拉菜单呢?这个设计模式我们把它打开右键,我们可以看一下他的属性, 它的属性这里呢最重要的一个属性是什么?是 next fire range, 就是它的下拉菜单里面有哪些,我们可以通过这个属性来设置, 比如说我想让他的这个菜单里面有这些人的名字,比如说从 b 二一直到 b 十五,我们就可以在这里输入 b 二到 b 十五, 好,然后我们按回车,这样呢他的下拉菜单就会显示这样的一个范围的列表,我们来看啊,把设计模式给关掉, 看下拉菜单里面我们就可以去选择这些人,那么我们这里面选择的怎么作为一个参数去传递这个参数呢?我们还是看这个的属性和之前的是一样,比如说我现在选择的是李云龙,那么他传递的这个参数就是 text, text 或者是这个 value, 传递的这个值都是李云龙啊,也就是说我们要引用这里面的这个参数的时候,我们就可以用它的名字 combo box, 一点这个 text 或者是 value, 就可以去引用这里面的值。另外呢这里还有一个参数是 next rose, 这里他默认设置是八,我们把它设置成别的,看看 是什么意思。比如说我们把它设置成四,设置成四之后我们看一下他的加拉赛,单看他只会显示四个,我们需要拖动旁边的这个滚动条,他才可以显示别的。所以呢 next rose 是可以设置他显示的列表书。 还有一个参数呢,就是 link the ser, link the ser 呢?我们比如说我们把它设置成,设置成我们能看到的 h e, 我们把它设置成 h e, 设置成 h e 了之后,比如说我们选择这个张三丰,好,我们选中了一个值,这个框里面的值就会直接复制到这个 h e 这里, 也就是说它可以实现一个复合框和单元格的一个映射,看直接就对应进去了, 他会直接把它复制进去,这是组合框的一些属性。同时呢他也可以设置一些代码,我们查看代码这里也可以给他一些代码。比如说我们让他 他有一个千纸事件,我们可以把这个千纸事件改成,他一改变就输出他刚才选的东西,所以我们可以让他去输出 combal box 一点 text。 好。我们设置了这个事件之后,我们可以看一下他的事件他是怎么出发的。比如说我把它改变了, 把它改成张三,他瞬间他就弹出了这个事件,触发这个事件了,我一改编他就会触发这个事件。这个呢是组合框的一个使用。


如果我是想要足球呢,我可以这样写啊,足球包括这个桌球,他的这个拼音首字母呢,也是这样的,如果我再加,比如说足球鞋,我加个 x 啊,他就只有这个足球鞋了。 大家好,我是老吴,欢迎观看 excl vba 入门开窍课程。这节课我们来讲一个关于窗体的模糊查询,首先我们来演示一下这个效果,我们来看一下这个复合框的下达菜单 啊,一共有这么多,好,你可以进行一个拼音首字母的模糊筛选,比如说我想找关于球类的,那我就输个 q, 就所有的球类都会有。 好,如果我是想要足球呢,我可以这样写啊,足球包括这个桌球,他的这个拼音首字母呢,也是这样的,如果我再加,比如说足球鞋,我加个 x 啊,他就只有这个足球鞋了,那我 就可以去选择这个足球鞋啊,这就是一个模糊查询,也可以输入中文,比如说我想找关于鞋子的, 好,他就会出来这个足球鞋和篮球鞋这些其他这个查询的这个东西我没有做啊,我们这节课主要是来讲模糊查询,我们来看下代码, 好,我们来做一个断点,好,然后来运行窗。挺好,比如说我现在呢只输一个 z, 好,然后就来到这里来了,好,首先是一个字典的后期绑定哈,我们要使用到字典, 然后呢把表一的 a 一单元格动态的定位,他的大小,就是把 a 一到 a 十四这个区域的内容呢,把它写入到数组里面去, 好,斜录完之后呢,我们就会得到一个速度,那这样速度 好,接下来呢,我们就重新定一个数组,这个数组呢取决于这个 a r 的大小啊,他是一兔又棒的 a r, 然后接下来我们进入一个循环,那这个循环就是循环 a r 数组好,然后每一次循环的时候呢,首先这里 啊,这个 spy, 这是什么啊?这就是我自己做的一个自定义函数啊,就是手拼音输入进去的值,就是这个足球啊,把足球输进去 好,就会来到这个模块里面,自定义函数呢,写在这个地方,这个函数呢我们在之前的课程讲过啊,如果不熟悉的话呢,可以去第五章节自定义函数里面有这一节课啊,他的作用 用就是把汉字呢转化成这个拼音首字母啊,这一块呢,我就不在这里讲啊,如果不熟悉的话呢,可以去翻看第五章节进行学习。 好,这两个函数配合之后呢,就会形成一个啊,这个首字母,这个足球呢就变成了这个 jq, 然后放进了这个 br 里面, 好,就是这样的一个状态啊, jq 好,然后中间呢,我放了一个隔开的符号啊,这个符号它本身是没有什么意义的啊,为什么是这么奇怪的一个符号呢?你也可以用这个斜杠啊,但是我是怕,比如说你本身的这个数据, 比如说这个足球,比如说一个斜杠,比如说型号 a 啊,他本身这个数据里面就有这个斜杠,如果我再用斜杠的话呢,可能会导致错误,所以呢,我就 干脆用一个啊特别奇怪的符号,这样不会跟原数据产生冲突,因为我们后面呢要使用到史布力函数呢,把它进行一个拆分,接下来我们再把足球呢放进字典里面去,后面我们要使用到这个字典。 ok, 好,接下来又是第二个把它转化成这个拼音的首字母啊,然后再连接这个他之前的这个汉字, 然后再放进这个。 br 速度啊,他就得到了这个 hb 滑板。好,我们在这边做一个断点,让他全部形成一下,你看 啊,他就全部形成了这种。好,接下来我们使用到这个 fute 函数,这个函数呢就是数组的模糊查询,这个在我们第二章节这样 数组的时候呢,也讲过。好,他的第一个参数呢,就是你要查询的这个数组还是。 br 注意了,他这个数字呢,只支持一位数组,也就是这个样子的啊,他不能支持这个一斗一啊,二斗一,他不能这样。好,你要查询的值就是 comber box 输进来的这个值啊,就是这个 z 啊,后面这两个参数的目的是什么呢?就是不区分大小写的意思啊,比如说你输小 g 啊,也是可以的,大 g 也是可以,如果你把这两个参数去掉呢,那你必须输 大写的这个手拼音才可以。好,然后把模糊查询到的这些纸呢,就是包含这个 z 的,一起给到 cr, 好,就给过来了。来看,这个 cr 好,就是代表这个 z 啊,足球啊,足球鞋还有桌球感啊,都把它写进来了。 好,接下来呢,我们再重新定一个数字,叫 e r 的数字,它的维度也取决于这个 cr 啊,是从零开始,然后吐 cr, 因为 cr 也是从零开始的啊, 所以维度呢,就是零到二。好,接下来再循环 cr, 因为我们现在这个状态呢,肯定是不能直接给到这个康波 box 的下拉菜单里面,因为我们看下拉菜单呢,我们还是要看这个汉字本身,而不是现在这个状态, 所以还要进行一次拆分,所以为什么要循环这个 cr, 我们每次循环 cr 同时呢通过这个 sva 的函数呢,对他进行一个拆分 啊,现在拆分的是这个足球,拆分的分割符呢,就是以这个分割符来作为拆分啊,拆分完之后给到 c, 好,现在 c 就变成这个了啊, zq, 然后足球,我们不需要这个 jq 啊,我们只需要足球,所以呢我是 c, 然后一啊来取这个足球,把这个足球呢给到我们刚刚新建的这个数字一二二里面啊,给进来, 好,一二就是这个足球了,然后循环三次啊,足球鞋,足球杆啊,都写进来了。好,写进来之后进行一个判断啊,就是现在这个复合框里面输入进来的这个字,这个 z 在字典里面有没有啊?字典就是 这些东西啊,有没有,如果没有的话才进行如下操作啊,我前面写了个 note, 就是双重否定啊,等于肯定,比如说这里没有,这里是返回 pos 啊,但是我前面加个 note 就是没有才运行,有不运行 等一下再来解释为什么要这样做。好,现在这个 z 有没有,没有,这里返回了 faws, 前面是 note, 所以呢整体是 q 啊,整体返回了 q, 然后运行下面的话,首先把 ctrlbox 这个复合框的下拉菜单先清空, 因为我们下了菜单呢,你看下面有一个窗体的加载事件,你每次打开窗体的时候呢,他就会把所有的这个菜单呢一起给到这个康复 boys 里面去 啊,所以我们现在输入这之后呢,只有三个选项可以让我们来选,所以我们先要对 ctrl box 下了菜单进行清空,然后再把筛选出来的这个 e r r, 也就是这个地方, 那这三个给到复合框的下拉菜单里面。好,接下来呢,这一步就是 是将下拉菜单进行一个展示,而不是我输入完之后呢,还要通过手去点这个下拉菜单才会列出来啊,我让他自动的展示出来来看一下, 你看我现在运行完之后,哎,他自己就弹出来了啊,就是这个动作, ok, 然后这个过程就结束了。好,这个时候呢,我比如说我现在在选这个足球鞋啊,我选进来,哎, 他这个又出发了,这个劝句时间啊,我们再来过一下啊,这个防措,我们先讲一下这个防措的目的啊,这个防措一定要写啊,如果你不写的话,这个是没法用的,为什么呢? 因为你可能输入进来的纸呢,是这里面不包含的,比如说你随便输入一个新号啊,或者说一个空格,他根本就没有,没有的话你运行下面代码 会爆错。好,然后又进行如下的操作啊,把它全部竖进来 啊,因为你刚刚选择的是足球,就是非常精确了啊,因为只有一个满足他,所以呢,这个时候 这句话就起到了关键的作用了,如果不写这句话,当你去选择足球鞋的时候,他会把这个足球鞋清空掉啊,因为他又会运行下面的话,这句话其实在你选择你已经筛选出来的这个 下来才谈,比如说你开始输入 g, 那出来三个选项,你输入足球鞋,其实这个时候呢,你就不是在需要模糊查询了,而是我就是要查询 这个足球鞋了啊,就把足球鞋选进来了,这个时候不需要再去清空这个,因为这个东西不但是清空下来菜单,他把这个里面的纸 直接一并清空掉啊,这个就不需要再运行了,所以呢这里有没有,有,这里就会返回 q, 我前面加个 not, 前面 not, 后面 q, 整体就会返回 fos 啊,然后就不会运行,下面的话啊就结束了, 我们可以尝试把这个地方呢先去掉 好,然后再来做一个断点,来看一下没有判断的时候呢,他是一个什么样的状态,好比如说我输入 g 好,结束了来看一下,但是现在如果我选择数据线, 我这样选择完之后,好,他又进行如下的操作, 这个时候由于你没有判断,所以呢他会把这里面清空掉,哎,一下全部清空掉了,其实这个时候呢,我们是不要清空的啊,我选择了这个足球鞋呢,我当然就是要查询这个足球鞋了,这句话就是在这个地方起到的作用。 ok, 好,我们再来测试一下,好,我说这 好,输入这之后呢,他出来三个啊,我选择足球鞋啊,如果这个时候你选择了查询啊,啊,当然是我们是做一个演示啊, 我把这个足球鞋啊删掉啊,删掉完之后呢,他又出来一个完整的菜单啊,比如说出一个 x, 看一下啊,护膝训练服,足球服,如果这个时候我再输入一个 l 啊, 那就是训练服了啊, ok, 那关于这个效果呢,我们就讲到这里,感谢各位看官的支持,如果这个视频能帮助到你,请帮忙点赞、收藏、转发。我是老吴,关注我,下节课我们将学习新的内容。

hello, 大家好,我是程序员路人甲,那今天继续给大家分享我们这个问题,我们连接 serk server 数据库基础教程的第十节,那么我们今天的内容呢,就是要学会从这个数据库当中去动态把数据加载到我们这个,嗯,科目 bux 的这个下拉列表里面,就像这样, 你看我这些数据呢是从哪里来的呢?我们来看一下啊,这些数据,大家看到的这些数据不是我编辑进去的,而是从我的这个数据库里面动态读取出来,然后给它加载到我们的这个 啊,这个窗体里面的,我们还可以从这里面去获取到这些数据,那今天我们就来学习一下。接下来我们开始进入正题,然后呢这个窗体我已经建好了,然后呢我们来看一下啊,这上面我们 总共有哪些东西,那这三个是说明啊,咱们就不管他就是一个 level 放在上面进行这个啊,简单的文本描述的,主要我们看这个东西,这个和这个,这是一个什么呢?这是一个下拉列表,就是可编辑的一个文本框,它包含下拉值,那我们就把它叫做下拉列表好了。 那在这之前呢,我们用它啊,其实已经啊实现过了,就是我们的这个性别的这个选择,我们当时是怎么做的来着,我们是从这里去手动给他编辑一下,那么这种用法呢,就适合于就是你固定的只有一两下不可能改变的,比如说我们这个性别, 那如果是说我们有多个数据啊,比如说有十几二十个,那这种情况下呢?并且这十几二十个我们有可能通常啊在频繁的去给他做一个改变, 那这个时候呢就直接去编辑就不太合适呢,此时我们需要怎么做呢?我们就需要这个数据啊,他是动态的,怎么样动态呢?放在我的数据库里面,他就他就变成动态了,我们来看一下,你看 我这个数据库里面呢,就有一个部门表, department in four, 然后在这里面呢我就存了部门的一些信息,对吧?这里面有三个列,他的部门编号,部门名称,还有一个他的一个启用的一个状态标识,就三个列。 那我们现在呢要干一件什么事情呢?要把这里面的数据呀,给他显示到我的这个下拉列表里面,那现在我们来看一下, 那这里面他现在是没有数据的,他现在是没有数据的,那这个时候我们要把它加载进去,应该怎么样来呢?我们来看一下啊,首先 他要加载他的顺序是什么什么呢?就是必须在我的这个窗体就是秀出来,就是窗体加载出来,我就让他有数据,那有数据,那怎么样去触发呢?所以呢这个我们就需要写在窗体加载时间里面,也就是说我们的 form 整个 form 的唠的时间里面,唠的是加载吗?是吧?写在这个加载时间里面,整个窗体的唠的时间里面,在这里面 去加载数据,在这里面去加载数据。 ok, 我们来看一下怎么样加载呢?这个时候我们就可以复用之前的代码呢,这些代码我们就可以直接给他复制过来。 那下一次内容我们就要讲了,怎么样让这些代码给他,让他具有啊,可复用性就是不用,每次我们都去这样去复制一堆, 那这是我们下次要讲的内容啊,今天我们我们直接给他复制过来用。那我们来看一下啊,在这里面我们就需要改代码喽,跟 data great view 相关的东西我们就不要了,我们就不要了。我们在改什么地方?我们需要把这些,哎,都删掉,这些我们都不要了,是吧? 我们要干什么事情呢?我们需要把部门表里面的数据给他放到我的这个下单列表里面,所以说这个时候呢,我这个 student info, 我就要把它改成什么呢? department info, 就是我的这个部门表了。然后呢,这里我们要做什么?重点在这里哦,在这里 开始绑定我们的这个下拉列表。怎么样绑定呢?绑定 用什么?我们来看一下。在这个地方,在这里面我的这个看这里,看这里,开始将数据及与我们的这个 great 空间做关联。那这个时候同样的道理也是这样的啊,也是,也是什么呢啊?将数据库中的 数据集与下拉列表产生关联。怎么样?怎么样产生关联呢?用到我们的数据源。数据源是什么?就是我们的。呃, combo box 的这个 data sauce, 它应该等于什么呢?你看看我们这边,我们这边是怎么来的,它应该等于 d s 点 table, table 是零,这个地方,哎,也是一样的,没有问题,他的数据员给他做成这个 table, 对他 table 的。然后呢?最重要的地方在这里, 在这里,重要的地方在这里,是吧?这里怎么做呢?我们需要给他指定需要 下拉列表,指定两个属性,什么属性呢?值 和那个和文本,为什么要有直和文本呢?我们来看一下,在我们的实际的运用当中呢,这种是很常见的用法,就是他有一个建职队,就是 k value 的一种, k value 的这种一种形式,一个是 key, 一个是 value。 那我们 使用的时候呢,通常我们会去用这个 k, 因为 k 呢,它是一个编号,它不会不会经常去变动,比如说我们产生的这些部门,有的时候我的部门信息错了,我可以去改这个信息的这个名称,但是它这个编号一定是不会动的, 编号一定是固定的啊,他的他动的是什么?动的是他的这个文本,所以这个时候我们需要给他指定值和文本,也就是我们所兼职对,兼职对 k value 这样的一个形式。 k value 这样的形式怎么样指定呢?诶,它的, 它的叫什么来着?嗯,我们来看 display member, display member 就是它显示我们所看到的,我们所看到的 就是他的名字,就是我们可以看到的,显示给我们可以看到的。用这个。那还有一个是什么呢? 它的啊? value member 就是它就对应什么,它就对应我们的我们的 key value 这个键字,对,嗯, id, 我们想让它, 嗯,用户看到的是一个,是一个,这个叫什么?就是我们的啊这一列纸。但实际我们在程序里面操作的,我们是用它,因为它能指向它,有了这个之后,我们就可以指向它对应的这个 name 了。嗯,这样写完之后呢,我们就来看一下,哎, 我们就做好了,是吧?我们来运行一下看看,看到没有,他就加载出来,哟,看到没有?这些数据从哪里来的? 这些数据来自于,来自于这里,这些数据来自于这里。看到没有?我们来比,我们来比较一下, 看到没有?信息部、产品部、客服部、研发部、销售部,你看这些数据就这样来的喽,那这样呢?我们就达到了一个目的,就是我们把数据库当中的这个数据表中的内容呢,就给他加载到我们的下单列表里面了, 加载完了之后我们还做一件事情,加载完了之后我怎么去获取他嘞?对吧?你显示出来你肯定是要用他做做一些查询,做一些录入的吗?对吧?那我们就怎么样呢?在下拉列表里面去获,在这个按钮里面去获取这个值,怎么样获取呢? 我们给它弹出来是吧?它有两,既然它有两个值,那么获取的时候也是可以获取到两个值的,我们获取到什么呢?第一个 它的 text, 这个 text 是什么意思?就是文本, text 就是文本。我们来看一下,你看信息部、客服部、 销售部,对吧?那你说我们在呃实际运用当中,但是我们操作的是什么操,操作的是它的那个 key, 就是它的这个 id 编号这一列,那这个时候我们就需要去怎么样去获取到那个嘞,是吧?那我们就来看一下,给它拼接到后面,让它让我们看到一目了然,是吧? 拼接上,嗯,我们的这个它的看到哦,用 select selected 我们的这个,嗯,我看一下啊,点儿 selected value, 我们来看有一个叫 value, selected value, 用它这个 value 呢,就是我们对应的这个叫它的一个 id 了,我们来看一下, 看到没有? value key, value, key, 它每一组都对应着我们数据库里面的内容了,看到没有? 就是你想要用它的这个内容,你就用内容,想要用它的这个,呃, value, 就用它的 value。 那这就是我们今天讲到的内容。为什么要把它提前到这里讲呢? 因为我们要为后面的一个内容做准备。是哪个内容呢?我们来看一下 at employment, employment 这个啊, form 在这个里面,我们要在这里面去录, 录入这个信息。那录入信息的时候呢?我的这个部门,我的这个部门我就需要把它动态加载我们的数据库里面的这个部门信息了,而不是自己编辑一系列, 因为你自己编辑的它肯定是,哎呀,随时有可能变动的嘛。我们把它放在数据库里面,它既安全就有效,而且还方便我们的这个使用。所以呢,这就是我们为什么要把它提前到。呃,现在来讲, 这就是我们今天讲的那种,大家可以自己去动手写一下,还蛮好玩的哈。写完之后你会发现,哎,好像写编程也写程序也没有那么难,我也可以做一些啊,自己的一些小系统。那今天咱们就到这里,下次咱们再见。

组合宽控甲 comboboss 组合框框架既可以提供用户输入,也可以提供选项信息供用户选择。我们在之前介绍的各个实力中,曾多次使用了组合框框架。 在本讲解中,我们来详细介绍组合框空调的使用。首先我们来介绍设置组合框风格, 打开组合框空架的属性窗口,在风格选项卡中的态度属性,我们可以设置组合框的风格,如该图所示,从图中我们可以发现组合框更有三种风格,分别为 cn 头、丈夫大了和丈夫类。 其中 c 木风格的主播框包含一个编辑框和一个显示列表。如第二幅图所示, 在深厚祖国光章,用户只能选择同时只能选择一个选项。 而丈夫大吻和丈夫类似风格的组合框,都是在用户单击下拉箭头后才弹出一本框。 这两种风格的组合方的区别在于,照不大的风格组合框的编辑框是可以编辑的,也就是说在照的风格,照不大的风格下的组合框,我们可以 编辑编辑框中的文本。而这个类似风格的组合框,它的编辑框是指足的,我们不能够修改 风格编辑方程的文本。 接下来我们介绍调整列表框列表部分的大小。 默认情况下,我们在对话框中放置的主卧框,他的大小是有限的,通常我们都需要调整他的大小。我们首先打开一个工程,然后我们向对话框对话框中添加一个主卧框, 然后我们利用它的属性双口向其中添加一些数据,例如我们添加一些课程信息,然后这里我们 按 ctrl 加灰车键来输出下一个数据, 然后我们按灰车键保存设置。接下来我们运行下应用程序, 然后我们单击组合框,发现七周他只显示只显示了一一项数据,我们只能通过旁边非常小的一个滚动条来选择其他的数据, 这通常给用户的使用带来了不便,因此我们在设置组合框时,通常首先需要设置组合框的列表的大小,设置 左方列表的大小。他的方式是,首先我们选中左方空间,然后单击他的黑色箭头, 此时会弹出一个列表,这里我们将其延伸,运用鼠标将其拖动使其变大,这样我们就调整了组合框中列表的大小。下面我们重新来运行一下应用程序, 这样列表中的选项就全部显示出来了。 接下来我们介绍向祖国光荣插入数据。 向左框中插入数据主要有两种方式,第一种方式是在左框的属性窗口中添加,我们在介绍调整左框列表的实力中,已经介绍了利用属性窗口来添加数据。例如 我们打开左框的属性窗口,在他的对字对塔选卡部分,我们向其填中添加的数据。这里大家需要注意的是,我们在添加其他数据时,需要按 ctrl 加灰色键进行化行来添加, 如果我们直接按回折键会关闭掉对话框,而不能够进行换啊,这一点大家要注意。 第二种像组合框,在像组合框中添加数据的方式是通过落马来向 组合框中添加数据,这里我们就是调用组合框的爱的是春运方法,下面我们来介绍一下。首先我们来清空组合框中的数据,将其全部删除掉, 然后我们再打开内向导窗口,为主卧窗空间过年一个成员变量。 然后我们在对话框出水画部分来向左框框中添加数据, 然后我们硬性一下应用程序, 发现我们已经向着光中添加了数据, 注意这里我 添加向左右方中添加数据时还注意一个左右方的属性, 在左右框的风格中有一个骚的属性,如果选我们选中该属相,那么我们在向左右框中添加数据后,数据呢会自动的进行排序, 这样可能会导致我们向主卧框中添加的顺序可能与最后主卧框中显示的顺序是不一致的。比如 我们在代码中依次向主要框中添加了语文、数学、英语、对与政治等信息,那么我们在运行时,这些信息可能并不是按我们代码的顺序来添加的,因为主要框如果设置了排序属相,那么主要框空间会对添加的数据自动的进 进行排序。接下来我们来介绍如何获取用户选择的数据。 当我们向组合框中添加数据之后,在开发应对程序时,通常在程序中需要动态的来获取当前用户在组合框中选择的数据。那么我们如何来获取组合框中的数据呢? 这里我们通过一个实力来演示一下, 我们向对话框中添加一个按钮,然后我们处理按钮的那些事件, 这里我们来获取一个左框中的数据。 首先我们定义了一个注册电量,然后我们调用主要框的盖的 window text 方法来获取当前的文本, 然后我们以消息对话框的形式来显示该文本。 我们来编译和运行一下硬硬程序。 现在我们在组合方中选择一项数据,然后我们单击按钮, 将以对话框的形式来弹出用户选择的数据。这样我们就利用了主卧框的盖的温度太子方法来获取主卧框中的当前温板。 在开发应用程序时,我们有时候不仅需要获取主要框当前选择的文本,而且可能还需要获取主要框中某一个选项的数据。 例如,我们想要获取主要框中的第三项的数据,此时我们就不能够通过盖的奋斗太子的方法来获取,因为该方法获取的是当前用户选择的数据。 如果第三项数据没有被当前选择,只要我们通过该方法就无法获取到第三项数据。 这里呢,我们可以使用左方的另一个方法 机盖子 l ld taxis。 我们通过开发法可以获取左框的某一项的数据。 通通过该方法的参数列表,我们可以发现他包含了两个参数,第一个参数表示的是主卧框中数据的缩影像,即我们像主卧框中添加数据时,他是有缩影的,从零开始。 假如我们获取第三项文本,我们可以将缩影值设置为二, 我们随意选择一个数据。注意这里的第三项数据是语文。我们来看一下, 发现通过我们的盖子 lvt 的方法,我们获取到了主要框中的第三项数据。 最后我们来介绍设置组合光默认显示的数据。 在应用成一招使用组合框时,有时需要设置组合框默认显示的数据,例如,我们将组合框中的某一项数据显示。在编辑框部分,组合框类 ccomepobabos 提供了赛的 cur 赛 方法,就是设置当前选中的项目。该方法使用了一个缩影值作业参数,该缩影值表示了数据在主卧框中的缩影内置。下面我们来演示如何设置主卧框默认显示的数据。 在之前的应用程序中,组合方默认情况下没有显示任何数据。假如我们想在他默认显示时显示第一行数据,我们可以通过下面的代码来实现。 我们在对话框出尔化时编写程序代码。 我们通过调要 赛的西游儿赛欧方法来设置左方的默认选项。他有一个整形参数。这里假如我们将第一项设置为他的默认参数,那么我们在该参数就可以设置为零, 发现第一项已经作为了主要框的默认数据。 至此,我们就完成了左框的讲解。

好,来到这里有问题了。好,为什么这里会有问题呢?啊?一看就能明白了,是因为我现在对这个复合框的直径清空, 其实也是相当于触发了这个确率事件,而现在这个文本框里面并没有填入任何的东西,所以呢,这个坏的他肯定是找不到的啊,找不到这个定位就会发生错误 啊,这种问题怎么来规避呢?那我们就要在这个地方多加一句了,嗯, i love you。 好,有了这句话之后呢,他就不会有任何问题了。 ok, 我们再来测试一下。好,我们再次来输入一个名字, 漂亮, 好,确认录录。 ok, 录进来了。哎,录进来之后这里好像又出现了一点问题啊,这些都清空了,没有问题啊,这个复合框怎么会变成两个这个东西呢?啊,来看一下。 ok, 找到了问题啊。 啊,为什么这个会填那个假进去呢?还是因为这个地方我肯定写的有点犯懵啊,这个复合框把它清空,不是把这个逻辑值设成 boss, 而是 past 啊,是这样。 ok, 再来测试一下,随便打。 好填入啊,填入没有问题啊,里面东西全部清空掉了。好, ok, 也没有问题 啊,这里我还想说啊,如果像这种情况呢,比如说像这种情况,这种清空的情况,我们不单单是在这个录录的时候可能会清空, 比如说我要在这个地方呢,再来做一个空间啊,我再复制一个空间出来啊,比如说这个地方我想设置一个,就是 当我们填的时候,比如说填错了,我想一次性删除啊,我就做了一个清空的按钮来实现这个功能, 那我们再把这个东西复制一次贴到这边来吗?啊,你这样贴过来肯定是可以运行的,但是这样的这个代码又长了很多,像这种固定式的代码,我们怎么才能把它做的简化呢?其实 我们可以应用之前我们学的这个函数啊,就是制定函数可以调用的,这种情况,我们可以把它呢剪切一下啊,把它放到这个模块里面来啊,当然前面呢要加上这个 double 啊,比如说这个 直过程的名称就叫做清空。好,我把它放到这里面来,然后我在这个窗体里面呢,我就不用写这么大一串了啊,我直接在这边写上清空两个字啊,这样呢他 就会调用这个模块里面的这些代码就能实现清空。然后我这边又有个清空啊,我就不用再写一串代码,很轻松的啊,就是两个字清空就可以了。好,来测试一下 啊,我就随便写了。好,我现在点录入啊,清空了没有问题啊,或者我现在 啊随便填了一些东西,然后我发现我填错了啊,我想统一的把它删掉,清空也是没有问题的。好,所以这样就大大的减少我们这个代码的量了啊,我们只需要啊这样一下就可以了啊,这相当于是一个面相对象的编程逻辑。好,另外我想说呢啊,把这 去掉吧,这个是我啊演示这个效果用的啊,这个对齐一下,把这个空间放到窗体的中间,在这里 那水平对齐。 ok, 好,我们还可以来做一个完善,就是这个确认露露的时候呢,我们不排除有的时候我们在录制雪景的时候这样点一下的时候呢,会不小心点到这个露露,他一下就进去了,所以呢,我们要在这地方做一个再次的确认啊,我们可以用这个 mac 去 box, 但是用的时候呢,肯定是跟我们之前用的时候是不一样的啊,因为这个卖数据 boos 呢,他也不是一个只是弹出这个对话框的啊,他也有不同的用法。这个用法呢,我们不是写最后面啊,把它写在最前面,就是当你悟出的时候呢,我先对这个点 点击的行为来进行一个最终的确认,把这个 max 去 box 写出来。好,我们现在不是直接这样了啊,而是括号了,好,在括号里面我们先写上啊,就是询问用户是否 确认录入,我们都好一下。哎,我们发现呢,他其实有很多参数可以用好,这个时候我就想要让对方来选示和否,所以呢,我们在这地方就选一下这个, 找一下啊,这个 vb, yes, no 啊,这个好,然后我们就可以进行判断啊应, 如果这个地方你选择了不是 yes, 而是 no, 就是这个地方等于这个威逼, no, 就是你点的这个 no, 那我就 退出这个沙斗啊,这样呢,就能防止误触啊,可以来测试一下 啊,比如说我这个随便填一些东西啊。好,我现在填学习号的时候呢,不小心点到这地方来了,我一点, 他问我是否确认露露啊,这个时候你可以选四,也可以选否。好,如果我选否呢,他就不会露露了,如果你选四啊,他当然是把它录进去了。 ok, 那这一节课呢,我们学的知识点啊,稍微有点多 好,大家呢,一定要跟着这个视频,把这些代码真真实实的敲一下啊,不然呢,你自己写的时候 会 bug 满天飞。好了,那这一节课呢,就讲到这里,感谢各位看官的支持,如果这个视频能帮助到你,请帮忙点赞、收藏、转发。我是老吴,关注我,下节课我们将学习新的内容。