[易语言][ExDui][Tutorial]1.NameSelector
<h1 id="咕咕咕">咕咕咕</h1><p>尝试自己写组件对象被易语言的对象劝退后,我又回来写教程了。<br>
相信上一章对如何创建窗口讲得足够透彻了,这一章上项目实战:点名器。<br>
<s>点名器这种简单的东西实在是经常被拿出来开刀啊。</s><br>
还有一点,发现之前Tutorial这个词给拼错了……</p>
<h1 id="design">Design</h1>
<p>在打代码之前,我们必须要清楚界面布局。<br>
一个点名器是怎么样的?</p>
<ol>
<li>显示名称的标签。(NameLabel)</li>
<li>开始点名的按钮。(StartButton)</li>
</ol>
<p>Easy enough,right?<br>
画个界面图方便打代码,最好使用一些方便的工具。当时我选择的是<strong>ProcessOn</strong>,但的确算不上好用……<br>
不过位置能画出来就好了,其他的随缘。<br>
<img src="https://img2018.cnblogs.com/blog/1904423/202001/1904423-20200124141842604-323336169.png" alt="Designing" loading="lazy"></p>
<h1 id="coding">Coding</h1>
<p>显示窗口就不赘述了,可以看我之前的教程。<br>
随后往窗口上加控件。</p>
<h2 id="namelabel">NameLabel</h2>
<p>并没有Label之类的控件……我查了好久Demo,才发现一个Static比较像。<br>
Static是windows下显示静态文本的控件。显示文本嘛,当成Label就好了。<br>
使用Ex_ObjCreateEx来创建组件对象。<br>
其中<code>hParent</code>填写ExDui的句柄,其他没啥特殊的。<br>
为了显示效果,将Text_Format设置为纵向横向居中。<br>
最终代码大概是这样:</p>
<pre><code>hNameLabel = Ex_ObjCreateEx (-1, 取指针_字节集型 (temp1), 取指针_字节集型 (temp2), -1, 0, 110, 640, 100, hExDui, 0, 位或 (#DT_VCENTER, #DT_CENTER), 0, 0, 0)
</code></pre>
<p>设置下背景颜色啊,字体啊,代码如下:</p>
<pre><code>Ex_ObjSetColor (hNameLabel, #COLOR_EX_BACKGROUND, RGB2ARGB (取颜色值 (204, 229, 255), 255), 假)
Ex_ObjSetFont (hNameLabel, _font_createfromfamily (取指针_字节集型 (temp3), 40, -1), 假)
</code></pre>
<p>其中文本为:</p>
<pre><code>temp1 = A2W (“Static”, )
temp2 = A2W (“keep it Simple and Stupid.”, )
temp3 = A2W (“微软雅黑”, )
</code></pre>
<p>NameLabel没什么需要绑定的事件,创建好放在那里就行了。</p>
<h2 id="startbutton">StartButton</h2>
<p>所有控件统一视为Object,所以还是按部就班地创建一个obj。</p>
<pre><code>temp1 = A2W (“Button”, )
temp2 = A2W (“开始点名”, )
hStartButton = Ex_ObjCreate (取指针_字节集型 (temp1), 取指针_字节集型 (temp2), -1, 250, 250, 140, 50, hExDui)
</code></pre>
<p>按钮要绑定事件处理点击,用<code>ObjHandleEvent</code>来绑定。</p>
<pre><code>Ex_ObjHandleEvent (hStartButton, #NM_CLICK, 到整数 (&onStartButtonClicked))
</code></pre>
<p>随后<code>ShowWindow</code>,开始消息循环即可。</p>
<h2 id="do-things">Do Things</h2>
<p>界面画好了,开始处理业务逻辑吧。<br>
点名器的话,大概如下流程:</p>
<ol start="0">
<li>读入名单。</li>
<li>点击StartButton。</li>
<li>NameLabel显示一个名字。</li>
</ol>
<p>在StartButton被单击的事件中添加处理代码即可,具体实现相信大家都会,主要用到该API:</p>
<pre><code>Ex_ObjSetText()
</code></pre>
<p>如果直接转换太生硬了,还可以加一点动画,淡入淡出随机显示几个后再显示目标名字等等,这里不细讲了。</p>
<h2 id="title">Title</h2>
<p>最后讲一下标题栏的处理。标题栏也是一个Object,但获取句柄需要用到特殊的方法:</p>
<pre><code>hTitle = Ex_ObjGetFromID (hExDui, #EWS_TITLE)
</code></pre>
<p>随后可以拿着句柄操作标题栏了。</p>
<h1 id="final">Final</h1>
<p>最终效果如下:<br>
<img src="https://img2018.cnblogs.com/blog/1904423/202001/1904423-20200124141903321-1615531951.png" alt="Final" loading="lazy"></p>
<p>简单而中规中矩,毕竟一共也就3个控件,代码实现还是比较简单的。<br>
Download Src</p>
</div>
<div id="MySignature" role="contentinfo">
Love programming and insist on improving myself.<br><br>
来源:https://www.cnblogs.com/Clouder-Blog/p/ExDuiTutorial1.html
頁:
[1]