|
问:我想实现当点击列标题时上面有一个位图指示并实现对列进行排序,该怎么办呢?
答: //实例变量:string i_str_oldcol
string str_objectname,str_curcol,str_addpic integer int_pic_x
str_objectname=string(dwo.name) //对象名称 if row=0 and this.describe(str_objectname+".band")="header" and this.describe(str_objectname+".text")<>"!" then //是否点击列对象 str_curcol=left(str_objectname,len(str_objectname) - 2) //当前列对象名称 if str_curcol<>i_str_oldcol then //点击的是不同列对象 this.modify("destroy p_sort") //不管有没有位图对象都删除 i_str_oldcol=str_curcol //保存上次点击的列对象 //画图 int_pic_x=integer(this.describe(str_objectname+".x"))+(integer(this.describe(str_objectname+".width")) - 70) str_addpic='create bitmap(band=foreground filename="up.bmp" x="'+string(int_pic_x)+'" y="24" height="33" width="51" border="0" name=p_sort visible="1")' this.modify(str_addpic) //动态画个图 this.setsort(str_curcol +" A") //头一次点击当然是升序了 this.sort() else //当前列已经点过了 if this.describe("p_sort.filename")="up.bmp" then //上次是升序 this.modify("p_sort.filename='down.bmp'") this.setsort(str_curcol+" D") //这次是降序 else this.modify("p_sort.filename='up.bmp'") this.setsort(str_curcol+" A") end if this.sort() end if end if
注意:本文在乌龟学堂有实例。
一、在窗口中声明二实例变量:
//取得上次单击的列对象 string i_str_precolumn="" //判断上次是按升还是按降来排序 integer i_int_clicktime=0
二、在数据窗口控件中的单击事件中写入以下代码:
string str_column,str_format
str_column=dwo.name //取点击的对象 if right(str_column,2) <> "_t" then return //对于列标题,取得的对象是列名+"_t" str_column=left(str_column,len(str_column) - 2) if str_column=i_str_precolumn then //已点击过 if i_int_clicktime=0 then //0表示原来按降序 i_int_clicktime=1 str_format=str_column + " A" else i_int_clicktime=0 str_format=str_column + " D" end if else i_int_clicktime=1 //1表示原来按升序 str_format=str_column + " A" end if i_str_precolumn = str_column dw_1.SetSort(str_format) dw_1.Sort()
|