wrb 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. checksums.yaml +7 -0
  2. data/README +28 -0
  3. data/Rakefile +66 -0
  4. data/bin/wrb +41 -0
  5. data/bin/wrb.bat +6 -0
  6. data/ext/rwin/aatree.c +192 -0
  7. data/ext/rwin/aatree.h +55 -0
  8. data/ext/rwin/extconf.rb +47 -0
  9. data/ext/rwin/rw_api.c +2058 -0
  10. data/ext/rwin/rw_devices.c +215 -0
  11. data/ext/rwin/rw_gdiplus.h +278 -0
  12. data/ext/rwin/rw_graphics.c +1583 -0
  13. data/ext/rwin/rw_resources.c +1988 -0
  14. data/ext/rwin/rw_ubfuncs.c +281 -0
  15. data/ext/rwin/rw_windows.c +1936 -0
  16. data/ext/rwin/rwin.c +451 -0
  17. data/ext/rwin/rwin.h +442 -0
  18. data/lib/rwin.rb +820 -0
  19. data/lib/wrb.rb +20 -0
  20. data/lib/wrb/applications/frmdesigner/angle.cur +0 -0
  21. data/lib/wrb/applications/frmdesigner/angle2.cur +0 -0
  22. data/lib/wrb/applications/frmdesigner/controls/Button.bmp +0 -0
  23. data/lib/wrb/applications/frmdesigner/controls/Button.rb +34 -0
  24. data/lib/wrb/applications/frmdesigner/controls/Checkbox.bmp +0 -0
  25. data/lib/wrb/applications/frmdesigner/controls/Checkbox.rb +10 -0
  26. data/lib/wrb/applications/frmdesigner/controls/Combobox.bmp +0 -0
  27. data/lib/wrb/applications/frmdesigner/controls/Combobox.rb +88 -0
  28. data/lib/wrb/applications/frmdesigner/controls/ComboboxEx.rb +97 -0
  29. data/lib/wrb/applications/frmdesigner/controls/Comboboxex.bmp +0 -0
  30. data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.bmp +0 -0
  31. data/lib/wrb/applications/frmdesigner/controls/DateTimePicker.rb +11 -0
  32. data/lib/wrb/applications/frmdesigner/controls/Edit.bmp +0 -0
  33. data/lib/wrb/applications/frmdesigner/controls/Edit.rb +8 -0
  34. data/lib/wrb/applications/frmdesigner/controls/Groupbox.bmp +0 -0
  35. data/lib/wrb/applications/frmdesigner/controls/Groupbox.rb +9 -0
  36. data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.bmp +0 -0
  37. data/lib/wrb/applications/frmdesigner/controls/Hotkeyctrl.rb +9 -0
  38. data/lib/wrb/applications/frmdesigner/controls/Imagelist.bmp +0 -0
  39. data/lib/wrb/applications/frmdesigner/controls/Imagelist.rb +115 -0
  40. data/lib/wrb/applications/frmdesigner/controls/Listbox.bmp +0 -0
  41. data/lib/wrb/applications/frmdesigner/controls/Listbox.rb +77 -0
  42. data/lib/wrb/applications/frmdesigner/controls/Listview.bmp +0 -0
  43. data/lib/wrb/applications/frmdesigner/controls/Listview.rb +157 -0
  44. data/lib/wrb/applications/frmdesigner/controls/Menu.bmp +0 -0
  45. data/lib/wrb/applications/frmdesigner/controls/Menu.rb +198 -0
  46. data/lib/wrb/applications/frmdesigner/controls/Menubar.bmp +0 -0
  47. data/lib/wrb/applications/frmdesigner/controls/Menubar.rb +9 -0
  48. data/lib/wrb/applications/frmdesigner/controls/MonthCalender.bmp +0 -0
  49. data/lib/wrb/applications/frmdesigner/controls/Monthcalender.rb +9 -0
  50. data/lib/wrb/applications/frmdesigner/controls/Panel.bmp +0 -0
  51. data/lib/wrb/applications/frmdesigner/controls/Panel.rb +30 -0
  52. data/lib/wrb/applications/frmdesigner/controls/Progressbar.rb +10 -0
  53. data/lib/wrb/applications/frmdesigner/controls/Radiobutton.bmp +0 -0
  54. data/lib/wrb/applications/frmdesigner/controls/Radiobutton.rb +13 -0
  55. data/lib/wrb/applications/frmdesigner/controls/Rebar.bmp +0 -0
  56. data/lib/wrb/applications/frmdesigner/controls/Rebar.rb +162 -0
  57. data/lib/wrb/applications/frmdesigner/controls/Splitter.bmp +0 -0
  58. data/lib/wrb/applications/frmdesigner/controls/Splitter.rb +66 -0
  59. data/lib/wrb/applications/frmdesigner/controls/Static.bmp +0 -0
  60. data/lib/wrb/applications/frmdesigner/controls/Static.rb +9 -0
  61. data/lib/wrb/applications/frmdesigner/controls/Statusbar.bmp +0 -0
  62. data/lib/wrb/applications/frmdesigner/controls/Statusbar.rb +103 -0
  63. data/lib/wrb/applications/frmdesigner/controls/Tabctrl.bmp +0 -0
  64. data/lib/wrb/applications/frmdesigner/controls/Tabctrl.rb +136 -0
  65. data/lib/wrb/applications/frmdesigner/controls/Timer.bmp +0 -0
  66. data/lib/wrb/applications/frmdesigner/controls/Timer.rb +36 -0
  67. data/lib/wrb/applications/frmdesigner/controls/Toolbar.bmp +0 -0
  68. data/lib/wrb/applications/frmdesigner/controls/Toolbar.rb +165 -0
  69. data/lib/wrb/applications/frmdesigner/controls/Trackbar.bmp +0 -0
  70. data/lib/wrb/applications/frmdesigner/controls/Trackbar.rb +34 -0
  71. data/lib/wrb/applications/frmdesigner/controls/Treeview.bmp +0 -0
  72. data/lib/wrb/applications/frmdesigner/controls/Treeview.rb +107 -0
  73. data/lib/wrb/applications/frmdesigner/controls/Updown.bmp +0 -0
  74. data/lib/wrb/applications/frmdesigner/controls/Updown.rb +31 -0
  75. data/lib/wrb/applications/frmdesigner/controls/default.bmp +0 -0
  76. data/lib/wrb/applications/frmdesigner/controls/progressbar.bmp +0 -0
  77. data/lib/wrb/applications/frmdesigner/controls/unselect.bmp +0 -0
  78. data/lib/wrb/applications/frmdesigner/fddialogs.rb +87 -0
  79. data/lib/wrb/applications/frmdesigner/fdesign.rb +1315 -0
  80. data/lib/wrb/applications/frmdesigner/fdmodules.rb +1394 -0
  81. data/lib/wrb/applications/frmdesigner/fdparseform.rb +197 -0
  82. data/lib/wrb/applications/frmdesigner/img13.bmp +0 -0
  83. data/lib/wrb/base.rb +1294 -0
  84. data/lib/wrb/combocommon.rb +77 -0
  85. data/lib/wrb/commctrlconst.rb +139 -0
  86. data/lib/wrb/commdlg.rb +77 -0
  87. data/lib/wrb/components/animate.rb +114 -0
  88. data/lib/wrb/components/bitmap.rb +116 -0
  89. data/lib/wrb/components/button.rb +134 -0
  90. data/lib/wrb/components/canvas.rb +266 -0
  91. data/lib/wrb/components/checkbox.rb +118 -0
  92. data/lib/wrb/components/choosecolordlg.rb +87 -0
  93. data/lib/wrb/components/choosefontdlg.rb +142 -0
  94. data/lib/wrb/components/clipboard.rb +174 -0
  95. data/lib/wrb/components/combobox.rb +282 -0
  96. data/lib/wrb/components/comboboxex.rb +574 -0
  97. data/lib/wrb/components/cursor.rb +91 -0
  98. data/lib/wrb/components/datetimepicker.rb +197 -0
  99. data/lib/wrb/components/ddeclient.rb +180 -0
  100. data/lib/wrb/components/ddeserver.rb +131 -0
  101. data/lib/wrb/components/dialog.rb +228 -0
  102. data/lib/wrb/components/edit.rb +412 -0
  103. data/lib/wrb/components/font.rb +35 -0
  104. data/lib/wrb/components/form.rb +65 -0
  105. data/lib/wrb/components/groupbox.rb +122 -0
  106. data/lib/wrb/components/header.rb +479 -0
  107. data/lib/wrb/components/hotkeyctrl.rb +72 -0
  108. data/lib/wrb/components/icon.rb +109 -0
  109. data/lib/wrb/components/imagelist.rb +396 -0
  110. data/lib/wrb/components/inifile.rb +97 -0
  111. data/lib/wrb/components/listbox.rb +149 -0
  112. data/lib/wrb/components/listview.rb +1467 -0
  113. data/lib/wrb/components/menu.rb +592 -0
  114. data/lib/wrb/components/menubar.rb +84 -0
  115. data/lib/wrb/components/monthcalender.rb +164 -0
  116. data/lib/wrb/components/openfilenamedlg.rb +147 -0
  117. data/lib/wrb/components/pager.rb +199 -0
  118. data/lib/wrb/components/panel.rb +103 -0
  119. data/lib/wrb/components/picture.rb +55 -0
  120. data/lib/wrb/components/printdlg.rb +148 -0
  121. data/lib/wrb/components/printdlgex.rb +117 -0
  122. data/lib/wrb/components/printer.rb +97 -0
  123. data/lib/wrb/components/progressbar.rb +140 -0
  124. data/lib/wrb/components/radiobutton.rb +49 -0
  125. data/lib/wrb/components/rebar.rb +830 -0
  126. data/lib/wrb/components/registry.rb +408 -0
  127. data/lib/wrb/components/richedit.rb +1181 -0
  128. data/lib/wrb/components/savefilenamedlg.rb +27 -0
  129. data/lib/wrb/components/scintilla.rb +1298 -0
  130. data/lib/wrb/components/scrollbar.rb +239 -0
  131. data/lib/wrb/components/splitter.rb +494 -0
  132. data/lib/wrb/components/static.rb +198 -0
  133. data/lib/wrb/components/statusbar.rb +490 -0
  134. data/lib/wrb/components/tabctrl.rb +686 -0
  135. data/lib/wrb/components/timer.rb +117 -0
  136. data/lib/wrb/components/toolbar.rb +1107 -0
  137. data/lib/wrb/components/tooltip.rb +651 -0
  138. data/lib/wrb/components/trackbar.rb +298 -0
  139. data/lib/wrb/components/treeview.rb +845 -0
  140. data/lib/wrb/components/updown.rb +198 -0
  141. data/lib/wrb/ddeml.rb +241 -0
  142. data/lib/wrb/documents/animate.html +46 -0
  143. data/lib/wrb/documents/bitmap.html +69 -0
  144. data/lib/wrb/documents/button.html +78 -0
  145. data/lib/wrb/documents/canvas.html +137 -0
  146. data/lib/wrb/documents/checkbox.html +77 -0
  147. data/lib/wrb/documents/choosecolordlg.html +29 -0
  148. data/lib/wrb/documents/choosefontdlg.html +31 -0
  149. data/lib/wrb/documents/clipboard.html +31 -0
  150. data/lib/wrb/documents/combobox.html +117 -0
  151. data/lib/wrb/documents/comboboxex.html +139 -0
  152. data/lib/wrb/documents/control.html +53 -0
  153. data/lib/wrb/documents/cursor.html +45 -0
  154. data/lib/wrb/documents/datetimepicker.html +70 -0
  155. data/lib/wrb/documents/ddeclient.html +33 -0
  156. data/lib/wrb/documents/ddeserver.html +26 -0
  157. data/lib/wrb/documents/dialog.html +78 -0
  158. data/lib/wrb/documents/edit.html +169 -0
  159. data/lib/wrb/documents/empty.html +11 -0
  160. data/lib/wrb/documents/favicon.png +0 -0
  161. data/lib/wrb/documents/font.html +38 -0
  162. data/lib/wrb/documents/form.html +63 -0
  163. data/lib/wrb/documents/groupbox.html +57 -0
  164. data/lib/wrb/documents/header.html +85 -0
  165. data/lib/wrb/documents/hotkeyctrl.html +42 -0
  166. data/lib/wrb/documents/icon.html +45 -0
  167. data/lib/wrb/documents/imagelist.html +101 -0
  168. data/lib/wrb/documents/images/button.png +0 -0
  169. data/lib/wrb/documents/images/checkbox.png +0 -0
  170. data/lib/wrb/documents/images/combobox.png +0 -0
  171. data/lib/wrb/documents/images/comboboxex.png +0 -0
  172. data/lib/wrb/documents/images/datetimepicker.png +0 -0
  173. data/lib/wrb/documents/images/edit.png +0 -0
  174. data/lib/wrb/documents/images/groupbox.png +0 -0
  175. data/lib/wrb/documents/images/hotkeyctrl.png +0 -0
  176. data/lib/wrb/documents/images/listbox.png +0 -0
  177. data/lib/wrb/documents/images/listview.png +0 -0
  178. data/lib/wrb/documents/images/menu.png +0 -0
  179. data/lib/wrb/documents/images/menubar.png +0 -0
  180. data/lib/wrb/documents/images/monthcalender.png +0 -0
  181. data/lib/wrb/documents/images/progressbar.png +0 -0
  182. data/lib/wrb/documents/images/radiobutton.png +0 -0
  183. data/lib/wrb/documents/images/rebar.png +0 -0
  184. data/lib/wrb/documents/images/richedit.png +0 -0
  185. data/lib/wrb/documents/images/splitter.png +0 -0
  186. data/lib/wrb/documents/images/static.png +0 -0
  187. data/lib/wrb/documents/images/statusbar.png +0 -0
  188. data/lib/wrb/documents/images/tabctrl.png +0 -0
  189. data/lib/wrb/documents/images/toolbar.png +0 -0
  190. data/lib/wrb/documents/images/tooltip.png +0 -0
  191. data/lib/wrb/documents/images/trackbar.png +0 -0
  192. data/lib/wrb/documents/images/treeview.png +0 -0
  193. data/lib/wrb/documents/images/updown.png +0 -0
  194. data/lib/wrb/documents/index.html +155 -0
  195. data/lib/wrb/documents/inifile.html +36 -0
  196. data/lib/wrb/documents/license.txt +22 -0
  197. data/lib/wrb/documents/listbox.html +96 -0
  198. data/lib/wrb/documents/listview.html +277 -0
  199. data/lib/wrb/documents/make_doc.rb +596 -0
  200. data/lib/wrb/documents/menu.html +144 -0
  201. data/lib/wrb/documents/menubar.html +54 -0
  202. data/lib/wrb/documents/monthcalender.html +48 -0
  203. data/lib/wrb/documents/openfilenamedlg.html +36 -0
  204. data/lib/wrb/documents/pager.html +63 -0
  205. data/lib/wrb/documents/panel.html +32 -0
  206. data/lib/wrb/documents/picture.html +48 -0
  207. data/lib/wrb/documents/printdlg.html +35 -0
  208. data/lib/wrb/documents/printdlgex.html +35 -0
  209. data/lib/wrb/documents/printer.html +40 -0
  210. data/lib/wrb/documents/progressbar.html +69 -0
  211. data/lib/wrb/documents/radiobutton.html +51 -0
  212. data/lib/wrb/documents/rebar.html +143 -0
  213. data/lib/wrb/documents/registry.html +36 -0
  214. data/lib/wrb/documents/richedit.html +232 -0
  215. data/lib/wrb/documents/samples/editimg.bmp +0 -0
  216. data/lib/wrb/documents/samples/editimg.iml +0 -0
  217. data/lib/wrb/documents/samples/fileimg.bmp +0 -0
  218. data/lib/wrb/documents/samples/fileimg.iml +0 -0
  219. data/lib/wrb/documents/samples/sample_button.rb +21 -0
  220. data/lib/wrb/documents/samples/sample_checkbox.rb +18 -0
  221. data/lib/wrb/documents/samples/sample_combobox.rb +18 -0
  222. data/lib/wrb/documents/samples/sample_comboboxex.rb +23 -0
  223. data/lib/wrb/documents/samples/sample_datetimepicker.rb +11 -0
  224. data/lib/wrb/documents/samples/sample_edit.rb +25 -0
  225. data/lib/wrb/documents/samples/sample_groupbox.rb +19 -0
  226. data/lib/wrb/documents/samples/sample_hotkeyctrl.rb +12 -0
  227. data/lib/wrb/documents/samples/sample_listbox.rb +12 -0
  228. data/lib/wrb/documents/samples/sample_listview.rb +32 -0
  229. data/lib/wrb/documents/samples/sample_menu.rb +21 -0
  230. data/lib/wrb/documents/samples/sample_menubar.rb +23 -0
  231. data/lib/wrb/documents/samples/sample_monthcalender.rb +11 -0
  232. data/lib/wrb/documents/samples/sample_progressbar.rb +14 -0
  233. data/lib/wrb/documents/samples/sample_radiobutton.rb +14 -0
  234. data/lib/wrb/documents/samples/sample_rebar.rb +25 -0
  235. data/lib/wrb/documents/samples/sample_richedit.rb +60 -0
  236. data/lib/wrb/documents/samples/sample_splitter.rb +33 -0
  237. data/lib/wrb/documents/samples/sample_static.rb +15 -0
  238. data/lib/wrb/documents/samples/sample_statusbar.rb +17 -0
  239. data/lib/wrb/documents/samples/sample_tabctrl.rb +19 -0
  240. data/lib/wrb/documents/samples/sample_toolbar.rb +29 -0
  241. data/lib/wrb/documents/samples/sample_tooltip.rb +50 -0
  242. data/lib/wrb/documents/samples/sample_trackbar.rb +30 -0
  243. data/lib/wrb/documents/samples/sample_treeview.rb +19 -0
  244. data/lib/wrb/documents/samples/sample_updown.rb +18 -0
  245. data/lib/wrb/documents/samples/sampleimg16.iml +0 -0
  246. data/lib/wrb/documents/samples/sampleimg32.iml +0 -0
  247. data/lib/wrb/documents/samples/samplemg16.png +0 -0
  248. data/lib/wrb/documents/samples/samplemg32.png +0 -0
  249. data/lib/wrb/documents/samples/wrb.ico +0 -0
  250. data/lib/wrb/documents/savefilenamedlg.html +19 -0
  251. data/lib/wrb/documents/scrollbar.html +60 -0
  252. data/lib/wrb/documents/splitter.html +96 -0
  253. data/lib/wrb/documents/static.html +84 -0
  254. data/lib/wrb/documents/statusbar.html +110 -0
  255. data/lib/wrb/documents/tabctrl.html +151 -0
  256. data/lib/wrb/documents/timer.html +43 -0
  257. data/lib/wrb/documents/toolbar.html +181 -0
  258. data/lib/wrb/documents/tooltip.html +131 -0
  259. data/lib/wrb/documents/trackbar.html +107 -0
  260. data/lib/wrb/documents/treeview.html +210 -0
  261. data/lib/wrb/documents/updown.html +85 -0
  262. data/lib/wrb/documents/wincontrol.html +258 -0
  263. data/lib/wrb/documents/window.html +499 -0
  264. data/lib/wrb/documents/wrb.css +228 -0
  265. data/lib/wrb/gmem.rb +26 -0
  266. data/lib/wrb/imecommon.rb +59 -0
  267. data/lib/wrb/listcommon.rb +185 -0
  268. data/lib/wrb/lzss.rb +126 -0
  269. data/lib/wrb/scrollinfo.rb +142 -0
  270. data/lib/wrb/toplevelcommon.rb +634 -0
  271. metadata +315 -0
@@ -0,0 +1,35 @@
1
+ require 'wrb'
2
+ module WR
3
+
4
+ # Defines a particular format for text, including font face, size, and style attributes.
5
+ # <br>See also <a href="https://docs.microsoft.com/en-us/windows/desktop/gdi/windows-gdi">
6
+ # GDI section of Microsft Docs</a>
7
+ class Font
8
+ =begin
9
+ This is a document holder.
10
+ self.new(facename, fontheigt, style|bold=nil, italic=nil, underline=nil, strikeout=nil)
11
+ Creates a new font with specified arguments.
12
+ <br>Give a String as facename and an Integer as fontheight.
13
+ Give combination of "b", "i", "u", "s" as style. Otherwize, give true/false as each arguments.
14
+
15
+ Following methods are defined at the super class.
16
+ :singleton_methods
17
+ self.wraphandle(hfont)
18
+
19
+ :instance_methods
20
+ _hfont()
21
+ Retrieves a font handle of self. Returns 32/64 bits integer as it.
22
+ dispose()
23
+ Destroies self and removes from resource table and sets hfont to 0. Returns true/false.
24
+ external?()
25
+ Retreives whether this font is external or not.<br> Returns true/false.
26
+ facename()
27
+ Retreives name of this font, such as "Meiryo" and so on.<br> Returnes a String.
28
+ height()
29
+ Retreives height of this font as `em height'.<br> Retruns an Integer.
30
+ logfont()
31
+ Retreives a CStruct object. Wrap this with <i>LOGFONT</i> structure to handle by names.
32
+
33
+ =end
34
+ end
35
+ end
@@ -0,0 +1,65 @@
1
+ # The toplevel window
2
+
3
+ #require 'wrb'
4
+ require 'wrb/toplevelcommon'
5
+
6
+ module WR
7
+ # The top level window that is also a container of controls.
8
+ # <br>See also <a href="https://docs.microsoft.com/en-us/windows/desktop/api/_winmsg/">
9
+ # Windows and Messages section of Microsoft Docs.</a>
10
+ class Form < Window
11
+ include ModToplevelWin
12
+
13
+ undef SetWindowSubclass, RemoveWindowSubclass
14
+ DefaultWindowStyle = WS_VISIBLE | WS_OVERLAPPEDWINDOW
15
+
16
+ #
17
+ def create()
18
+ # self.font = Font.wraphandle(Font::DefaultGuiFontHandle)
19
+ @_classname = "RUBYWIN"
20
+ @_style ||= DefaultWindowStyle
21
+ @_idcmd = 0
22
+ @_x ||= CW_USEDEFAULT
23
+ @_y ||= CW_USEDEFAULT
24
+ @_w ||= CW_USEDEFAULT
25
+ @_h ||= CW_USEDEFAULT
26
+ register_event(WM_GETFONT, "__getfont__")
27
+ super
28
+ self.icon = @_icon if @_icon
29
+ SendMessage(WM_SIZE, 0, MAKELPARAM(*self.clientsize))
30
+ self.transparency = @_transparency if @_transparency
31
+ self.transparentcolor = @_transparentcolor if @_transparentcolor
32
+ self
33
+ end
34
+ end
35
+ end
36
+
37
+ module WR
38
+ class Form1 < Form
39
+ def initialize
40
+ # self.inheritfont = 'Meiryo', -12
41
+ self.size = 640, 480
42
+ _<< Button[:bt1, 'Click me', 0, 0, 100, 24]
43
+ # self.transparency = 255 #,128
44
+ self.events = :activate
45
+ # self.transparency = 128
46
+ # hide
47
+ end
48
+ def created()
49
+ _<< Button[:bt2, 'Click me too', 0, 30, 100, 24]
50
+ show
51
+ end
52
+
53
+ def self_activate(*args)
54
+ # dp "@%#x", self.transparency # Not work ???
55
+ # dpp args
56
+ end
57
+
58
+ def bt1_clicked(*)
59
+ self.transparentcolor = 0xf0f0f0
60
+ # self.transparency = nil
61
+ dpp transparency
62
+ end
63
+ self.start
64
+ end
65
+ end if $0 == __FILE__
@@ -0,0 +1,122 @@
1
+ module WR
2
+ require_relative './button' unless defined? Button
3
+
4
+ # This control is a rectangle that surrounds a set of controls, such as check boxes or radio buttons. <br>
5
+ # See also <a href="https://docs.microsoft.com/en-us/windows/desktop/Controls/
6
+ #window-controls"> Windows Control section of Microsoft Docs.</a>
7
+ class Groupbox < Button
8
+ attr_reader :_controls
9
+ # def self.sym2style(*args) _sym2style(Button::WinStyles, args); end
10
+ DefaultWindowStyle = BS_GROUPBOX
11
+
12
+ def initialize(*args)
13
+ super
14
+ @_style |= DefaultWindowStyle
15
+ @_controls = Collection.new
16
+ end
17
+
18
+ # Adds a control to this group box.<br>
19
+ # Give a WinControl as ctrl.
20
+ def <<(ctrl)
21
+ cnt = parent.controls << ctrl
22
+ cnt.style |= WS_GROUP if @_controls.empty?
23
+ @_controls << cnt
24
+ class << cnt
25
+ attr_accessor :_owner
26
+ def delete()
27
+ @_owner._controls.delete(self)
28
+ super
29
+ end
30
+ def x()
31
+ super - @_owner.x
32
+ end
33
+ def y()
34
+ super - @_owner.y
35
+ end
36
+ def x=(_x)
37
+ super(_x+@_owner.x)
38
+ end
39
+ def y=(_y)
40
+ super(_y+@_owner.y)
41
+ end
42
+ def move(*args)
43
+ args[0] += @_owner.x
44
+ args[1] += @_owner.y
45
+ super
46
+ end
47
+ end
48
+ cnt._owner = self
49
+ cx, cy = cnt.clientpos
50
+ cnt.move(cx, cy)
51
+ cnt
52
+ end
53
+
54
+ # Removes controls from this group box ad deletes self.
55
+ def delete()
56
+ @_controls.each{|i| i.delete}
57
+ super
58
+ end
59
+
60
+ # Retreives an control of given index in the group box.<br>
61
+ # Give an Integer as idx.
62
+ def [](idx)
63
+ @_controls[idx]
64
+ end
65
+
66
+ # Removes a control from the group. (Not deleted)<br>
67
+ # Give a WinControl as ctrl.
68
+ def remove(ctrl)
69
+ @_controls.delete(ctrl)
70
+ end
71
+
72
+ # move(x, y[, w, h])
73
+ # Moves controls of this group box according to this coordinates.<br>
74
+ # Give the integers as x, y, w, h.
75
+ def move(*args)
76
+ @_controls.each{|i| i.move(i.x+args[0]-x, i.y+args[1]-y)} if @_controls
77
+ super
78
+ parent.refresh if alive?
79
+ end
80
+
81
+ # Changes visible state of this and controls.<br>
82
+ # Give true/false as f.
83
+ def visible=(f)
84
+ super
85
+ @_controls.each{|i| i.visible = f}
86
+ end
87
+
88
+ # Retreives an index of control in the group.<br>
89
+ # Give a WinControl as ctrl.
90
+ def index_of(ctrl)
91
+ @_controls.index(ctrl)
92
+ end
93
+ end
94
+ end
95
+
96
+ module WR
97
+ class Form1 < Form
98
+ def initialize
99
+ resize 640, 480
100
+ controls << Button[:bt1, "Button", 0, 10, 100, 24]
101
+ # # sample of groupbox and raidobuttons
102
+ # controls << [Groupbox, :group1, 'Group1', 10, 100, 200, 200]
103
+ # controls.group1 << [Radiobutton, :rdbutton1, 'click me', 10, 20, 100, 30]
104
+ # controls.group1 << [Radiobutton, :rdbutton2, 'click me', 10, 50, 100, 30]
105
+ # controls.group1 << [Radiobutton, :rdbutton3, 'click me', 10, 80, 100, 30]
106
+
107
+ # sample of control array
108
+ controls << Groupbox[:group2, 'Group2', 10, 100, 200, 200]
109
+ controls.group2 << Radiobutton[:rdbutton, 'click me', 10, 20, 100, 30, :flat]
110
+ # controls.group2 << Radiobutton[:rdbutton, 'click me', 10, 50, 100, 30, :flat]
111
+ # controls.group2 << Radiobutton[:rdbutton, 'click me', 10, 80, 100, 30, :flat]
112
+
113
+ end
114
+
115
+ def bt1_clicked(*)
116
+ controls.group2.move(210, 100)
117
+ # _rdbutton1.position = 0, 0
118
+ end
119
+
120
+ self.start
121
+ end
122
+ end if $0 == __FILE__
@@ -0,0 +1,479 @@
1
+ require 'wrb'
2
+ require 'wrb/commctrlconst'
3
+
4
+ module WR
5
+ module RC
6
+ HDS_HORZ = 0x0
7
+ HDS_BUTTONS = 0x2
8
+ HDS_HOTTRACK = 0x4
9
+ HDS_HIDDEN = 0x8
10
+ HDS_DRAGDROP = 0x40
11
+ HDS_FULLDRAG = 0x80
12
+ HDS_FILTERBAR = 0x100
13
+ HDS_FLAT = 0x200
14
+ #if (_WIN32_WINNT >= 0x0600)
15
+ HDS_CHECKBOXES = 0x400
16
+ HDS_NOSIZING = 0x800
17
+ HDS_OVERFLOW = 0x1000
18
+ #endif
19
+
20
+ HDFT_ISSTRING = 0x0
21
+ HDFT_ISNUMBER = 0x1
22
+ HDFT_HASNOVALUE = 0x8000
23
+
24
+ HDI_WIDTH = 0x1
25
+ HDI_HEIGHT = HDI_WIDTH
26
+ HDI_TEXT = 0x2
27
+ HDI_FORMAT = 0x4
28
+ HDI_LPARAM = 0x8
29
+ HDI_BITMAP = 0x10
30
+ HDI_IMAGE = 0x20
31
+ HDI_DI_SETITEM = 0x40
32
+ HDI_ORDER = 0x80
33
+ HDI_FILTER = 0x100
34
+
35
+ HDF_LEFT = 0x0
36
+ HDF_RIGHT = 0x1
37
+ HDF_CENTER = 0x2
38
+ HDF_JUSTIFYMASK = 0x3
39
+ HDF_RTLREADING = 0x4
40
+
41
+ HDF_OWNERDRAW = 0x8000
42
+ HDF_STRING = 0x4000
43
+ HDF_BITMAP = 0x2000
44
+ HDF_BITMAP_ON_RIGHT = 0x1000
45
+ HDF_IMAGE = 0x800
46
+ HDF_SORTUP = 0x400
47
+ HDF_SORTDOWN = 0x200
48
+ #if (_WIN32_WINNT >= = 0x0600)
49
+ HDF_CHECKBOX = 0x40
50
+ HDF_CHECKED = 0x80
51
+ HDF_FIXEDWIDTH = 0x100
52
+ HDF_SPLITBUTTON = 0x1000000
53
+ #endif
54
+
55
+ HDM_FIRST = 0x1200
56
+ HDM_GETITEMCOUNT = HDM_FIRST+0
57
+ HDM_INSERTITEMA = HDM_FIRST+1
58
+ HDM_INSERTITEMW = HDM_FIRST+10
59
+ HDM_DELETEITEM = HDM_FIRST+2
60
+ HDM_GETITEMA = HDM_FIRST+3
61
+ HDM_GETITEMW = HDM_FIRST+11
62
+ HDM_SETITEMA = HDM_FIRST+4
63
+ HDM_SETITEMW = HDM_FIRST+12
64
+
65
+ if UNICODE
66
+ HDM_INSERTITEM = HDM_INSERTITEMW
67
+ HDM_GETITEM = HDM_GETITEMW
68
+ HDM_SETITEM = HDM_SETITEMW
69
+ else
70
+ HDM_INSERTITEM = HDM_INSERTITEMA
71
+ HDM_GETITEM = HDM_GETITEMA
72
+ HDM_SETITEM = HDM_SETITEMA
73
+ end
74
+
75
+ HHT_NOWHERE = 0x1
76
+ HHT_ONHEADER = 0x2
77
+ HHT_ONDIVIDER = 0x4
78
+ HHT_ONDIVOPEN = 0x8
79
+ HHT_ONFILTER = 0x10
80
+ HHT_ONFILTERBUTTON = 0x20
81
+ HHT_ABOVE = 0x100
82
+ HHT_BELOW = 0x200
83
+ HHT_TORIGHT = 0x400
84
+ HHT_TOLEFT = 0x800
85
+
86
+ HDM_GETITEMRECT = HDM_FIRST+7
87
+ HDM_SETIMAGELIST = HDM_FIRST+8
88
+ HDM_GETIMAGELIST = HDM_FIRST+9
89
+ HDM_ORDERTOINDEX = HDM_FIRST+15
90
+ HDM_CREATEDRAGIMAGE = HDM_FIRST+16
91
+ HDM_GETORDERARRAY = HDM_FIRST+17
92
+ HDM_SETORDERARRAY = HDM_FIRST+18
93
+ HDM_SETHOTDIVIDER = HDM_FIRST+19
94
+ HDM_SETBITMAPMARGIN = HDM_FIRST+20
95
+ HDM_GETBITMAPMARGIN = HDM_FIRST+21
96
+ HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT
97
+ HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT
98
+ HDM_SETFILTERCHANGETIMEOUT = HDM_FIRST+22
99
+ HDM_EDITFILTER = HDM_FIRST+23
100
+ HDM_CLEARFILTER = HDM_FIRST+24
101
+
102
+ HDN_FIRST = -300
103
+ HDN_ITEMCHANGINGA = HDN_FIRST-0
104
+ HDN_ITEMCHANGINGW = HDN_FIRST-20
105
+ HDN_ITEMCHANGEDA = HDN_FIRST-1
106
+ HDN_ITEMCHANGEDW = HDN_FIRST-21
107
+ HDN_ITEMCLICKA = HDN_FIRST-2
108
+ HDN_ITEMCLICKW = HDN_FIRST-22
109
+ HDN_ITEMDBLCLICKA = HDN_FIRST-3
110
+ HDN_ITEMDBLCLICKW = HDN_FIRST-23
111
+ HDN_DIVIDERDBLCLICKA = HDN_FIRST-5
112
+ HDN_DIVIDERDBLCLICKW = HDN_FIRST-25
113
+ HDN_BEGINTRACKA = HDN_FIRST-6
114
+ HDN_BEGINTRACKW = HDN_FIRST-26
115
+ HDN_ENDTRACKA = HDN_FIRST-7
116
+ HDN_ENDTRACKW = HDN_FIRST-27
117
+ HDN_TRACKA = HDN_FIRST-8
118
+ HDN_TRACKW = HDN_FIRST-28
119
+ HDN_GETDISPINFOA = HDN_FIRST-9
120
+ HDN_GETDISPINFOW = HDN_FIRST-29
121
+ HDN_BEGINDRAG = HDN_FIRST-10
122
+ HDN_ENDDRAG = HDN_FIRST-11
123
+ HDN_FILTERCHANGE = HDN_FIRST-12
124
+ HDN_FILTERBTNCLICK = HDN_FIRST-13
125
+
126
+ if UNICODE
127
+ HDN_ITEMCHANGING = HDN_ITEMCHANGINGW
128
+ HDN_ITEMCHANGED = HDN_ITEMCHANGEDW
129
+ HDN_ITEMCLICK = HDN_ITEMCLICKW
130
+ HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKW
131
+ HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKW
132
+ HDN_BEGINTRACK = HDN_BEGINTRACKW
133
+ HDN_ENDTRACK = HDN_ENDTRACKW
134
+ HDN_TRACK = HDN_TRACKW
135
+ HDN_GETDISPINFO = HDN_GETDISPINFOW
136
+ else
137
+ HDN_ITEMCHANGING = HDN_ITEMCHANGINGA
138
+ HDN_ITEMCHANGED = HDN_ITEMCHANGEDA
139
+ HDN_ITEMCLICK = HDN_ITEMCLICKA
140
+ HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKA
141
+ HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKA
142
+ HDN_BEGINTRACK = HDN_BEGINTRACKA
143
+ HDN_ENDTRACK = HDN_ENDTRACKA
144
+ HDN_TRACK = HDN_TRACKA
145
+ HDN_GETDISPINFO = HDN_GETDISPINFOA
146
+ end
147
+ end
148
+
149
+ # A window that is usually positioned above columns of text or numbers like a Listview's one.
150
+ # <br>See also <a href="https://docs.microsoft.com/en-us/windows/desktop/Controls/
151
+ # window-controls"> Windows Control section of Microsoft Docs.</a>
152
+ class Header < WinControl
153
+ include ModCommCtrl
154
+ include RC
155
+
156
+ HDTEXTFILTER = API.defstruct "
157
+ LPSTR pszText;
158
+ INT cchTextMax;"
159
+
160
+ HDITEM = API.defstruct "
161
+ UINT mask;
162
+ int cxy;
163
+ LPTSTR pszText;
164
+ HBITMAP hbm;
165
+ int cchTextMax;
166
+ int fmt;
167
+ LPARAM lParam;
168
+ int iImage;
169
+ int iOrder;
170
+ UINT type;
171
+ void* pvFilter;"
172
+
173
+ HD_LAYOUT = API.defstruct "
174
+ RECT *prc;
175
+ WINDOWPOS *pwpos;"
176
+
177
+ HD_HITTESTINFO = API.defstruct "
178
+ POINT pt;
179
+ UINT flags;
180
+ int iItem;"
181
+
182
+ NMHEADER = API.defstruct "
183
+ NMHDR hdr;
184
+ int iItem;
185
+ int iButton;
186
+ HDITEM *pitem;"
187
+
188
+ HeaderFormats = {
189
+ :left => HDF_LEFT,
190
+ :right => HDF_RIGHT,
191
+ :center => HDF_CENTER,
192
+ :justifymask => HDF_JUSTIFYMASK,
193
+ :rtlreading => HDF_RTLREADING,
194
+ :ownerdraw => HDF_OWNERDRAW,
195
+ :string => HDF_STRING,
196
+ :bitmap => HDF_BITMAP,
197
+ :bitmap_on_right => HDF_BITMAP_ON_RIGHT,
198
+ :image => HDF_IMAGE,
199
+ :sortup => HDF_SORTUP,
200
+ :sortdown => HDF_SORTDOWN,
201
+ :checkbox => HDF_CHECKBOX,
202
+ :checked => HDF_CHECKED,
203
+ :fixedwidth => HDF_FIXEDWIDTH,
204
+ :splitbutton => HDF_SPLITBUTTON
205
+ }
206
+
207
+ WinStyles= {
208
+ :horz => HDS_HORZ,
209
+ :buttons => HDS_BUTTONS,
210
+ :hottrack => HDS_HOTTRACK,
211
+ :hidden => HDS_HIDDEN,
212
+ :dragdrop => HDS_DRAGDROP,
213
+ :fulldrag => HDS_FULLDRAG,
214
+ :filterbar => HDS_FILTERBAR,
215
+ :flat => HDS_FLAT,
216
+ :checkboxes => HDS_CHECKBOXES,
217
+ :nosizing => HDS_NOSIZING,
218
+ :overflow => HDS_OVERFLOW
219
+ }
220
+
221
+ PreDefinedEvents = {
222
+ :begindrag => [WM_NOTIFY, HDN_BEGINDRAG, 'xs', NMHEADER],
223
+ :enddrag => [WM_NOTIFY, HDN_ENDDRAG, 'xs', NMHEADER],
224
+ :filterchange => [WM_NOTIFY, HDN_FILTERCHANGE, 'xs', NMHEADER],
225
+ :filterbtnclick => [WM_NOTIFY, HDN_FILTERBTNCLICK, 'xs', NMHEADER],
226
+ :itemchanging => [WM_NOTIFY, HDN_ITEMCHANGING, 'xs', NMHEADER],
227
+ :itemchanged => [WM_NOTIFY, HDN_ITEMCHANGED, 'xs', NMHEADER],
228
+ :itemclick => [WM_NOTIFY, HDN_ITEMCLICK, 'xs', NMHEADER],
229
+ :itemdblclick => [WM_NOTIFY, HDN_ITEMDBLCLICK, 'xs', NMHEADER],
230
+ :dividerdblclick => [WM_NOTIFY, HDN_DIVIDERDBLCLICK, 'xs', NMHEADER],
231
+ :begintrack => [WM_NOTIFY, HDN_BEGINTRACK, 'xs', NMHEADER],
232
+ :endtrack => [WM_NOTIFY, HDN_ENDTRACK, 'xs', NMHEADER],
233
+ :track => [WM_NOTIFY, HDN_TRACK, 'xs', NMHEADER],
234
+ :getdispinfo => [WM_NOTIFY, HDN_GETDISPINFO, 'xs', NMHEADER]
235
+ }
236
+
237
+ # ( Nothing )
238
+ DefaultEvents = []
239
+
240
+ class Item # Wrapper of HDITEM and index
241
+ include RC
242
+
243
+ ItemFormats = {
244
+ :left => HDF_LEFT,
245
+ :right => HDF_RIGHT,
246
+ :center => HDF_CENTER,
247
+ :justifymask => HDF_JUSTIFYMASK,
248
+ :rtlreading => HDF_RTLREADING,
249
+ :ownerdraw => HDF_OWNERDRAW,
250
+ :string => HDF_STRING,
251
+ :bitmap => HDF_BITMAP,
252
+ :bitmap_on_right => HDF_BITMAP_ON_RIGHT,
253
+ :image => HDF_IMAGE,
254
+ :sortup => HDF_SORTUP,
255
+ :sortdown => HDF_SORTDOWN,
256
+ :checkbox => HDF_CHECKBOX,
257
+ :checked => HDF_CHECKED,
258
+ :fixedwidth => HDF_FIXEDWIDTH,
259
+ :splitbutton => HDF_SPLITBUTTON
260
+ }
261
+
262
+ def self.[](*args) self.new(*args); end
263
+
264
+ def initialize(*args)
265
+ @owner = args.shift if args[0].is_a?(RWin::Window)
266
+ @index = args.shift
267
+ if args.empty?
268
+ @hditem = HDITEM.new
269
+ return # hold only index
270
+ end
271
+ fmt = 0
272
+ while args.last.is_a?(Symbol)
273
+ fmt |= ItemFormats[args.pop].to_i
274
+ end
275
+ str, cxy, iimage = args
276
+ @hditem = HDITEM[HDI_TEXT | HDI_FORMAT | HDI_WIDTH | HDI_IMAGE*(iimage ? 1 : 0),
277
+ cxy.to_i, str.to_s, 0, str.size, fmt]
278
+ hditem.iImage = iimage.to_i
279
+ end
280
+
281
+ def owner=(win)
282
+ @owner = win
283
+ end
284
+ def owner()
285
+ @owner
286
+ end
287
+
288
+ def index=(idx)
289
+ @index=idx
290
+ end
291
+ def index()
292
+ @index
293
+ end
294
+
295
+ def format=(*args)
296
+ fmt=0
297
+ while args.last.is_a?(Symbol)
298
+ fmt |= ItemFormats[args.pop].to_i
299
+ end
300
+ fmt |= args[0] unless args.empty?
301
+ if @owner.alive?
302
+ @hditem.mask = HDI_FORMAT
303
+ @hditem.fmt = fmt
304
+ update
305
+ else
306
+ @format=fmt
307
+ end
308
+ end
309
+ def format()
310
+ if @owner.alive?
311
+ @hditem.mask = HDI_FORMAT
312
+ SendMessage(HDM_GETITEM, @index, @hditem)
313
+ @hditem.fmt
314
+ else
315
+ @format
316
+ end
317
+ end
318
+
319
+ def text=(str)
320
+ @hditem.mask = HDI_TEXT
321
+ @hditem.pszText = str.to_s
322
+ @hditem.cchTextMax = str.size
323
+ @owner.SendMessage(HDM_SETITEM, @index, @hditem)
324
+ end
325
+ def text()
326
+ @hditem.mask = HDI_TEXT
327
+ buff = TCHAR[260]
328
+ @hditem.cchTextMax = buff.size
329
+ @hditem.pszText = buff
330
+ @owner.SendMessage(HDM_GETITEM, @index, @hditem)
331
+ buff.to_s
332
+ end
333
+
334
+ def image=(idx)
335
+ @hditem.mask = HDI_IMAGE
336
+ @hditem.iImage = idx.to_i
337
+ @owner.SendMessage(HDM_SETITEM, @index, @hditem)
338
+ end
339
+ def imgage()
340
+ @hditem.mask = HDI_IMAGE
341
+ @owner.SendMessage(HDM_GETITEM, @index, @hditem)
342
+ @hditem.iImage
343
+ end
344
+
345
+ def data=(dt)
346
+ @hditem.mask = HDI_LPARAM
347
+ @owner.SendMessage(HDM_GETITEM, @index, @hditem)
348
+ lparam = @hditem.lParam
349
+ if (lparam&1)==0 && lparam>NilID
350
+ data = ObjectSpace._id2ref(lparam)
351
+ if n = @owner._ar_data.index(data)
352
+ @owner._ar_data.delete_at(n)
353
+ end
354
+ end
355
+ @hditem.lParam = dt.__id__
356
+ @owner.SendMessage(HDM_SETITEM, @index, @hditem)
357
+ if (lparam&1)==0 && lparam>NilID
358
+ @owner._ar_data << data
359
+ end
360
+ end
361
+ def data()
362
+ @hditem.mask = HDI_LPARAM
363
+ @owner.SendMessage(HDM_GETITEM, @index, @hditem)
364
+ ObjectSpace._id2ref(@hditem.lParam)
365
+ end
366
+
367
+ def hditem()
368
+ @hditem
369
+ end
370
+ def update()
371
+ @owner.SendMessage(HDM_SETITEM, @index, @hditem)
372
+ end
373
+ end # class Item
374
+
375
+ ########################### Main ###########################
376
+
377
+ attr_reader :_ar_data
378
+ def initialize(*args)
379
+ super
380
+ @_classname = "SysHeader32"
381
+ @_acceptable_events = PreDefinedEvents.dup
382
+ @_ar_data = []
383
+ @_items = []
384
+ end
385
+
386
+ #
387
+ def create()
388
+ super
389
+ @_items.each_with_index{|val, idx| insert_item(idx, *val)}
390
+ self.imagelist = @_imagelist if @_imagelist
391
+ @_items = @_imagelist = nil
392
+ end
393
+
394
+ # Inserts item at specified args.<br>
395
+ # `formats' can be both an integer or some symbols.
396
+ def insert_item(index, text, width=nil, image=nil, *formats)
397
+ if alive?
398
+ fmt = formats[0].is_a?(Integer) ? formats[0] : 0
399
+ while formats.last.is_a?(Symbol) #; dpp args.last
400
+ fmt = fmt | HeaderFormats[formats.pop]
401
+ end
402
+ hditem = HDITEM[HDI_TEXT | HDI_FORMAT | HDI_WIDTH | HDI_IMAGE*(image ? 1 : 0),
403
+ width.to_i, text.to_s, 0, text.size, fmt]
404
+ hditem.iImage = image.to_i
405
+ SendMessage(HDM_INSERTITEM, index.to_i, hditem)
406
+ else
407
+ @_items[index] = text, width, image, *formats
408
+ end
409
+ end
410
+
411
+
412
+ # Deletes an item at specified index from this heder control.
413
+ def delete_item(index)
414
+ alive? ? SendMessage(HDM_DELETEITEM, index.to_i, 0) : @_items.delete_at(index)
415
+ end
416
+
417
+ # Retreives a Header::Item at specified index.
418
+ def fetch(index)
419
+ alive? ? Item.new(self, index) : @_items.fetch(index)
420
+ end
421
+
422
+ # Assignes an imagelist to this Header control.
423
+ def imagelist=(il)
424
+ if alive?
425
+ SendMessage(HDM_SETIMAGELIST, 0, il._himagelist)
426
+ else
427
+ @_imagelist = il
428
+ end
429
+ end
430
+
431
+ # Gets an imagelist assigned to this Header control.
432
+ def imagelist()
433
+ alive? ? APP.hrsc2ref(SendMessage(HDM_GETIMAGELIST, 0, 0)) : @_imagelist
434
+ end
435
+
436
+ # Not implemented yet
437
+ def data()
438
+ end
439
+ # Not implemented yet
440
+ def data=(arg)
441
+ end
442
+
443
+ protected
444
+ def _apply_options(arg)
445
+ if st = WinStyles[arg]
446
+ self.style |= st
447
+ return nil
448
+ end
449
+ super
450
+ end
451
+ end
452
+ end
453
+
454
+ module WR
455
+ class MyForm < Form
456
+ def initialize()
457
+ resize 400, 300
458
+ _<< Imagelist.loadb64(:iml, "JJMAIBAYAAwAAgACAACAAf7/f7/AsAYoBQkImnYAAAAACAIEAgRRAMAgQEAEEBQADAwCA2QEgQoAAAAAAAABANhAAAAICB6CAQEAc4BoQCwADAYDAACAgEiAH+AAA/4LoP9/wBzgIBALCEAMFH4MfwdfhD/CZ+FX8L34Z/w4fh5/EF+Iv8Sn4nfxTfiv/Fx+MH8ZX40/xufjl/Hd+Pf8gH5CfyJfkb/JJ+S38o4hmMxmMxmMAAAEQiEQiERJkEEQCilEsP1+v1+v4EAwKRHEsEARLWF8SqWHb7fb7fcEAEWg4JQyqABD/RCIR8CB4ICo9cQQUggfBAN9wQUggfCAJHr9cQmThAfBASESEMAoQFw4FR8MgYEBzlwhgOi33D4NFwCEAEMDAQiJ2pgiAQkCAH/DiCdT87tYgBTrRnmfP/KKAMExZ9/gAARgBgf/QZ+hX9D36OAEImj6jskAgaO1gGkgYBo7fSpGl8FI/6UP0s/pi/TX+nT9Pv6aJVRBqbgHwAH3AA4BBA+AQgHgIIA4DCAGBAgAgUJAwUPwEJR7/R7/gkDWaFwAepqFaMHAD4BCB+AgdTpIf5A=")
459
+
460
+ _<< Header[:hdr1, "header1", 10, 10, 360, 20, :buttons, :dragdrop, :checkboxes, :imagelist=>_.iml]
461
+ _.hdr1.accept_events :itemclick
462
+ _.hdr1.insert_item(0, "text1", 200, 0, :center)
463
+ _.hdr1.insert_item(1, "text2", 100, 1)
464
+ end
465
+
466
+ def created()
467
+ # _.hdr1.imagelist = @iml
468
+ end
469
+
470
+ def hdr1_itemclick(arg)
471
+ idx = arg.iItem
472
+ _.hdr1.fetch(idx).text += "#{idx}"
473
+ _.hdr1.fetch(idx).data = "#{idx}"
474
+ dpp _.hdr1.fetch(idx).data
475
+ _.hdr1.fetch(idx).image = 2
476
+ end
477
+ self.start
478
+ end
479
+ end if __FILE__==$0