w_uc_mod.srw 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417
  1. $PBExportHeader$w_uc_mod.srw
  2. forward
  3. global type w_uc_mod from w_publ_base
  4. end type
  5. type dw_1 from u_dw_uc_rbtnfilter within w_uc_mod
  6. end type
  7. type cb_1 from uo_imflatbutton within w_uc_mod
  8. end type
  9. type cb_2 from uo_imflatbutton within w_uc_mod
  10. end type
  11. type cb_3 from uo_imflatbutton within w_uc_mod
  12. end type
  13. type cb_4 from uo_imflatbutton within w_uc_mod
  14. end type
  15. type cb_5 from uo_imflatbutton within w_uc_mod
  16. end type
  17. type cb_6 from uo_imflatbutton within w_uc_mod
  18. end type
  19. type r_bar from rectangle within w_uc_mod
  20. end type
  21. type ln_bar from line within w_uc_mod
  22. end type
  23. type ln_bar2 from line within w_uc_mod
  24. end type
  25. end forward
  26. global type w_uc_mod from w_publ_base
  27. integer width = 3145
  28. integer height = 2380
  29. string title = "布局设置"
  30. boolean minbox = false
  31. windowtype windowtype = response!
  32. long backcolor = 134217738
  33. dw_1 dw_1
  34. cb_1 cb_1
  35. cb_2 cb_2
  36. cb_3 cb_3
  37. cb_4 cb_4
  38. cb_5 cb_5
  39. cb_6 cb_6
  40. r_bar r_bar
  41. ln_bar ln_bar
  42. ln_bar2 ln_bar2
  43. end type
  44. global w_uc_mod w_uc_mod
  45. type variables
  46. Long cur_type = -1
  47. Long uc_column_int
  48. Long cur_nomodify[]
  49. Long cur_start = 0
  50. String cur_win
  51. String dwoselect
  52. String cur_mod[]
  53. Long cur_resize = 0
  54. Long cur_select = 0
  55. Long ii_x_scroll,ii_y_scroll
  56. Long cur_x,cur_y
  57. String cur_chname[]
  58. long cur_chX[], cur_chY[]
  59. long cur_mainid
  60. long cur_dragX, cur_dragY
  61. end variables
  62. forward prototypes
  63. public subroutine wf_open ()
  64. public subroutine wf_aoto_taborder ()
  65. public function integer wf_get_max (integer arg_type)
  66. public subroutine wf_show (integer arg_show[])
  67. public subroutine wf_get_columnname (ref string arg_name[])
  68. public function integer wf_get_max (integer arg_type, integer arg_long[])
  69. end prototypes
  70. public subroutine wf_open ();
  71. long nColumnCount,nColumnIndex
  72. string des_1,des_2,des_3,szColumn,ls_pkcolname
  73. string ls_name
  74. nColumnCount = Integer( dw_1.Object.DataWindow.Column.Count)
  75. ls_name = dw_1.describe("DataWindow.Objects")
  76. string ls_a[]
  77. long i=0
  78. do while pos(ls_name,'~t') > 1
  79. i++
  80. ls_a[i] = mid(ls_name,1,pos(ls_name,'~t') -1)
  81. ls_name = mid(ls_name,pos(ls_name,'~t') + 1,len(ls_name))
  82. loop
  83. i++
  84. ls_a[i] = ls_name
  85. FOR i= 1 to upperbound(ls_a)
  86. des_1 = ls_a[i]
  87. dw_1.modify(des_1+'.moveable = 1')
  88. dw_1.modify(des_1+'.resizeable = 1')
  89. dw_1.modify(des_1+'.border = 2')
  90. // dw_1.modify(des_1+'.color = 255')
  91. next
  92. end subroutine
  93. public subroutine wf_aoto_taborder ();Long nColumnIndex,nColumnCount,lRow,ls_i,i = 1
  94. String des_1,des_2,szColumn,str
  95. String Name[]
  96. Long ll_x[],ll_y[],ll_width[],ll_height[]
  97. Long ll_count
  98. //获取所有可以编辑的字段名称、横纵坐标
  99. nColumnCount = Integer( dw_1.Object.DataWindow.Column.Count)
  100. FOR nColumnIndex = 1 TO nColumnCount
  101. des_1 = dw_1.DESCRIBE( "#" + String(nColumnIndex) + ".Name")
  102. des_2 = dw_1.DESCRIBE(des_1+ "_t.Text")
  103. szColumn = f_strip( des_2)
  104. IF Long(dw_1.DESCRIBE(des_1+ ".Visible")) = 1 AND Long(dw_1.DESCRIBE(des_1+ ".x")) > 0 THEN
  105. IF nColumnIndex <= uc_column_int THEN
  106. Name[i] = des_1
  107. ll_x[i] = Long(dw_1.DESCRIBE(des_1+ ".x"))
  108. ll_y[i] = Long(dw_1.DESCRIBE(des_1+ ".y"))
  109. ll_width[i] = Long(dw_1.DESCRIBE(des_1+ ".width"))
  110. ll_height[i] = Long(dw_1.DESCRIBE(des_1+ ".height"))
  111. i++
  112. END IF
  113. END IF
  114. NEXT
  115. //////----------------------------
  116. ll_count = i - 1
  117. Long Min,minnub
  118. Long newx[],j = 1,ll_cnt,ll_t,midx[],k,ll_null[]
  119. String newname[],ls_t,midname[]
  120. String ls_null[]
  121. cnt:
  122. //找出纵坐标最小字段
  123. Min = ll_y[1]
  124. minnub = 1
  125. FOR i = 2 TO ll_count
  126. IF Min <= ll_y[i] THEN
  127. ELSE
  128. Min = ll_y[i]
  129. minnub = i
  130. END IF
  131. NEXT
  132. ////////////--------------------------
  133. //找出与最少纵坐标字段同行的所有字段
  134. j = 1
  135. FOR i = 1 TO ll_count
  136. IF ll_y[i] >= ll_y[minnub] AND ll_y[i] <= (ll_height[minnub] +ll_y[minnub]) THEN
  137. midname[j] = Name[i]
  138. midx[j] = ll_x[i]
  139. j++
  140. END IF
  141. NEXT
  142. ll_cnt = j -1
  143. /////-------------------------------
  144. //将同行的字段进行排序(按横坐标大小)
  145. FOR i = 1 TO ll_cnt - 1
  146. FOR j = i + 1 TO ll_cnt
  147. IF midx[i] < midx[j] THEN
  148. ELSE
  149. ll_t = midx[i]
  150. midx[i] = midx[j]
  151. midx[j] = ll_t
  152. ls_t = midname[i]
  153. midname[i] = midname[j]
  154. midname[j] = ls_t
  155. END IF
  156. NEXT
  157. NEXT
  158. ////////////----------------------------
  159. //删除已经排序的字段
  160. //FOR i = 1 TO ll_count
  161. // FOR j = 1 TO ll_cnt
  162. // IF Name[i] = midname[j] THEN
  163. // FOR k = i TO ll_count -1
  164. // Name[k] = Name[k+1]
  165. // ll_x[k] = ll_x[k+1]
  166. // ll_y[k] = ll_y[k+1]
  167. // ll_width[k] = ll_width[k+1]
  168. // ll_height[k] = ll_height[k+1]
  169. // NEXT
  170. // ll_count --
  171. // END IF
  172. // NEXT
  173. //NEXT
  174. FOR i = 1 TO ll_count
  175. FOR j = 1 TO ll_cnt
  176. IF Name[i] = midname[j] THEN
  177. Name[i] = ''
  178. k++
  179. END IF
  180. NEXT
  181. NEXT
  182. j = 0
  183. FOR i = ll_count TO 1 STEP -1
  184. IF Name[i] = '' THEN
  185. FOR k = i TO ll_count -1
  186. Name[k] = Name[k+1]
  187. ll_x[k] = ll_x[k+1]
  188. ll_y[k] = ll_y[k+1]
  189. ll_width[k] = ll_width[k+1]
  190. ll_height[k] = ll_height[k+1]
  191. NEXT
  192. j++
  193. END IF
  194. NEXT
  195. ll_count = ll_count - j
  196. ////////----------------------------
  197. //将排好序的一行字段,放入目的数组,清空临时数组
  198. Long ll_bnd
  199. ll_bnd = UpperBound(newname)
  200. FOR i = 1 TO ll_cnt
  201. newname[ll_bnd + i] = midname[i]
  202. NEXT
  203. midname[] = ls_null[]
  204. midx[] = ll_null[]
  205. ////////////-----------------------------------
  206. IF ll_count > 0 THEN
  207. GOTO cnt
  208. END IF
  209. Long aaa
  210. String ls_taborder_auto = ''
  211. FOR i = 1 TO UpperBound(newname)
  212. ls_taborder_auto = ls_taborder_auto + newname[i]+".Tabsequence="+String(i * 10)+'~t'
  213. NEXT
  214. String ls_data
  215. ls_data = dw_1.DataObject
  216. /////保存taporder
  217. UPDATE sys_user_dwnSyntax
  218. SET dwnSyntax_layout_column_taporder = :ls_taborder_auto
  219. WHERE empid = :sys_empid
  220. AND dwname = :ls_data;
  221. IF sqlca.SQLCode = 0 THEN
  222. IF sqlca.SQLNRows = 0 THEN
  223. INSERT INTO sys_user_dwnSyntax
  224. (empid,
  225. dwname,
  226. dwnSyntax_filter,
  227. dwnSyntax_sort,
  228. dwnSyntax_layout_column_visible,
  229. dwnSyntax_layout_column_width,
  230. dwnSyntax_layout_column_alignment,
  231. dwnSyntax_layout_column_pos,
  232. dwnSyntax_layout_column_edit,
  233. dwnSyntax_layout_column_font,
  234. dwnSyntax_layout_column_height,
  235. dwnSyntax_layout_column_taporder)
  236. Values(:publ_userid,:ls_data,'','','','','','','','','',:ls_taborder_auto);
  237. END IF
  238. END IF
  239. COMMIT;
  240. /////////////////////////
  241. //messagebox('',ls_taborder_auto)
  242. dw_1.ins_mdfstr_column_taporder = ls_taborder_auto
  243. MessageBox('提示','OK')
  244. end subroutine
  245. public function integer wf_get_max (integer arg_type);//wf_get_max()
  246. Long nColumnIndex,nColumnCount,lRow,ls_i,j = 1
  247. String des_1,des_2,szColumn,str
  248. Long ll_x[200],ll_y[200],ll_width[200],ll_height[200]
  249. //获取所有可以编辑的字段名称、横纵坐标
  250. String des_3,ls_pkcolname
  251. String ls_name
  252. nColumnCount = Integer( dw_1.Object.DataWindow.Column.Count)
  253. ls_name = dw_1.Describe("DataWindow.Objects")
  254. String ls_a[]
  255. Long i = 0
  256. DO WHILE Pos(ls_name,'~t') > 1
  257. i++
  258. ls_a[i] = Mid(ls_name,1,Pos(ls_name,'~t') -1)
  259. ls_name = Mid(ls_name,Pos(ls_name,'~t') + 1,Len(ls_name))
  260. LOOP
  261. i++
  262. ls_a[i] = ls_name
  263. FOR i = 1 To UpperBound(ls_a)
  264. des_1 = ls_a[i]
  265. IF Long(dw_1.Describe(des_1+'.visible')) = 1 THEN
  266. ll_x[j] = Long(dw_1.Describe(des_1+'.x'))
  267. ll_y[j] = Long(dw_1.Describe(des_1+'.y'))
  268. ll_width[j] = Long(dw_1.Describe(des_1+'.width'))
  269. ll_height[j] = Long(dw_1.Describe(des_1+'.height'))
  270. j++
  271. END IF
  272. NEXT
  273. Long ll_maxwid,ll_maxhig
  274. ll_maxwid = ll_x[1] + ll_width[1]
  275. FOR i = 2 To j -1
  276. IF ll_maxwid < ll_x[i] + ll_width[i] THEN
  277. ll_maxwid = ll_x[i] + ll_width[i]
  278. END IF
  279. NEXT
  280. ll_maxhig = ll_y[1] + ll_height[1]
  281. FOR i = 2 To j -1
  282. IF ll_maxhig < ll_y[i] + ll_height[i] THEN
  283. ll_maxhig = ll_y[i] + ll_height[i]
  284. END IF
  285. NEXT
  286. IF arg_type = 1 THEN
  287. RETURN ll_maxwid + 50
  288. ELSEIF arg_type = 2 THEN
  289. RETURN ll_maxhig + 50
  290. END IF
  291. end function
  292. public subroutine wf_show (integer arg_show[]);IF UpperBound(arg_show) <= 0 THEN RETURN
  293. Long i,ll_maxw,ll_maxh,ll_x,ll_y,ll_width,ll_height,ll_with_t,ll_x_t
  294. long j,ld_x,ld_y,ld_width,ld_height,ld_with_t,ld_x_t,k= 0
  295. String arg_name[]
  296. FOR i = 1 TO UpperBound(arg_show)
  297. ll_maxh = wf_get_max(2)
  298. wf_get_columnname(arg_name)
  299. ll_x = Long(dw_1.DESCRIBE(arg_name[arg_show[i]]+'.x'))
  300. ll_x_t = Long(dw_1.DESCRIBE(arg_name[arg_show[i]]+'_t.x'))
  301. ll_y = Long(dw_1.DESCRIBE(arg_name[arg_show[i]]+'.y'))
  302. ll_width = Long(dw_1.DESCRIBE(arg_name[arg_show[i]]+'.width'))
  303. ll_with_t = Long(dw_1.DESCRIBE(arg_name[arg_show[i]]+'_t.width'))
  304. ll_height = Long(dw_1.DESCRIBE(arg_name[arg_show[i]]+'.height'))
  305. k= 0
  306. for j = 1 TO UpperBound(arg_name)
  307. if arg_name[j] = arg_name[arg_show[i]] then continue
  308. ld_x = Long(dw_1.DESCRIBE(arg_name[j]+'.x'))
  309. ld_x_t = Long(dw_1.DESCRIBE(arg_name[j]+'_t.x'))
  310. ld_y = Long(dw_1.DESCRIBE(arg_name[j]+'.y'))
  311. ld_width = Long(dw_1.DESCRIBE(arg_name[j]+'.width'))
  312. ld_with_t = Long(dw_1.DESCRIBE(arg_name[j]+'_t.width'))
  313. ld_height = Long(dw_1.DESCRIBE(arg_name[j]+'.height'))
  314. if ld_y < ll_y and ld_y + ld_height > ll_y or ld_y > ll_y and ld_y < ll_y + ll_height then
  315. if ll_x_t > ld_x + ld_width or ld_x_t > ll_x + ll_width then
  316. goto ext
  317. end if
  318. else
  319. k++
  320. end if
  321. next
  322. if k + 1 = UpperBound(arg_name) then goto ext
  323. IF ll_maxh - 35 + ll_height > dw_1.Height THEN
  324. IF ll_maxh - 35 + ll_height < THIS.Height - 300 THEN
  325. IF i > 1 THEN
  326. IF Long(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.x')) + Long(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.width')) &
  327. + 20 + Long(dw_1.DESCRIBE(arg_name[arg_show[i]]+'_t.width')) + Long(dw_1.DESCRIBE(arg_name[arg_show[i]]+'.width')) &
  328. <= dw_1.Width THEN
  329. dw_1.Modify(arg_name[arg_show[i]]+'.y ='+String(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.y')))
  330. dw_1.Modify(arg_name[arg_show[i]]+'.x ='+String(Long(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.x')) + Long(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.width')) + 20 +ll_with_t))
  331. dw_1.Modify(arg_name[arg_show[i]]+'_t.y ='+String(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.y')))
  332. dw_1.Modify(arg_name[arg_show[i]]+'_t.x ='+String(Long(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.x')) + Long(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.width')) + 20))
  333. ELSE
  334. dw_1.Modify(arg_name[arg_show[i]]+'.y ='+String(ll_maxh - 35))
  335. dw_1.Modify(arg_name[arg_show[i]]+'.x ='+String(ll_with_t + 10))
  336. dw_1.Modify(arg_name[arg_show[i]]+'_t.y ='+String(ll_maxh - 35))
  337. dw_1.Modify(arg_name[arg_show[i]]+'_t.x ='+String(5))
  338. dw_1.Height = ll_maxh - 15 + ll_height -200
  339. END IF
  340. ELSE
  341. dw_1.Modify(arg_name[arg_show[i]]+'.y ='+String(ll_maxh - 35))
  342. dw_1.Modify(arg_name[arg_show[i]]+'.x ='+String(ll_with_t + 10))
  343. dw_1.Modify(arg_name[arg_show[i]]+'_t.y ='+String(ll_maxh - 35))
  344. dw_1.Modify(arg_name[arg_show[i]]+'_t.x ='+String(5))
  345. dw_1.Height = ll_maxh - 15 + ll_height -200
  346. END IF
  347. END IF
  348. ELSE
  349. IF i > 1 THEN
  350. IF Long(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.x')) + Long(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.width')) &
  351. + 20 + Long(dw_1.DESCRIBE(arg_name[arg_show[i]]+'_t.width')) + Long(dw_1.DESCRIBE(arg_name[arg_show[i]]+'.width')) &
  352. <= dw_1.Width THEN
  353. dw_1.Modify(arg_name[arg_show[i]]+'.y ='+String(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.y')))
  354. dw_1.Modify(arg_name[arg_show[i]]+'.x ='+String(Long(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.x')) + Long(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.width')) + 20 +ll_with_t))
  355. dw_1.Modify(arg_name[arg_show[i]]+'_t.y ='+String(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.y')))
  356. dw_1.Modify(arg_name[arg_show[i]]+'_t.x ='+String(Long(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.x')) + Long(dw_1.DESCRIBE(arg_name[arg_show[i - 1]]+'.width')) + 20))
  357. ELSE
  358. dw_1.Modify(arg_name[arg_show[i]]+'.y ='+String(ll_maxh - 35))
  359. dw_1.Modify(arg_name[arg_show[i]]+'.x ='+String(ll_with_t + 10))
  360. dw_1.Modify(arg_name[arg_show[i]]+'_t.y ='+String(ll_maxh - 35))
  361. dw_1.Modify(arg_name[arg_show[i]]+'_t.x ='+String(5))
  362. END IF
  363. ELSE
  364. dw_1.Modify(arg_name[arg_show[i]]+'.y ='+String(ll_maxh - 35))
  365. dw_1.Modify(arg_name[arg_show[i]]+'.x ='+String(ll_with_t + 10))
  366. dw_1.Modify(arg_name[arg_show[i]]+'_t.y ='+String(ll_maxh - 35))
  367. dw_1.Modify(arg_name[arg_show[i]]+'_t.x ='+String(5))
  368. END IF
  369. END IF
  370. ext:
  371. NEXT
  372. end subroutine
  373. public subroutine wf_get_columnname (ref string arg_name[]);long nColumnIndex,nColumnCount,lRow,ls_i,i= 0
  374. string ls_name[],des_1,des_2,szColumn
  375. s_dw_uc_rbtnfilter_setlayout_rt ls_s_rt
  376. nColumnCount = Integer( dw_1.Object.DataWindow.Column.Count)
  377. For nColumnIndex = 1 To nColumnCount
  378. des_1= dw_1.Describe( "#" + String(nColumnIndex) + ".Name")
  379. des_2= dw_1.describe(des_1+ "_t.Text")
  380. szColumn = f_strip( des_2)
  381. If szColumn <> "!" Then
  382. i++
  383. ls_name[nColumnIndex] = des_1
  384. end if
  385. next
  386. arg_name = ls_name
  387. //return ls_name
  388. end subroutine
  389. public function integer wf_get_max (integer arg_type, integer arg_long[]);//wf_get_max()
  390. Long nColumnIndex,nColumnCount,lRow,ls_i,j = 1
  391. String des_1,des_2,szColumn,str
  392. Long ll_x[200],ll_y[200],ll_width[200],ll_height[200]
  393. //获取所有可以编辑的字段名称、横纵坐标
  394. String des_3,ls_pkcolname
  395. String ls_name
  396. nColumnCount = Integer( dw_1.Object.DataWindow.Column.Count)
  397. ls_name = dw_1.Describe("DataWindow.Objects")
  398. String ls_a[]
  399. Long i = 0
  400. //do while pos(ls_name,'~t') > 1
  401. // i++
  402. // ls_a[i] = mid(ls_name,1,pos(ls_name,'~t') -1)
  403. // ls_name = mid(ls_name,pos(ls_name,'~t') + 1,len(ls_name))
  404. //loop
  405. //
  406. //i++
  407. //ls_a[i] = ls_name
  408. wf_get_columnname(ls_a)
  409. FOR i = 1 To UpperBound(ls_a)
  410. des_1 = ls_a[i]
  411. // if long(dw_1.describe(des_1+'.visible')) = 1 then
  412. ll_x[j] = Long(dw_1.Describe(des_1+'.x'))
  413. ll_y[j] = Long(dw_1.Describe(des_1+'.y'))
  414. ll_width[j] = Long(dw_1.Describe(des_1+'.width'))
  415. ll_height[j] = Long(dw_1.Describe(des_1+'.height'))
  416. j++
  417. // end if
  418. NEXT
  419. Long ll_maxwid,ll_maxhig,k
  420. ll_maxwid = ll_x[1] + ll_width[1]
  421. FOR i = 2 To j -1
  422. FOR k = 1 To UpperBound(arg_long)
  423. IF i = arg_long[k] THEN
  424. GOTO ext1
  425. END IF
  426. NEXT
  427. IF ll_maxwid < ll_x[i] + ll_width[i] THEN
  428. ll_maxwid = ll_x[i] + ll_width[i]
  429. END IF
  430. ext1:
  431. NEXT
  432. ll_maxhig = ll_y[1] + ll_height[1]
  433. FOR i = 2 To j -1
  434. FOR k = 1 To UpperBound(arg_long)
  435. IF i = arg_long[k] THEN
  436. GOTO ext2
  437. END IF
  438. NEXT
  439. IF ll_maxhig < ll_y[i] + ll_height[i] THEN
  440. ll_maxhig = ll_y[i] + ll_height[i]
  441. END IF
  442. ext2:
  443. NEXT
  444. IF arg_type = 1 THEN
  445. RETURN ll_maxwid + 50
  446. ELSEIF arg_type = 2 THEN
  447. RETURN ll_maxhig + 50
  448. END IF
  449. end function
  450. on w_uc_mod.create
  451. int iCurrent
  452. call super::create
  453. this.dw_1=create dw_1
  454. this.cb_1=create cb_1
  455. this.cb_2=create cb_2
  456. this.cb_3=create cb_3
  457. this.cb_4=create cb_4
  458. this.cb_5=create cb_5
  459. this.cb_6=create cb_6
  460. this.r_bar=create r_bar
  461. this.ln_bar=create ln_bar
  462. this.ln_bar2=create ln_bar2
  463. iCurrent=UpperBound(this.Control)
  464. this.Control[iCurrent+1]=this.dw_1
  465. this.Control[iCurrent+2]=this.cb_1
  466. this.Control[iCurrent+3]=this.cb_2
  467. this.Control[iCurrent+4]=this.cb_3
  468. this.Control[iCurrent+5]=this.cb_4
  469. this.Control[iCurrent+6]=this.cb_5
  470. this.Control[iCurrent+7]=this.cb_6
  471. this.Control[iCurrent+8]=this.r_bar
  472. this.Control[iCurrent+9]=this.ln_bar
  473. this.Control[iCurrent+10]=this.ln_bar2
  474. end on
  475. on w_uc_mod.destroy
  476. call super::destroy
  477. destroy(this.dw_1)
  478. destroy(this.cb_1)
  479. destroy(this.cb_2)
  480. destroy(this.cb_3)
  481. destroy(this.cb_4)
  482. destroy(this.cb_5)
  483. destroy(this.cb_6)
  484. destroy(this.r_bar)
  485. destroy(this.ln_bar)
  486. destroy(this.ln_bar2)
  487. end on
  488. event open;call super::open;s_dw_uc_modify s_modify
  489. s_modify = Message.PowerObjectParm
  490. if sys_power_issuper then
  491. else
  492. cb_6.visible = false
  493. cb_exit.x = cb_6.x
  494. end if
  495. Long ll_billid,ll_scid
  496. dw_1.DataObject = s_modify.datawinname_uc
  497. uc_column_int = s_modify.uc_column_int
  498. cur_win = s_modify.win
  499. cur_mainid = s_modify.mainid
  500. dw_1.Width = s_modify.uc_width
  501. dw_1.Height = s_modify.uc_height
  502. cur_mod = s_modify.nomod
  503. cur_start = 1
  504. dw_1.Object.datawindow.detail.Height = 2000
  505. dw_1.Object.datawindow.detail.Height.AutoSize = TRUE
  506. dw_1.TriggerEvent(Constructor!)
  507. dw_1.SetTransObject(sqlca)
  508. cur_resize = 1
  509. wf_open()
  510. end event
  511. event close;call super::close;s_resize s_size
  512. s_size.backtype = cur_type
  513. s_size.Width = dw_1.Width
  514. s_size.Height = dw_1.Height
  515. CloseWithReturn(THIS,s_size)
  516. end event
  517. event key;call super::key;//if key=Keyleftarrow! or key=Keyrightarrow! or key=Keyuparrow! or key=Keydownarrow! then
  518. //
  519. //end if
  520. end event
  521. event resize;call super::resize;ln_bar.EndX = THIS.Width
  522. ln_bar2.EndX = THIS.Width
  523. r_bar.Width = THIS.Width
  524. end event
  525. type cb_func from w_publ_base`cb_func within w_uc_mod
  526. boolean visible = false
  527. string text = "工具"
  528. end type
  529. type cb_exit from w_publ_base`cb_exit within w_uc_mod
  530. integer x = 1481
  531. integer width = 151
  532. integer height = 164
  533. integer picsize = 16
  534. toolbaralignment pic_align = alignattop!
  535. boolean border = false
  536. end type
  537. event cb_exit::clicked;//不保存布局
  538. cur_type = -1
  539. close(parent)
  540. end event
  541. type dw_1 from u_dw_uc_rbtnfilter within w_uc_mod
  542. event ue_lbuttonup pbm_dwnrbuttonup
  543. event mousemove pbm_mousemove
  544. integer y = 184
  545. integer width = 3026
  546. integer height = 1724
  547. integer taborder = 20
  548. boolean bringtotop = true
  549. boolean resizable = true
  550. boolean livescroll = false
  551. borderstyle borderstyle = styleraised!
  552. end type
  553. event ue_lbuttonup;////string ls_name
  554. ////long ll_y,ll_x
  555. ////
  556. ////ls_name = dwo.name
  557. ////ll_x = long(this.describe(ls_name+'.x')) + long(this.describe(ls_name+'.width'))
  558. ////ll_y = long(this.describe(ls_name+'.y')) + long(this.describe(ls_name+'.height'))
  559. ////
  560. ////if (ll_x +50 > this.width) or (ll_y + 50 > this.height + this.y) then
  561. //// messagebox('','控件不能移出窗口范围!')
  562. ////end if
  563. //
  564. ////messagebox(string(xpos),string(ypos))
  565. //
  566. ////xpos=xpos+ii_x_scroll
  567. ////ypos=ypos+ii_y_scroll
  568. ////
  569. ////messagebox(string(ii_x_scroll),string(ii_y_scroll))
  570. //if (xpos=cur_x and ypos=cur_y) or ((KeyDown(Keyshift!) or KeyDown(KeyControl!)) ) then
  571. //else
  572. //long i ,ll_x,ll_y
  573. //long ll_wid,ll_hig
  574. //string ls_name
  575. //if cur_select <= 0 then return
  576. //ls_name = dwo.name
  577. //ll_x = long(this.describe(ls_name+'.x'))
  578. //ll_y = long(this.describe(ls_name+'.y'))
  579. //ll_wid = ll_x - cur_x
  580. //ll_hig = ll_y - cur_y
  581. //
  582. //long lx,ly
  583. //for i =1 to cur_select
  584. // if cur_chname[i] <> ls_name then
  585. // lx = long(this.describe(cur_chname[i]+'.x'))
  586. // this.modify(cur_chname[i]+'.x = '+string(lx + ll_wid ))
  587. // ly = long(this.describe(cur_chname[i]+'.y'))
  588. // this.modify(cur_chname[i]+'.y = '+string(ly + ll_hig ))
  589. // end if
  590. //next
  591. //end if
  592. this.triggerevent(resize!)
  593. end event
  594. event mousemove;IF flags = 1 THEN
  595. // st_1.text = 'x:'+string(xpos) + 'dragX:'+string(cur_dragX) + ' = '+ string(xpos - cur_dragX) &
  596. // + ' y:'+string(ypos) + ' dragY:'+string(cur_dragY) + ' = '+ string(ypos - cur_dragY)
  597. Long ll_x, ll_y, ll_x_add, ll_y_add
  598. ll_x_add = xpos - cur_dragX
  599. ll_y_add = ypos - cur_dragY
  600. Long i
  601. String ls_name
  602. FOR i = 1 To cur_select
  603. ls_name = cur_chname[i]
  604. // ll_x = Long(This.Describe(ls_name+'.x'))
  605. ll_x = cur_chX[i] + ll_x_add
  606. // ll_y = Long(This.Describe(ls_name+'.y'))
  607. ll_y = cur_chY[i] + ll_y_add
  608. IF ll_x > 0 And ll_y > 0 THEN
  609. This.Modify(ls_name+'.x ='+String(ll_x))
  610. This.Modify(ls_name+'.y ='+String(ll_y))
  611. END IF
  612. NEXT
  613. return 1
  614. ELSE
  615. cur_dragX = xpos
  616. cur_dragY = ypos
  617. //elseif flags = 2 then
  618. // st_1.text = ' y:'+string(ypos) + 'x:'+string(xpos)
  619. END IF
  620. end event
  621. event ue_setlayout;IF setcolumn_visible_USE = FALSE THEN RETURN
  622. IF THIS.DataObject = '' THEN RETURN
  623. //设定不能隐藏的项目
  624. //wf_set_modify()
  625. //读取每列顺序
  626. THIS.TriggerEvent('ue_taborder')
  627. IF THIS.ins_if_nomodify_uc_taborder THEN
  628. THIS.uf_reset_layout(uc_column_int)
  629. END IF
  630. /////////////////////////
  631. datastore ls_ds
  632. ls_ds = CREATE datastore
  633. ls_ds.DataObject = 'dw_uc_rbtnfilter_setlayout_grid'
  634. String ls_mdfstr,ls_mdftext_str,ls_titlex_str,ls_titley_str,ls_x_str,ls_y_str //存放modify string
  635. String des_1,des_2,szColumn,ls_cwidth,ls_alignment,ls_cheight,ls_taporder
  636. Long nColumnIndex,nColumnCount,lRow,ls_i,i
  637. s_dw_uc_rbtnfilter_setlayout_rt ls_s_rt
  638. nColumnCount = Integer( THIS.Object.DataWindow.Column.Count)
  639. String arg_msg
  640. IF f_set_nomod(THIS.DataObject,cur_mod,arg_msg) = 0 THEN
  641. MessageBox('提示',arg_msg)
  642. RETURN
  643. END IF
  644. FOR nColumnIndex = 1 TO nColumnCount
  645. des_1 = THIS.Describe( "#" + String(nColumnIndex) + ".Name")
  646. des_2 = THIS.Describe(des_1+ "_t.Text")
  647. szColumn = f_strip( des_2)
  648. IF szColumn <> "!" THEN
  649. lRow = ls_ds.InsertRow( 0)
  650. ls_ds.SetItem( lRow, "ctitle", szColumn)
  651. ls_ds.SetItem( lRow, "cname", This.Describe( des_1 + ".dbname"))
  652. ls_ds.SetItem( lRow, "cshow_flag", Long(THIS.Describe(des_1+ ".Visible")))
  653. ls_ds.SetItem( lRow, "cnewtitle", THIS.Describe(des_1+ "_t.text"))
  654. ls_ds.SetItem( lRow, "cwidth", Long(THIS.Describe(des_1+ ".width")))
  655. ls_ds.SetItem( lRow, "cheight", Long(THIS.Describe(des_1+ ".height")))
  656. ls_ds.SetItem( lRow, "alignment", Long(THIS.Describe(des_1+ ".alignment")))
  657. ls_ds.SetItem( lRow, "nColumnIndex", nColumnIndex)
  658. ls_ds.SetItem( lRow, "titlex", Long(THIS.Describe(des_1+ "_t.x")))
  659. ls_ds.SetItem( lRow, "titley", Long(THIS.Describe(des_1+ "_t.y")))
  660. ls_ds.SetItem( lRow, "x", Long(THIS.Describe(des_1+ ".x")))
  661. ls_ds.SetItem( lRow, "y", Long(THIS.Describe(des_1+ ".y")))
  662. ls_ds.SetItem( lRow, "taporder", Long(THIS.Describe(des_1+ ".Tabsequence")))
  663. ls_ds.SetItem( lRow, "name", des_1)
  664. IF nColumnIndex <= uc_column_int THEN
  665. ls_ds.SetItem( lRow, "order_flag", 1)
  666. ELSE
  667. ls_ds.SetItem( lRow, "order_flag", 0)
  668. END IF
  669. cur_nomodify[nColumnIndex] = 0
  670. FOR i = 1 TO UpperBound(cur_mod)
  671. IF cur_mod[i] = des_1 THEN
  672. cur_nomodify[nColumnIndex] = 1
  673. GOTO ext
  674. ELSE
  675. cur_nomodify[nColumnIndex] = 0
  676. END IF
  677. NEXT
  678. ext:
  679. ls_ds.SetItem( lRow, "protect", cur_nomodify[nColumnIndex])
  680. END IF
  681. NEXT
  682. //---打开设置窗口
  683. OpenWithParm(w_dw_uc_rbtnfilter_setlayout,ls_ds)
  684. ls_s_rt = Message.PowerObjectParm
  685. //---处理设置
  686. string ls_ColName
  687. IF ls_s_rt.flag = 1 THEN //要保存修改
  688. ls_ds.SetFullState( ls_s_rt.b_changes )
  689. //ls_s_rt.dw.sharedata(ls_ds)
  690. FOR ls_i = 1 TO ls_ds.RowCount()
  691. ls_ColName = ls_ds.Object.name[ls_i]
  692. ls_mdfstr = ls_mdfstr+ls_ColName+'.visible='+String(ls_ds.Object.cshow_flag[ls_i])+'~t'
  693. ls_mdfstr = ls_mdfstr+ls_ColName+'_t.visible='+String(ls_ds.Object.cshow_flag[ls_i])+'~t'
  694. ls_mdftext_str = ls_mdftext_str+ls_ColName+"_t.text='"+ls_ds.Object.cnewtitle[ls_i]+"'~t"
  695. ls_titlex_str = ls_titlex_str+ls_ColName+"_t.x="+String(ls_ds.Object.titlex[ls_i])+'~t'
  696. ls_titley_str = ls_titley_str+ls_ColName+"_t.y="+String(ls_ds.Object.titley[ls_i])+'~t'
  697. ls_x_str = ls_x_str+ls_ColName+".x="+String(ls_ds.Object.X[ls_i])+'~t'
  698. ls_y_str = ls_y_str+ls_ColName+".y="+String(ls_ds.Object.Y[ls_i])+'~t'
  699. ls_cwidth = ls_cwidth+ls_ColName+".width="+String(ls_ds.Object.cwidth[ls_i])+'~t'
  700. ls_cheight = ls_cheight+ls_ColName+".height="+String(ls_ds.Object.cheight[ls_i])+'~t'
  701. ls_alignment = ls_alignment+ls_ColName+".alignment="+String(ls_ds.Object.Alignment[ls_i])+'~t'
  702. ls_taporder = ls_taporder +ls_ColName+".Tabsequence="+String(ls_ds.Object.taporder[ls_i])+'~t'
  703. NEXT
  704. ins_mdfstr_column_visible = ls_mdfstr
  705. ins_mdfstr_column_text = ls_mdftext_str
  706. ins_mdfstr_column_x = ls_titlex_str+ls_x_str
  707. ins_mdfstr_column_y = ls_titley_str+ls_y_str
  708. ins_mdfstr_column_width = ls_cwidth
  709. ins_mdfstr_column_alignment = ls_alignment
  710. ins_mdfstr_column_height = ls_cheight
  711. ins_mdfstr_column_taporder = ls_taporder
  712. string ls
  713. ls = THIS.Modify( ins_mdfstr_column_visible)
  714. ls = THIS.Modify(ins_mdfstr_column_text)
  715. ls = THIS.Modify(ins_mdfstr_column_width)
  716. ls = THIS.Modify(ins_mdfstr_column_x)
  717. ls = THIS.Modify(ins_mdfstr_column_y)
  718. ls = THIS.Modify(ins_mdfstr_column_alignment)
  719. ls = THIS.Modify(ins_mdfstr_column_height)
  720. // this.modify(ins_mdfstr_column_taporder)
  721. wf_show(ls_s_rt.Show)
  722. /////保存taborder
  723. UPDATE sys_user_dwnSyntax
  724. SET dwnSyntax_layout_column_taporder = :ins_mdfstr_column_taporder
  725. WHERE empid = :cardw_empid
  726. AND dwname = :cur_DataObject;
  727. IF sqlca.SQLCode = 0 THEN
  728. IF sqlca.SQLNRows = 0 THEN
  729. INSERT INTO sys_user_dwnSyntax
  730. (empid,
  731. dwname,
  732. dwnSyntax_filter,
  733. dwnSyntax_sort,
  734. dwnSyntax_layout_column_visible,
  735. dwnSyntax_layout_column_width,
  736. dwnSyntax_layout_column_alignment,
  737. dwnSyntax_layout_column_pos,
  738. dwnSyntax_layout_column_edit,
  739. dwnSyntax_layout_column_font,
  740. dwnSyntax_layout_column_height,
  741. dwnSyntax_layout_column_taporder)
  742. Values(:cardw_empid,:cur_DataObject,'','','','','','','','','',:ins_mdfstr_column_taporder);
  743. END IF
  744. COMMIT;
  745. END IF
  746. /////////////////////////
  747. ELSEIF ls_s_rt.flag = 2 THEN //reset
  748. uf_reset_layout(uc_column_int)
  749. uf_save_profile_layout()
  750. ELSEIF ls_s_rt.flag = 3 THEN //reset one
  751. uf_reset_layout_one(ls_s_rt.rownumber)
  752. uf_save_profile_layout()
  753. END IF
  754. //清除taborder
  755. THIS.TriggerEvent('c_taporder')
  756. DESTROY ls_ds
  757. end event
  758. event dwnkey;IF KeyDown(KeyF2!) THEN //save layout 不含列显示
  759. This.TriggerEvent('ue_setlayout')
  760. ELSEIF KeyDown(KeyF9!) THEN //save layout 全部重置,包括按钮等控件
  761. uf_reset_layout_all()
  762. END IF
  763. This.TriggerEvent('ue_taborder_cancel')
  764. //键盘操作触发事件
  765. Long ll_x,ll_y,ll_wid,ll_hig
  766. Long i
  767. String ls_name
  768. //st_1.text = ''
  769. IF Key = Keyleftarrow! Or Key = Keyrightarrow! Or Key = Keyuparrow! Or Key = Keydownarrow! THEN
  770. SetRedraw(False)
  771. CHOOSE CASE keyflags
  772. CASE 1
  773. CHOOSE CASE Key
  774. CASE Keyleftarrow!
  775. FOR i = 1 To cur_select
  776. ls_name = cur_chname[i]
  777. ll_wid = Long(This.Describe(ls_name+'.width'))
  778. ll_wid = ll_wid - 2
  779. This.Modify(ls_name+'.width ='+String(ll_wid))
  780. NEXT
  781. CASE Keyrightarrow!
  782. FOR i = 1 To cur_select
  783. ls_name = cur_chname[i]
  784. ll_wid = Long(This.Describe(ls_name+'.width'))
  785. ll_wid = ll_wid + 2
  786. This.Modify(ls_name+'.width ='+String(ll_wid))
  787. NEXT
  788. CASE Keyuparrow!
  789. FOR i = 1 To cur_select
  790. ls_name = cur_chname[i]
  791. ll_hig = Long(This.Describe(ls_name+'.height'))
  792. ll_hig = ll_hig - 2
  793. This.Modify(ls_name+'.height ='+String(ll_hig))
  794. NEXT
  795. CASE Keydownarrow!
  796. FOR i = 1 To cur_select
  797. ls_name = cur_chname[i]
  798. ll_hig = Long(This.Describe(ls_name+'.height'))
  799. ll_hig = ll_hig + 2
  800. This.Modify(ls_name+'.height ='+String(ll_hig))
  801. NEXT
  802. END CHOOSE
  803. CASE ELSE
  804. CHOOSE CASE Key
  805. CASE Keyleftarrow!
  806. FOR i = 1 To cur_select
  807. ls_name = cur_chname[i]
  808. // st_1.text += ls_name + ' '
  809. ll_x = Long(This.Describe(ls_name+'.x'))
  810. ll_x = ll_x - 3
  811. This.Modify(ls_name+'.x ='+String(ll_x))
  812. NEXT
  813. CASE Keyrightarrow!
  814. FOR i = 1 To cur_select
  815. ls_name = cur_chname[i]
  816. // st_1.text += ls_name + ' '
  817. ll_x = Long(This.Describe(ls_name+'.x'))
  818. ll_x = ll_x + 3
  819. This.Modify(ls_name+'.x ='+String(ll_x))
  820. NEXT
  821. CASE Keyuparrow!
  822. FOR i = 1 To cur_select
  823. ls_name = cur_chname[i]
  824. // st_1.text += ls_name + ' '
  825. ll_y = Long(This.Describe(ls_name+'.y'))
  826. ll_y = ll_y - 3
  827. This.Modify(ls_name+'.y ='+String(ll_y))
  828. NEXT
  829. CASE Keydownarrow!
  830. FOR i = 1 To cur_select
  831. ls_name = cur_chname[i]
  832. // st_1.text += ls_name + ' '
  833. ll_y = Long(This.Describe(ls_name+'.y'))
  834. ll_y = ll_y + 3
  835. This.Modify(ls_name+'.y ='+String(ll_y))
  836. NEXT
  837. END CHOOSE
  838. END CHOOSE
  839. SetRedraw(True)
  840. ELSEIF Key = Keydelete! THEN
  841. SetRedraw(False)
  842. FOR i = 1 To cur_select
  843. ls_name = cur_chname[i]
  844. This.Modify(ls_name+'.visible = 0')
  845. NEXT
  846. SetRedraw(True)
  847. ELSEIF keyflags = 2 and Key = KeyZ! THEN
  848. SetRedraw(False)
  849. FOR i = 1 To cur_select
  850. ls_name = cur_chname[i]
  851. This.Modify(ls_name+'.visible = 1')
  852. NEXT
  853. SetRedraw(True)
  854. END IF
  855. end event
  856. event destructor;IF cur_type = -1 THEN RETURN
  857. CALL SUPER:: Destructor
  858. end event
  859. event constructor;IF cur_start = 0 THEN RETURN
  860. CALL SUPER:: Constructor
  861. dw_1.InsertRow(0)
  862. Long nColumnCount,nColumnIndex
  863. String des_1,des_2,szColumn
  864. nColumnCount = Integer( THIS.Object.DataWindow.Column.Count)
  865. FOR nColumnIndex = 1 TO nColumnCount
  866. des_1 = THIS.Describe( "#" + String(nColumnIndex) + ".Name")
  867. des_2 = THIS.Describe(des_1+ "_t.Text")
  868. szColumn = f_strip( des_2)
  869. IF szColumn <> "!" THEN
  870. THIS.SetItem(1,des_1,des_2)
  871. END IF
  872. NEXT
  873. end event
  874. event clicked;call super::clicked;
  875. String ls_type,ls_dwoname ,is_dwobject
  876. String is_dwtype
  877. ls_type = Trim(Upper(dwo.Type))
  878. ls_dwoname = Trim(dwo.Name)
  879. is_dwtype = ls_type
  880. IF Not IsValid(dwo) THEN RETURN
  881. CHOOSE CASE ls_type
  882. CASE "TEXT" , "CommandButton" , "GROUPBOX"
  883. is_dwobject = ls_dwoname
  884. This.Modify(ls_dwoname+".color = 128")
  885. This.Modify(ls_dwoname+'.border = 5')
  886. CASE "LINE"
  887. is_dwobject = ls_dwoname
  888. CASE "RECTANGLE","ELLIPSE","GRAPH","BITMAP"
  889. is_dwobject = ls_dwoname
  890. This.Modify(ls_dwoname+".color = 128")
  891. This.Modify(ls_dwoname+'.border = 5')
  892. CASE "COLUMN","COMPUTE"
  893. is_dwobject = ls_dwoname
  894. This.Modify(ls_dwoname+".color = 128")
  895. This.Modify(ls_dwoname+'.border = 5')
  896. This.Modify(ls_dwoname+"_t.color = 128")
  897. This.Modify(ls_dwoname+'_t.border = 5')
  898. // case "DATAWINDOW"
  899. // return
  900. END CHOOSE
  901. ////////////////// //
  902. IF This.DataObject = '' THEN RETURN
  903. String des_1,des_2,szColumn
  904. String ls_mdfstr_vis = ''
  905. String ls_mdfstr_wi = ''
  906. String ls_mdfstr_x = ''
  907. String ls_mdfstr_y = ''
  908. String ls_mdfstr_text = ''
  909. String ls_mdfstr_alignment = ''
  910. String ls_mdfstr_height = ''
  911. Long ll_cnt = 0
  912. Long nColumnIndex,nColumnCount,lRow,ls_i
  913. String ls_name
  914. ls_name = This.Describe("DataWindow.Objects")
  915. datastore ls_ds
  916. ls_ds = Create datastore
  917. ls_ds.DataObject = This.DataObject
  918. IF KeyDown(keyControl!) THEN
  919. cur_select = UpperBound(cur_chname)
  920. cur_select ++
  921. cur_chname[cur_select] = ls_dwoname
  922. cur_x = Long(This.Describe( ls_dwoname +'.x'))
  923. cur_y = Long(This.Describe( ls_dwoname +'.y'))
  924. ELSE
  925. String ls_a[]
  926. Long i = 0
  927. String ls_null[]
  928. IF UpperBound(cur_chname) > 0 THEN
  929. FOR i = 1 To cur_select
  930. IF cur_chname[i] = ls_dwoname THEN RETURN
  931. NEXT
  932. END IF
  933. DO WHILE Pos(ls_name,'~t') > 1
  934. i++
  935. ls_a[i] = Mid(ls_name,1,Pos(ls_name,'~t') -1)
  936. ls_name = Mid(ls_name,Pos(ls_name,'~t') + 1,Len(ls_name))
  937. LOOP
  938. i++
  939. ls_a[i] = ls_name
  940. cur_select = 0
  941. cur_chname = ls_null
  942. FOR i = 1 To UpperBound(ls_a)
  943. des_1 = ls_a[i]
  944. IF ls_dwoname = des_1 Or ls_dwoname+'_t' = des_1 THEN
  945. dwoselect = ls_dwoname
  946. ll_cnt ++
  947. cur_x = Long(This.Describe( des_1 +'.x'))
  948. cur_y = Long(This.Describe( des_1 +'.y'))
  949. cur_select++
  950. cur_chname[cur_select] = des_1
  951. cur_chX[cur_select] = cur_x
  952. cur_chY[cur_select] = cur_y
  953. ELSE
  954. This.Modify(des_1+".color = "+ls_ds.Describe(des_1+".color"))
  955. This.Modify(des_1+".border = 2 ")
  956. END IF
  957. NEXT
  958. IF ll_cnt <= 0 THEN
  959. cur_select = 0
  960. END IF
  961. END IF
  962. end event
  963. event resize;call super::resize;IF cur_resize = 0 THEN RETURN
  964. IF THIS.X <> 0 THEN
  965. THIS.X = 0
  966. END IF
  967. IF THIS.Y <> 180 THEN
  968. THIS.Y = 180
  969. END IF
  970. Long ll_width,ll_height
  971. ll_width = wf_get_max(1)
  972. ll_height = wf_get_max(2)
  973. IF THIS.Width < ll_width THEN
  974. IF ll_width + 40 >= PARENT.Width THEN
  975. THIS.Width = PARENT.Width - 40
  976. ELSE
  977. THIS.Width = ll_width
  978. END IF
  979. ELSE
  980. IF THIS.Width + 40 >= PARENT.Width THEN
  981. THIS.Width = PARENT.Width - 40
  982. END IF
  983. END IF
  984. IF THIS.Height < ll_height THEN
  985. IF ll_height + 150 + THIS.Y >= PARENT.Height THEN
  986. THIS.Height = PARENT.Height - THIS.Y - 150
  987. ELSE
  988. THIS.Height = ll_height
  989. END IF
  990. ELSE
  991. IF THIS.Height + 150 + THIS.Y >= PARENT.Height THEN
  992. THIS.Height = PARENT.Height - THIS.Y - 150
  993. END IF
  994. END IF
  995. end event
  996. event rbuttondown;//
  997. end event
  998. type cb_1 from uo_imflatbutton within w_uc_mod
  999. integer x = 901
  1000. integer width = 151
  1001. integer height = 164
  1002. integer taborder = 30
  1003. boolean bringtotop = true
  1004. string text = "保存"
  1005. string normalpicname = "ok.bmp"
  1006. integer picsize = 16
  1007. toolbaralignment pic_align = alignattop!
  1008. boolean border = false
  1009. end type
  1010. event clicked;call super::clicked;//保存修改好布局
  1011. cur_type = 1
  1012. //dw_1.triggerevent(destructor!)
  1013. dw_1.uf_save_profile_layout()
  1014. /////////////////////
  1015. close(parent)
  1016. end event
  1017. type cb_2 from uo_imflatbutton within w_uc_mod
  1018. integer x = 750
  1019. integer width = 151
  1020. integer height = 164
  1021. integer taborder = 40
  1022. boolean bringtotop = true
  1023. string text = "应用"
  1024. string normalpicname = "update.BMP"
  1025. integer picsize = 16
  1026. toolbaralignment pic_align = alignattop!
  1027. boolean border = false
  1028. end type
  1029. event clicked;//保存修改好布局
  1030. cur_type = 1
  1031. //dw_1.TriggerEvent(Destructor!)
  1032. dw_1.uf_save_profile_layout()
  1033. /////////////////// //
  1034. Long ll_width,ll_height
  1035. IF cur_mainid > 0 THEN
  1036. f_reset_uc(cur_mainid,dw_1.Width,dw_1.Height)
  1037. END IF
  1038. end event
  1039. type cb_3 from uo_imflatbutton within w_uc_mod
  1040. integer width = 256
  1041. integer height = 164
  1042. integer taborder = 20
  1043. boolean bringtotop = true
  1044. string text = "属性修改"
  1045. string normalpicname = "setting.bmp"
  1046. integer picsize = 16
  1047. toolbaralignment pic_align = alignattop!
  1048. boolean border = false
  1049. end type
  1050. event clicked;call super::clicked;dw_1.triggerevent('ue_setlayout')
  1051. end event
  1052. type cb_4 from uo_imflatbutton within w_uc_mod
  1053. integer x = 256
  1054. integer width = 247
  1055. integer height = 164
  1056. integer taborder = 20
  1057. boolean bringtotop = true
  1058. string text = "自动顺序"
  1059. string normalpicname = "p2.bmp"
  1060. integer picsize = 16
  1061. toolbaralignment pic_align = alignattop!
  1062. boolean border = false
  1063. end type
  1064. event clicked;call super::clicked;//自动分配taborder
  1065. wf_aoto_taborder()
  1066. //////--------------------
  1067. end event
  1068. type cb_5 from uo_imflatbutton within w_uc_mod
  1069. integer x = 503
  1070. integer width = 247
  1071. integer height = 164
  1072. integer taborder = 30
  1073. boolean bringtotop = true
  1074. string text = "重置布局"
  1075. string normalpicname = "p1.BMP"
  1076. integer picsize = 16
  1077. toolbaralignment pic_align = alignattop!
  1078. boolean border = false
  1079. end type
  1080. event clicked;call super::clicked;dw_1.uf_reset_layout_all()
  1081. //dw_1.dataobject = dw_1.dataobject
  1082. //dw_1.settransobject(sqlca)
  1083. end event
  1084. type cb_6 from uo_imflatbutton within w_uc_mod
  1085. integer x = 1051
  1086. integer width = 430
  1087. integer height = 164
  1088. integer taborder = 50
  1089. boolean bringtotop = true
  1090. string text = "保存到所有用户"
  1091. string normalpicname = "ok.bmp"
  1092. integer picsize = 16
  1093. toolbaralignment pic_align = alignattop!
  1094. boolean border = false
  1095. end type
  1096. event clicked;call super::clicked;//保存修改好布局
  1097. cur_type = 1
  1098. //dw_1.triggerevent(destructor!)
  1099. dw_1.uf_clear_layout()
  1100. dw_1.uf_save_profile_layout_super()
  1101. /////////////////////
  1102. close(parent)
  1103. end event
  1104. type r_bar from rectangle within w_uc_mod
  1105. long linecolor = 16777215
  1106. long fillcolor = 1073741824
  1107. integer x = 2203
  1108. integer width = 91
  1109. integer height = 156
  1110. end type
  1111. event constructor;this.fillcolor = 14215660
  1112. this.linecolor = 14215660
  1113. this.x = -1
  1114. this.y = -1
  1115. this.height = ln_bar.beginy - 5
  1116. end event
  1117. type ln_bar from line within w_uc_mod
  1118. long linecolor = 268435456
  1119. integer linethickness = 4
  1120. integer beginy = 172
  1121. integer endx = 3200
  1122. integer endy = 172
  1123. end type
  1124. type ln_bar2 from line within w_uc_mod
  1125. long linecolor = 16777215
  1126. integer linethickness = 4
  1127. integer beginx = 9
  1128. integer beginy = 176
  1129. integer endx = 3273
  1130. integer endy = 176
  1131. end type