200分求能点击列表自动排序的datawindow用户对象.....

nasy 2005-01-19 11:18:02
哪位兄弟有,请导出,发送一个给我吧,鼓掌致谢中。。
...全文
111 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
j9dai 2005-01-19
  • 打赏
  • 举报
回复
呵~`,迟到了
j9dai 2005-01-19
  • 打赏
  • 举报
回复
nasy(!!!###东方不败###!!!) 已发
From jmj923dai@yahoo.com.cn To nlp_t@sina.com
源码,Copy进去就OK
nasy 2005-01-19
  • 打赏
  • 举报
回复
好了,够啦~谢谢大家,上面给出代码的,每人200分,将另外开贴,记得接分哦~~
luotitan 2005-01-19
  • 打赏
  • 举报
回复
接分,我来一个。
-----------------------------------
$PBExportHeader$uo_dwsort.sru
$PBExportComments$Datawindow userobject with sort functionality
forward
global type uo_dwsort from datawindow
end type
end forward

global type uo_dwsort from datawindow
integer width = 1303
integer height = 904
integer taborder = 2
boolean livescroll = true
borderstyle borderstyle = stylelowered!
end type
global uo_dwsort uo_dwsort

type prototypes

end prototypes

type variables
Public:
boolean MultiSelect = False
long LastRow
integer ii_ShowStatus = 50 // Mostrar onde vai de 50 em 50 (por defeito)

Private:
string is_OrderCol, is_SortType = "D"
boolean ib_Arrows = False, ib_MouseDown = False, ib_Selected = False
end variables

event clicked;string ls_AddPict, ls_CurObj, ls_Picture, ls_CurCol
integer li_PictPos

ls_CurObj = String(dwo.Name)
If Row = 0 AND This.Describe(ls_CurObj + ".Text") <> "!" AND This.Describe(ls_CurObj + ".Band") = "header" Then // Valid header object?
ls_CurCol = Left(ls_CurObj,Len(ls_CurObj) - 2)
If is_OrderCol <> ls_CurCol Then // Different Column
This.Modify("DESTROY p_" + is_OrderCol)
is_OrderCol = Left(ls_CurObj,Len(ls_CurObj) - 2)
ls_Picture = "ORDERUP.BMP"
is_SortType = "A" // Ascending sort
li_PictPos = Integer(This.Describe(ls_CurObj + ".X"))+ (Integer(This.Describe(ls_CurObj + ".Width")) - 70)
ls_AddPict ='create bitmap(band=foreground filename="' + ls_Picture + '" ' + &
' x="' + String(li_PictPos) + "~tInteger(describe('" + is_OrderCol + &
".X')) + (Integer(describe('" + is_OrderCol + ".Width'))" + ' - 70)" y="24" ' + &
' height="33" width="51" border="0" name=p_' + is_OrderCol + ' visible="1")'
This.Modify(ls_AddPict)
This.SetSort(is_OrderCol + " " + is_SortType)
This.Sort()
Else
If is_SortType = "A" Then
ls_Picture = "ORDERDW.BMP"
is_SortType = "D"
Else
ls_Picture = "ORDERUP.BMP"
is_SortType = "A"
End If
This.Modify('p_' + is_OrderCol + '.filename = "' + ls_Picture + '"')
This.SetSort(is_OrderCol + " " + is_SortType)
This.Sort()
End If
End If

end event

on uo_dwsort.create
end on

on uo_dwsort.destroy
end on

li_d_s 2005-01-19
  • 打赏
  • 举报
回复
我来发一个,但是是source,自己import进去
balloonman2002 2005-01-19
  • 打赏
  • 举报
回复
第一步:把下面内容保存成gf_setsort.srf,然后导入PBL:

第二步:新建窗口实例变量:string is_sortcolumn,is_sortorder

第三步:在窗口的DW的CLICKED事件中写:

integer li_rc
li_rc = gf_setsort(this,dwo,is_sortcolumn,is_sortorder)
Return li_rc

第四步:运行点击列头即可排序

************************************************************

$PBExportHeader$gf_setsort.srf
global type gf_setsort from function_object
end type

forward prototypes
global function integer gf_setsort (datawindow ad_dw, dwobject ad_dwo, ref string as_sortcolumn, ref string as_sortorder)
end prototypes

global function integer gf_setsort (datawindow ad_dw, dwobject ad_dwo, ref string as_sortcolumn, ref string as_sortorder);string ls_headername
string ls_colname
integer li_rc
integer li_suffixlen
integer li_headerlen
string ls_sortstring
string ls_defaultheadersuffix

ls_defaultheadersuffix="_t"

// Validate the ad_dwo reference.判断当前ad_dwo是否有效;
IF IsNull(ad_dwo) OR NOT IsValid(ad_dwo) THEN
Return -1
END IF

// Check if the service is set to sort on column headers.此处判断是否允许提供点击列头时进行SORT排序;
//IF NOT of_GetColumnHeader() THEN Return 0

// Only valid on header column.
If ad_dwo.Name = 'datawindow' THEN Return 0
IF ad_dwo.Band <> "header" THEN Return 0

// Get column header information.获取列头信息;
ls_headername = ad_dwo.Name
li_headerlen = Len(ls_headername)
li_suffixlen = Len(ls_defaultheadersuffix)

// Extract the columname from the header label 判断是否点击的是列头;
// (by taking out the header suffix).
IF Right(ls_headername, li_suffixlen) <> ls_defaultheadersuffix THEN
// Cannot determine the column name from the header.
Return -1
END IF
ls_colname = Left (ls_headername, li_headerlen - li_suffixlen)

// Validate the column name.判断此列是否有效;
If IsNull(ls_colname) or Len(Trim(ls_colname))=0 Then
Return -1
End If

// Check the previous sort click.判断是否点击的是上次点击过的列;
IF as_sortcolumn = ls_colname THEN
// Second sort click on the same column, reverse sort order.如果点的是同一列,则获取上次点击是如何排序,此次进行相反排序;
IF as_sortorder = " A" THEN
as_sortorder = " D"
ELSE
as_sortorder = " A"
END IF
ELSE
// Clicked on a different column.如果是不同列,则进行升序;
as_sortcolumn = ls_colname
as_sortorder = " A"
END IF

// Build the sort string.此处下句是进行含有CODE TABLE时对显示值排序,而并不对真正值排序,采用LOOKUPDISPLAY;
//IF of_GetUseDisplay() And of_UsesDisplayValue(ls_colname) THEN
// ls_sortstring = "LookUpDisplay(" + ls_colname + ") " + as_sortorder
//ELSE
ls_sortstring = as_sortcolumn + as_sortorder
//END IF

// Perform the SetSort operation (check the rc).开始排序;
//li_rc = of_SetSort (ls_sortstring)
li_rc = ad_dw.SetSort (ls_sortstring)
If li_rc < 0 Then Return li_rc

// Perform the actual Sort operation (check the rc).开始排序;
//li_rc = of_Sort()
li_rc = ad_dw.Sort()
If li_rc < 0 Then Return li_rc

Return 1
end function
skywalkerdjy 2005-01-19
  • 打赏
  • 举报
回复
自己做一个嘛!简单!
nasy 2005-01-19
  • 打赏
  • 举报
回复
忘了留email了,nlp_t@sina.com
nasy 2005-01-19
  • 打赏
  • 举报
回复
200分求,能点击列名自动排序的datawindow用户对象.....

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧