demo_view_textbox.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /*
  2. * 程序清单:texbox控件演示
  3. *
  4. * 这个例子会在创建出的container上添加几个不同类型的textbox控件
  5. */
  6. #include "demo_view.h"
  7. #include <rtgui/widgets/label.h>
  8. #include <rtgui/widgets/textbox.h>
  9. /* 创建用于演示textbox控件的视图 */
  10. rtgui_container_t *demo_view_textbox(void)
  11. {
  12. rtgui_rect_t rect, textbox_rect;
  13. rtgui_container_t *container;
  14. rtgui_label_t *label;
  15. rtgui_textbox_t *text;
  16. /* 先创建一个演示用的视图 */
  17. container = demo_view("TextBox View");
  18. /* 获得视图的位置信息 */
  19. demo_view_get_rect(container, &rect);
  20. rect.x1 += 5;
  21. rect.x2 = rect.x1 + 30;
  22. rect.y1 += 5;
  23. rect.y2 = rect.y1 + 20;
  24. /* 创建一个label控件 */
  25. label = rtgui_label_create("名字: ");
  26. /* 设置label的位置 */
  27. rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
  28. rtgui_container_add_child(container, RTGUI_WIDGET(label));
  29. /* 让textbox_rect赋值到rect,以计算textbox控件的位置 */
  30. textbox_rect = rect;
  31. textbox_rect.x1 = textbox_rect.x2 + 5;
  32. textbox_rect.x2 = textbox_rect.x1 + 160;
  33. /* 创建一个textbox控件 */
  34. text = rtgui_textbox_create("bernard", RTGUI_TEXTBOX_SINGLE);
  35. /* 设置textbox控件的位置 */
  36. rtgui_widget_set_rect(RTGUI_WIDGET(text), &textbox_rect);
  37. /* 添加textbox控件到视图中 */
  38. rtgui_container_add_child(container, RTGUI_WIDGET(text));
  39. /* 计算下一个label控件的位置 */
  40. rect.y1 += 23;
  41. rect.y2 = rect.y1 + 20;
  42. /* 创建一个label控件 */
  43. label = rtgui_label_create("邮件: ");
  44. /* 设置label的位置 */
  45. rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
  46. /* 添加label控件到视图中 */
  47. rtgui_container_add_child(container, RTGUI_WIDGET(label));
  48. textbox_rect = rect;
  49. textbox_rect.x1 = textbox_rect.x2 + 5;
  50. textbox_rect.x2 = textbox_rect.x1 + 160;
  51. /* 创建一个textbox控件 */
  52. text = rtgui_textbox_create("bernard.xiong@gmail.com", RTGUI_TEXTBOX_SINGLE);
  53. /* 设置textbox控件的位置 */
  54. rtgui_widget_set_rect(RTGUI_WIDGET(text), &textbox_rect);
  55. /* 添加textbox控件到视图中 */
  56. rtgui_container_add_child(container, RTGUI_WIDGET(text));
  57. rect.y1 += 23;
  58. rect.y2 = rect.y1 + 20;
  59. /* 创建一个label控件 */
  60. label = rtgui_label_create("密码: ");
  61. /* 设置label的位置 */
  62. rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
  63. /* 添加label控件到视图中 */
  64. rtgui_container_add_child(container, RTGUI_WIDGET(label));
  65. textbox_rect = rect;
  66. textbox_rect.x1 = textbox_rect.x2 + 5;
  67. textbox_rect.x2 = textbox_rect.x1 + 160;
  68. /* 创建一个textbox控件 */
  69. text = rtgui_textbox_create("rt-thread", RTGUI_TEXTBOX_SINGLE);
  70. /* 设置textbox显示文本为掩码形式(即显示为*号,适合于显示密码的情况) */
  71. text->flag |= RTGUI_TEXTBOX_MASK;
  72. /* 设置textbox控件的位置 */
  73. rtgui_widget_set_rect(RTGUI_WIDGET(text), &textbox_rect);
  74. /* 添加textbox控件到视图中 */
  75. rtgui_container_add_child(container, RTGUI_WIDGET(text));
  76. rect.y1 += 23;
  77. rect.y2 = rect.y1 + 20;
  78. /* 创建一个label控件 */
  79. label = rtgui_label_create("主页: ");
  80. /* 设置label的位置 */
  81. rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
  82. /* 添加label控件到视图中 */
  83. rtgui_container_add_child(container, RTGUI_WIDGET(label));
  84. textbox_rect = rect;
  85. textbox_rect.x1 = textbox_rect.x2 + 5;
  86. textbox_rect.x2 = textbox_rect.x1 + 160;
  87. /* 创建一个textbox控件 */
  88. text = rtgui_textbox_create("http://www.rt-thread.org", RTGUI_TEXTBOX_SINGLE);
  89. /* 设置textbox控件的位置 */
  90. rtgui_widget_set_rect(RTGUI_WIDGET(text), &textbox_rect);
  91. /* 添加textbox控件到视图中 */
  92. rtgui_container_add_child(container, RTGUI_WIDGET(text));
  93. return container;
  94. }