word active X 组合框控件 如何编辑内容?

《VC编辑框控件的一些用法》由会员分享,可在线阅读,更多相关《VC编辑框控件的一些用法(126页珍藏版)》请在人人文库网上搜索。

ExitThread()来正常退出线程,尽是避免使用TerminateThread来终止线程,因为终止后线程资源将不会被释放。一般情况下在CreateThread创建了线程后即使用CloseHandle()来关闭线程句柄,以防止TerminateThread得到句柄后,进行线程的强制终止。 7 自定义宏检查错误BO

1、初始化列表如果这个CCombobox放在一个对话框类内,则不可在对话框的构造函数内来初始化combobox,可以放在对话框的OnShow事件内。2、取得当前选中的内容;得到当前选中项内容: int nIndex = GetCurSel(), GetLBText(nI

12、ndex, str);清除列表内容:ResetContent();combo box控件1.你在编辑状态下点那个控件的向下的三角形,就出冒出来一个可以调高度的东东。将高度调高,否则在执行时会不能显示下拉选项。2.为combo box添加选项,在编辑状态下选combo box控件的属性,选Data标签,在编辑框中添加选项,按Ctrl-Enter来添加下一个选项。3.为combo

13、方法是在classwizard中添加变量,添加时Category中选Control。例如:CComboBox.SetCurSel(0)用来设置下拉菜单初始值,具体看MSDN。 CString变量用来存储下拉菜单所选的选项值。同样,当选项发生变化时要使用UpdateData(TRUE)函数更新该变量的值。编辑框控件的一些用法

编辑框(Edit)控件实际上是一个简易的文本编辑器,用户可以在编辑框中输入可添加或插入文本。还有复制、粘贴、剪切、删除等编辑功能。应用程序用 CreateWindowEx 创建编辑框控件时,可根据控件的用途在下表中选择部份常数来设定其风格属性(style)。常数说明ES_MULTILINE多行

16、文本,指定编辑控件可以多行文本编辑,用户每按一次 Enter,在当前光标次输入一个回车换行符(0Dh,0Ah),文本增加一行。ES_LEFT文本显示居左。ES_CENTER文本显示居中。ES_RIGHT文本显示居右。ES_LOWERCASE把用户输入的字母统统转换成小写字母。ES_UPPERCASE把用户输入的字母统统转换成大写字母。ES_OEMCONVERT使编辑框中的正文可以在 ANSI 字符集和 OEM 字符集之间相互转换。这在编辑框中包含文件名时是很有用的。ES_AUTOHSCROLL当用户在行尾键入一个字符时,正文将自动向右滚动10个字符,当用户按回车键时,正文总是滚向左边。ES_A

17、UTOVSCROLL当用户在最后一个可见行按回车键时,正文向上滚动一页。ES_NUMBER只接收数码输入,其它字符输入一律无效。ES_NOHIDESEL当编辑框失去输入焦点,正文中的选择保持不变,缺省时正文中的选择将失效。ES_READONLY将编辑框设置成只读的。ES_PASSWORD使所有键入的字符都用“*”来显示。ES_WANTRETURN使多行编辑器接收回车键输入并换行。如果不指定该风格,按回车键会选择缺省的命令按钮,这往往会导致对话框的关闭。 当用户在编辑控件上进行各种操作时,其父窗口将收到 WM_COMMAND 通知消息,同时 wParam 的低16位带控件的 ID。lParam

18、带控件句柄(hWnd),wParam 的高16位带有如下表的消息代码。消息代码用户操作EN_CHANGE编辑框的内容被用户改变了。与 EN_UPDATE 不同,该消息是在编辑框显示的正文被刷新后才发出的。EN_ERRSPACE编辑框控件无法申请足够的动态内存来满足需要。EN_HSCROLL用户在水平滚动条上单击鼠标。EN_KILLFOCUS编辑框失去输入焦点。EN_MAXTEXT输入的字符超过了规定的最大字符数。在没有 ES_AUTOHSCROLL 或ES_AUTOVSCROLL 的编辑框中,当正文超出了编辑框的边框时也会发出该消息。EN_SETFOCUS编辑框获得输入焦点。EN_UPDATE

19、在编辑框准备显示改变了的正文时发送该消息。EN_VSCROLL用户在垂直滚动条上单击鼠标。应用程序可以通过调用 SendMessage 向控件发送如下消息来设定和查询控件各种参数。uMsgwParamlParam说明EM_UNDO00撤消前一次在控件的编辑操作,当重复发送本消息,控件将在撤消和恢复中来回切换。EM_CANUNDO00检测控件撤消缓冲区是否为空,通常控件把最后一次在控件的编辑操作保存在一个撤消缓冲区,如果缓冲区非空则返回 TRUE 表示上次操作可以撤消,否则返回 FALSE,应用程序可以利用该返回值来禁止或允许菜单或工具条的“撤消”项。EM_EMPTYUNDOBUFFER00清除

20、控件的撤消缓冲区,使其不能撤消前一次编辑操作。EM_REPLACESELTRUE或FALSE替换文本指针用指定文本替换编辑控件中的当前选定内容,如果 wParam 为 TRUE,则本次操作允许撤消,FALSE 禁止撤消。EM_SETSEL起点终点设置编辑控件中文本选定内容范围,该范围被高亮度显示,用于为复制、替换、粘贴、剪切、删除等编辑功能指定范围。使用本功能,键盘光标将被移至指定的终点后面,通常使用指定相同起点和终点来移动键盘光标而不选定范围。当指定的起点等于0和终点等于-1时,全文全部被选中,此法常用在清空编辑控件。当指定的起点等于-2和终点等于-1时,全文均不选,键盘光标移至文本未端,此

21、法常用在文本未端追加内容。注意:当控件没有输入焦点时,本操作将会失败,一般在执行本操作前都应调用 SetFocus 先取得输入焦点。EM_GETSEL起点缓冲地址或NULL终点缓冲地址或NULL取得编辑控件中选定内容的范围,返回值中低16位为起点与高16位为终点,如果 wParam 和 lParam 中指定了地址,则会在该地址填入相应值(dword)。本操作也常用来求取键盘光标位置。EM_CHARFROMPOS0位置取得指定位置处的字符相对于文本头部的偏移,使用本操作应先在 lParam 的高16位指定行号,低16位指定列号,行列是按编辑控件的客户区左上角为原点(0,0)计算的。如果指定的位置

22、超出控件客户区则返回-1EM_FMTLINESTRUE或FALSE0决定是否在取回的文本宇串中包含软回车字符EM_GETFIRSTVISIBLELINE00取得编辑控件中显示的第一行EM_GETHANDLE00取得编辑控件文本缓冲区。EM_GETLIMITTEXT00获取一个编辑控件中文本的最大长度EM_GETLINE行号缓冲地址从编辑控件取回一行的内容,缓冲区第一个字(word)必须先填写缓冲区的长度,EM_GETLINECOUNT00取得一个编辑控件的总行数EM_GETMARGINS00获取编辑控件的左、右边距,返回值低16位为左边距,高16位为右边距EM_GETMODIFY00取编辑控件

23、的修改标志,返回TRUE 则控件文本已被修改,返回 FALSE 则未变。此值可以来决定是否提示用户存盘。EM_GETPASSWORDCHAR00取得编辑控件用来显示密码的字符,返回 NULL

24、指定行第一个字符偏移EM_LINELENGTH字符偏移0取得指定字符偏移处对应的一行长度字符数。EM_LINESCROLL列字符行数滚动编辑控件EM_POSFROMCHARPOINT结构地址字符偏移取得指定字符偏移的显示位置行列号,行列是按编辑控件的客户区左上角为原点(0,0)计算的。字符偏移是相对于文本头部的偏移。EM_SCROLLSB_LINEDOWNSB_LINEUPSB_PAGEDOWNSB_PAGEUP0编辑框显示文本垂直滚动。滚动方向:SB_LINEDOWN

25、_SCROLLCARET00把键盘光标移至可见范围。EM_SETHANDLE缓冲区指针0为编辑控件指定新的文本缓冲区。此操作仅适用对话框创建带 DS_LOCALEDIT 的高16位指定右边距点数。当指定 wP

27、P0RECT结构地址与 EM_SETRECT 类似,只是控件此时不会重画EM_SETTABSTOPS制表站数站距表地址设置编辑控件中的制表站间距,当制表站数为0时 lParam 被忽略,所有制表站距均为32个对话框单位,当制表站数不为0时 lParam

28、户可以在编辑框中输入并编辑正文。编辑框既可以是单行的,也可以是多行的,多行编辑框是从零开始编行号的在一个多行编辑框中,除了最后一行外,每一行的结尾处都有一对回车换行符(用rn表示)这对回车换行符是正文换行的标志,在屏幕上是不可见的编辑框控件会向父窗口发出如表6.5所示的控件通知消息.表6.5消息含义EN_CHANGE编辑框的内容被用户改变了。与EN_UPDATE不同,该消息是在编辑框显示的正文被刷新后才发出的。EN_ERRSPACE编辑框控件无法申请足够的动态内存来满足需要。EN_HSCROLL用户在水平滚动条上单击鼠标。EN_KILLFOCUS编辑框失去输入焦点。EN_MAXTEXT输入的字

29、符超过了规定的最大字符数。在没有ES_AUTOHSCROLL或ES_AUTOVSCROLL的编辑框中,当正文超出了编辑框的边框时也会发出该消息。EN_SETFOCUS编辑框获得输入焦点。EN_UPDATE在编辑框准备显示改变了的正文时发送该消息。EN_VSCROLL用户在垂直滚动条上单击鼠标。MFC的CEdit类封装了编辑框控件。CEdit类的成员函数Create负责创建按钮控件,该函数的声明为BOOL

30、示,dwStyle可以是这些风格的组合。rect指定了编辑框的位置和尺寸。pParentWnd指定了父窗口,不能为NULL。编辑框的ID由nID指定。如果创建成功,该函数返回TRUE,否则返回FALSE表6.6 编辑框控件的风格控件风格含义ES_AUTOHSCROLL当用户在行尾键入一个字符时,正文将自动向右滚动10个字符,当用户按回车键时,正文总是滚向左边。ES_AUTOVSCROLL当用户在最后一个可见行按回车键时,正文向上滚动一页。ES_CENTER在多行编辑框中使正文居中。ES_LEFT左对齐正文。ES_LOWERCASE把用户输入的字母统统转换成小写字母。ES_MULTILINE指定

31、一个多行编辑器。若多行编辑器不指定ES_AUTOHSCROLL风格,则会自动换行,若不指定ES_AUTOVSCROLL,则多行编辑器会在窗口中正文装满时发出警告声响。ES_NOHIDESEL缺省时,当编辑框失去输入焦点后会隐藏所选的正文,当获得输入焦点时又显示出来。设置该风格可禁止这种缺省行为。ES_OEMCONVERT使编辑框中的正文可以在ANSI字符集和OEM字符集之间相互转换。这在编辑框中包含文件名时是很有用的。ES_PASSWORD使所有键入的字符都用“*”来显示。ES_RIGHT右对齐正文。ES_UPPERCASE把用户输入的字母统统转换成大写字母。ES_READONLY将编辑框设置

32、成只读的。ES_WANTRETURN使多行编辑器接收回车键输入并换行。如果不指定该风格,按回车键会选择缺省的命令按钮,这往往会导致对话框的关闭。除了上表中的风格外,一般还要为控件指定WS_CHILD、WS_VISIBLE、WS_TABSTOP和WS_BORDER窗口风格,WS_BORDER使控件带边框。创建一个普通的单行编辑框应指定风格为WS_CHILD|WS_VISIBLE|WS_TABSTOP

WS_VSCROLL风格,这将创建一个可水平和垂直滚动的,带有水平和垂直滚动条的多行编辑器。对于用对话框模板编辑器创建的编辑框控件,可以在控件的属性对话框中指定表6.6中列出的控件风格。例如,在属性对话框中选择Multi-line项,相当与指定了ES_MULTILINE风格。编辑框支持剪贴板操作。CEdit类提供了一些与剪贴板有关的成员函数,如表6.7所示。表6.7 与剪切板有关的CEdit成员函数函数声明用途void Clear( )清除编辑框中被选择的正文。void Copy( )把在编辑框中选择的正文拷贝到剪贴板中。v

34、oid Cut( )清除编辑框中被选择的正文并把这些正文拷贝到剪贴板中。void Paste( )将剪贴板中的正文插入到编辑框的当前插入符处。BOOL Undo( )撤消上一次键入。对于单行编辑框,该函数总返回TRUE,对于多行编辑框,返回TRUE表明操作成功,否则返回FALSE。可以用下列CEdit或CWnd类的成员函数来查询编辑框。在学习下面的函数时,读者会经常遇到术语字符索引字符的字符索引是指从编辑框的开头字符开始的字符编号,它是从零开始编号的也就是说,字符索引实际上是指当把整个编辑正文看作一个字符串数组时,该字符所在的数组元素的下标int

const;这两个函数均是CWnd类的成员函数,可用来获得窗口的标题或控件中的正文。第一个版本的函数用lpszStringBuf参数指向的字符串数组作为拷贝正文的缓冲区,参数nMaxCount可以拷贝到缓冲区中的最大字符数,该函数返回以字节为单位的实际拷贝字符数(不包括结尾的空字节)。第二个版本的函数用一个CString对象作为缓冲区。int GetWindowTextLength( ) const;CWnd的成员函数,可用来获得窗口的标题或控件

const;两个函数都是CEdit的成员函数,用来获得所选正文的位置。GetSel的第一个版本返回一个DWORD值,其中低位字说明了被选择的正文开始处的字符索引,高位字说明了选择的正文结束处的后面一个字符的字符索引,如果没有正文被选择,那么返回的低位和高位字节都是当前插入符所在字符的字符索引。GetSel的第二个版本的两个参数是两个引用,其含义与第一个版本函数返回值的低位和高位字相同。int

37、 1 ) const;CEdit的成员函数,仅用于多行编辑框,用来返回指定字符索引所在行的行索引(从零开始编号)。参数nIndex指定了一个字符索引,如果nIndex是-1,那么函数将返回选择正文的第一个字符所在行的行号,若没有正文被选择,则该函数会返回当前的插入符所在行的行号。int LineIndex( int nLine = 1 ) const;CEdit的成员函数,仅用于多行编辑框,用来获得指定行的开头字符的字符索引,如果指定行超过了编辑框中的最大行数,该函数将返回-1。参数nLine是指定了从零开始的行索引,如果它的值为-1,则函数返回当前的插入符所在行的字符索引。int GetLi

const;CEdit的成员函数,用于获取指定字符索引所在行的字节长度(行尾的回车和换行符不计算在内)。参数nLine说明了字符索引如果nLine的值为-1,则函数返回当前行的长度(假如没有正文被选择),或选择正文占据的行的字符总数减去选择正文的字符数(假如有正文被选择)。若用于单行编辑框,则函数返回整个正文的长度。int GetLine( int nIndex, LPTSTR

const;CEdit的成员函数,仅用于多行编辑框,用来获得指定行的正文(不包括行尾的回车和换行符)。参数nIndex是行号,lpszBuffer指向存放正文的缓冲区,nMaxLength规定了拷贝的最大字节数,若。函数返回实际拷贝的字节数,若指定的行号大于编辑框的实际行数,则函数返回0。需要注意的是,GetLine函数不会在缓冲区中字符串的末尾加字符串结束符(NULL)下列CWnd或CEdit类的成员函数可用来修改编辑框控件。void

nEndChar, BOOL bNoScroll = FALSE );CEdit的成员函数,用来选择编辑框中的正文。参数dwSelection的低位字说明了选择开始处的字符索引,高位字说明了选择结束处的字符索引。如果低位字为0且

);CEdit的成员函数,用来将所选正文替换成指定的正文参数lpszNewText指向用来替换的字符串参数bCanUndo的值为TRUE说明替换是否可以被撤消的在调用上述函数时,如果涉及的是一个多行编辑框,那么除了LineLeng

42、th和GetLine函数外,都要把回车和换行符考虑在内例如,假设在编辑框中有如下几行正文:abcdefgij那么字母e的字符索引是6而不是4,因为abcd后面还有一对回车换行符调用LineLength(7)会返回第二行的长度3调用LineIndex(2)会得到11调用LineFromChar(8)会返回1如果没有选择任何正文,并且插入符在字母e上,那么调用GetSel返回值的低位和高位字都是6通过分析上述函数,我们可以总结出一些查询和设置编辑框的方法调用CWnd的成员函数GetWindowText和SetWindowText可以查询和设置编辑框的整个正文,在上一章的Register程序中,我们

43、就使用过这两个函数如果想对多行编辑框逐行查询,那么应该先调用GetLineCount获得总行数,然后再调用GetLine来获取每一行的正文下面一段代码演示了如何对多行编辑框进行逐行查询char buf40;int total=MyEdit.GetLineCount();int

49、对应的控件类。在这些控件中,读者应该重点掌握命令按钮、选择框、单选按钮、编辑框、列表框和组合框。.1.1 传统控件的控件通知消息控件通过向父窗口发送控件通知消息来表明发生了某种事件例如,当用户在按钮上单击鼠标时,按钮控件会向父窗口发送BN_CLICKED消息传统控件的通知消息实际上是通过WM_COMMAND消息发给父窗口的(滚动条除外),在该消息的wParam中含有通知消息码(如BN_CLICKED)和控件的ID,在lParam中则包含了控件的句柄利用ClassWizard可以很容易地为控件通知消息加入消息映射和消息处理函数,这在上一章中已经演示过了传统控件的消息映射宏是

51、映射宏的第一个参数是控件消息码,第二和第三个参数分别指明了一组连续的控件ID中的头一个和最后一个ID,最后一个参数是消息处理函数名。例如,要处理一组单选按钮发出的BN_CLICKED消息,相应的消息映射如下所示:ON_CONTROL_RANGE(BN_CLICKED, IDC_FIRST, IDC_LAST,

52、需要手工建立消息映射和消息处理函数提示:事实上,在使用ClassWizard时只要运用一个小小的技巧,就可以把不同控件的通知消息映射到同一个处理函数上,也可以把一个控件的不同通知消息映射到同一个处理函数上这个技巧就是在用ClassWizard创建消息处理函数时,指定相同的函数名即可此方法的优点在于控件的ID不必是连续的,缺点是处理函数没有nID参数,因而不能确定是哪一个控件发送的消息6.1.2 静态控件静态控件包括静态正文(Static Text)和图片控件(Picture)。静态正文控件用来显示正文。图片控件可以显示位图、图标、方框和图元文件,在图片控件中显示图片的好处是不必操心图片的重绘问

53、题。静态控件不能接收用户的输入。在上一章中,读者已经用过静态正文和组框控件。图片控件的例子可以在AppWizard创建的 IDD_ABOUTBOX对话框模板中找到,在该模板中有一个图片控件用来显示图标。静态控件的主要起说明和装饰作用。MFC的CStatic类封装了静态控件。CStatic类的成员函数Create负责创建静态控件,该函数的声明为BOOL Create( LPCTSTR

54、le指定了静态控件的风格,表6.1显示了静态控件的各种风格,dwStyle可将这些风格组合起来。rect是一个对RECT或CRect结构的引用,用来说明控件的位置和尺寸。pParentWnd指向父窗口,该参数不能为NULL。nID则说明了控件的ID。如果创建成功,该函数返回TRUE,否则返回FALSE表6.1 静态控件的风格控件风格含义SS_BLACKFRAME指定一个具有与窗口边界同色的框(缺省为黑色)。SS_BLACKRECT指定一个具有与窗口边界同色的实矩形(缺省为黑色)。SS_CENTER使显示的正文居中对齐,正文可以回绕。SS_GRAYFRAME指定一个具有与屏幕背景同色的边框。SS

55、_GRAYRECT指定一个具有与屏幕背景同色的实矩形。SS_ICON使控件显示一个在资源中定义的图标,图标的名字有Create函数的lpszText参数指定。SS_LEFT左对齐正文,正文能回绕。SS_LEFTNOWORDWRAP左对齐正文,正文不能回绕。SS_NOPREFIX使静态正文串中的&不是一个热键提示符。SS_NOTIFY使控件能向父窗口发送鼠标事件消息。SS_RIGHT右对齐正文,可以回绕。SS_SIMPLE使静态正文在运行时不能被改变并使正文显示在单行中。SS_USERITEM指定一个用户定义项。SS_WHITEFRAME指定一个具有与窗口背景同色的框(缺省为白色)。SS_WHI

56、TERECT指定一个具有与窗口背景同色的实心矩形(缺省为白色)。除了上表中的风格外,一般还要为控件指定WS_CHILD和WS_VISIBLE窗口风格。一个典型的静态正文控件的风格为WS_CHILD|WS_VISIBLE|SS_LEFT。对于用对话框模板编辑器创建的静态控件,可以在控件的属性对话框中指定表6.1中列出的控件风格。例如,可以在静态正文控件的属性对话框中选择Simple,这相当于指定了SS_SIMPLE风格。Cstatic类主要的成员函数在表6.2中列出。可以利用CWnd类的成员函数GetWindowText,SetWindowText和GetWindowTextLength等函数来

按钮控件按钮是指可以响应鼠标点击的小矩形子窗口。按钮控件包括命令按钮(Pushbutton)、检查框(Check Box)、单选按钮(Radio Button)、组框(Group Box)和自绘式按钮(Owner-draw Button)。命令按钮的作用是对用户的鼠标单击作出反应并触发相应的事件,在

59、按钮中既可以显示正文,也可以显示位图。选择框控件可作为一种选择标记,可以有选中、不选中和不确定三种状态。单选按钮控件一般都是成组出现的,具有互斥的性质,即同组单选按钮中只能有一个是被选中的。组框用来将相关的一些控件聚成一组自绘式按钮是指由程序而不是系统负责重绘的按钮。按钮主要是指命令按钮、选择框和单选按钮。后二者实际上是一种特殊的按钮,它们有选择和未选择状态。当一个选择框处于选择状态时,在小方框内会出现一个 “”,当单选按钮处于选择状态时,会在圆圈中显示一个黑色实心圆。此外,检查框还有一种不确定状态,这时检查框呈灰色显示,不能接受用户的输入,以表明控件是无效的或无意义的。按钮控件会向父窗口发出

61、ect说明了按钮的位置和尺寸。pParentWnd指向父窗口,该参数不能为NULL。nID是按钮的ID。如果创建成功,该函数返回TRUE,否则返回 FALSE表6.4

组合框?你一个绘制类型的TinUI框架,也想通过整合其它的个体组件来创造一个复合组件?

好吧,TinUI是不会尝试绘制可以gird或pack布局的组件的(因为tkinter画布的限制)。本篇文章想要讲的组件,是combobox

combobox是“组合框”英译名称,而在Windows操作系统中,“combobox”有下拉框、下拉列表的含义,通常作为想给出既定选项,又不希望像单选框一样占用的一定的位置而与用户交互的组件。这次,TinUI将实现该组件。

(剧透) TinUI实现combobox挺费劲的,是TinUI目前最复杂的个体组件。


因为下拉框使用画布绘制比较复杂,先来想一下该如何实现下拉框。

样式与功能(初次构想)

基本与系统下拉框对齐(除不能够直接输入外),要基本实现以下部分:

  1. 初始化时有一个文本显示框和下拉提示框
  2. 文本显示框中应该有初始文字
  3. 下拉提示框响应鼠标单击动作,其文本型提示应该与下拉框的“闭合”、“展开”状态相符合
  4. 下拉提示框响应鼠标进入与离开动作
  5. 展开下拉框后,应出现只能够单选若干选项
  6. 各选项响应鼠标进入与离开动作
  7. 各选项响应鼠标单击动作,文本显示框显示选中文本,并将选中文本作为参数回调指定函数

额- - -,好像要求有点高,但是远不止这些。还有:各选项维持选定状态、下拉框响应焦点状态、文本显示框的动态更新……

先不管了,一个组件的绘制要求不能这么严格,应该从基础开始,我们就先实现这些功能……

但,还是好复杂啊…(⊙_⊙;)…(引出下文)

样式与功能(二次构想)

我认为,因为TinUI已经有了一定的规模,我们应该尝试运用以往的经验和技巧来简化下拉框的绘制。这样,才能够让之前的只是运用到我们现在要解决的问题。

combobox的整体结构我们是改不了的,但是下拉提示框可以使用add_button替代,并且实例化其中的按钮文本和按钮背景。

下拉框的响应动作还是得自己写。

展开状态的选项列表可用借鉴add_radiobutton的相关代码。

以下,就是绘制下拉框的新(简)版方法:

完事。现在开始绘制下拉框。


fg::文本、边框颜色 activefg::响应鼠标的文本、边框颜色 command::回调函数。必须有一个参数:被选中的选项文本

下拉框在常规状态下,由文本显示框和下拉提示框组成。其中,下拉提示框我们会使用TinUI的按钮替代。

其中,函数open_box对应了展开和闭合选项框的操作,后面再讲。

下面的代码借鉴了TinUI单选框的绘制代码。

这段代码取自于TinUI的radiobutton绘制代码,有删改。

这段代码的含义在中提到,这里不再阐述。

函数choose_this代表响应鼠标的选中动作。届时,文本显示框将显示选中的文本。

在之后的操作中,我们需要对所有选项框进行统一操作,因此我们将为它们建立一个一致的tag名称。为了避免tag名称重复,我们将使用文本显示框和下拉提示框的组件id进行tag命名。

这个动作均有open_box函数进行操作。我们可以通过按钮的文本,来判断当前下拉框的状态。

首先,那些选项框本身是闭合的。


 

那么,函数的操作如下:


b.add_paragraph((50,150),'这是TinUI按钮触达的事件函数回显,此外,窗口标题也被改变、首行标题缩进减小')

确实,TinUI的下拉框相比于系统下拉框还有细节上的不足,但是TinUI的下拉框提供了较多的自定义选项,而且不会影响使用效果。

中考考完,居然就直接写了这一篇8000+字的说明文……

我要回帖

更多关于 excel建立组合框控件 的文章

 

随机推荐