楼主,参考下面的方法
4、任务中心过滤流程型的任务和非流程型的任务(任务中心)
--解决方法:
业务模型\协同系统\任务\任务中心资源\事情常用过滤
界面上增加以下内容,并设置ccbTaskType.DropDownControl = clbTaskType:
object lblTaskType: TLabel
Left = 680
Top = 0
Width = 59
Height = 20
Alignment = taCenter
AutoSize = False
Caption = #20219#21153#31867#22411
Layout = tlCenter
Visible = False
end
object ccbTaskType: TControlComboBox
Left = 739
Top = 0
Width = 100
ImageIndex = 0
DropDownControl = clbTaskType
TabOrder = 4
OnCloseUp = ccbTaskTypeCloseUp
OnEnter = ccbTaskTypeEnter
end
object clbTaskType: TCheckListBox
Left = 731
Top = 23
Width = 70
Height = 29
OnClickCheck = clbTaskTypeClickCheck
BevelInner = bvNone
BevelOuter = bvNone
Ctl3D = False
ItemHeight = 12
Items.Strings = (
#27969#31243#22411
#38750#27969#31243#22411)
ParentCtl3D = False
TabOrder = 5
end
代码中增加以下内容:
private下定义
FTypeOld: string;
代码实现部分增加:
const
SAllType = '所有类型';
下面方法中增加:
function TCIRCSCOMMONFILTER.RebuildRightsFilterText: string;
//增加部分
if ccbTaskType.Text <> SAllType then
begin
if clbTaskType.Checked[0] then
Result := Result + ' AND ((TTASK.FPROCURL IS Not Null) AND (TTASK.FPROCURL <> ''''))'
else if clbTaskType.Checked[1] then
Result := Result + ' AND ((TTASK.FPROCURL IS Null) Or (TTASK.FPROCURL = ''''))';
end;
//放在下面这段之前(原有代码)
S := GetBizGroupFilterText;
下面的方法中增加:
procedure TCIRCSCOMMONFILTER.Init;
//增加部分
ccbTaskType.Text := SAllType;
for I := 0 to clbTaskType.Count - 1 do
clbTaskType.Checked[I] := True;
ccbTaskTypeEnter(ccbTaskType);
增加控件的相应事件及其实现:
procedure TCIRCSCOMMONFILTER.ccbTaskTypeEnter(Sender: TObject);
begin
Borland.Delphi.Windows.SetWindowLong(ccbTaskType.Handle,
Borland.Delphi.Windows.GWL_EXSTYLE,
Borland.Delphi.Windows.WS_EX_TOOLWINDOW);
end;
procedure TCIRCSCOMMONFILTER.ccbTaskTypeCloseUp(Sender: TObject; Accept: Boolean);
var
I: Integer;
begin
if FTypeOld <> ccbTaskType.Text then
begin
if ccbTaskType.Text = SAllType then
begin
for I := 0 to clbTaskType.Count - 1 do
clbTaskType.Checked[I] := True;
end;
InternalRebuild;
end;
end;
procedure TCIRCSCOMMONFILTER.clbTaskTypeClickCheck(Sender: TObject);
begin
ccbTaskType.Text := GetCLBText(clbTaskType, SAllType);
end;
5、任务中心过滤流程型的任务和非流程型的任务(我的任务(待办))
--解决方法:
业务模型\协同系统\任务\任务中心资源\任务桌面过滤
界面上增加以下内容,并设置ccbTaskType.DropDownControl = clbTaskType:
object lblTaskType: TLabel
Left = 680
Top = 0
Width = 59
Height = 20
Alignment = taCenter
AutoSize = False
Caption = #20219#21153#31867#22411
Layout = tlCenter
Visible = False
end
object ccbTaskType: TControlComboBox
Left = 739
Top = 0
Width = 100
ImageIndex = 0
DropDownControl = clbTaskType
TabOrder = 4
OnCloseUp = ccbTaskTypeCloseUp
OnEnter = ccbTaskTypeEnter
end
object clbTaskType: TCheckListBox
Left = 731
Top = 23
Width = 70
Height = 29
OnClickCheck = clbTaskTypeClickCheck
BevelInner = bvNone
BevelOuter = bvNone
Ctl3D = False
ItemHeight = 12
Items.Strings = (
#27969#31243#22411
#38750#27969#31243#22411)
ParentCtl3D = False
TabOrder = 5
end
代码中增加以下内容:
private下定义
FTypeOld: string;
代码实现部分增加:
const
SAllType = '所有类型';
下面方法中增加:
procedure TTASKDESKTOPFILTER.Rebuild;
//增加部分
if ccbTaskType.Text <> SAllType then
begin
if clbTaskType.Checked[0] then
begin
if lSQLFilter = '' then
lSQLFilter := lSQLFilter + ' ((TTASK.FPROCURL IS Not Null) AND (TTASK.FPROCURL <> ''''))'
else
lSQLFilter := lSQLFilter + ' AND ((TTASK.FPROCURL IS Not Null) AND (TTASK.FPROCURL <> ''''))'
end
else if clbTaskType.Checked[1] then
begin
if lSQLFilter = '' then
lSQLFilter := lSQLFilter + ' ((TTASK.FPROCURL IS Null) Or (TTASK.FPROCURL = ''''))'
else
lSQLFilter := lSQLFilter + ' AND ((TTASK.FPROCURL IS Null) Or (TTASK.FPROCURL = ''''))'
end;
end;
//放在下面这段之前(原有代码)
TaskDataSet.SQLFilter := lSQLFilter;
//增加部分
if ccbTaskType.Text <> SAllType then
begin
if clbTaskType.Checked[0] then
begin
if lSQLFilter = '' then
lSQLFilter := lSQLFilter + ' ((TTASK.FPROCURL IS Not Null) AND (TTASK.FPROCURL <> ''''))'
else
lSQLFilter := lSQLFilter + ' AND ((TTASK.FPROCURL IS Not Null) AND (TTASK.FPROCURL <> ''''))'
end
else if clbTaskType.Checked[1] then
begin
if lSQLFilter = '' then
lSQLFilter := lSQLFilter + ' ((TTASK.FPROCURL IS Null) Or (TTASK.FPROCURL = ''''))'
else
lSQLFilter := lSQLFilter + ' AND ((TTASK.FPROCURL IS Null) Or (TTASK.FPROCURL = ''''))'
end;
end;
//放在下面这段之前(原有代码)
BatchProcessDataSet.SQLFilter := lSQLFilter;
//增加部分
if ccbTaskType.Text <> SAllType then
begin
if clbTaskType.Checked[0] then
begin
if lSQLFilter = '' then
lSQLFilter := lSQLFilter + ' ((TTASK.FPROCURL IS Not Null) AND (TTASK.FPROCURL <> ''''))'
else
lSQLFilter := lSQLFilter + ' AND ((TTASK.FPROCURL IS Not Null) AND (TTASK.FPROCURL <> ''''))'
end
else if clbTaskType.Checked[1] then
begin
if lSQLFilter = '' then
lSQLFilter := lSQLFilter + ' ((TTASK.FPROCURL IS Null) Or (TTASK.FPROCURL = ''''))'
else
lSQLFilter := lSQLFilter + ' AND ((TTASK.FPROCURL IS Null) Or (TTASK.FPROCURL = ''''))'
end;
end;
//放在下面这段之前(原有代码)
TaskDataSet.SQLFiltered := True;
下面的方法中增加:
procedure TCIRCSCOMMONFILTER.Init;
//修改增加部分
var
i : Integer;
begin
ccbTaskType.Text := SAllType;
for I := 0 to clbTaskType.Count - 1 do
clbTaskType.Checked[I] := True;
ccbTaskTypeEnter(ccbTaskType);
增加控件的相应事件及其实现:
procedure TCIRCSCOMMONFILTER.ccbTaskTypeEnter(Sender: TObject);
begin
Borland.Delphi.Windows.SetWindowLong(ccbTaskType.Handle,
Borland.Delphi.Windows.GWL_EXSTYLE,
Borland.Delphi.Windows.WS_EX_TOOLWINDOW);
end;
procedure TCIRCSCOMMONFILTER.ccbTaskTypeCloseUp(Sender: TObject; Accept: Boolean);
var
I: Integer;
begin
if FTypeOld <> ccbTaskType.Text then
begin
if ccbTaskType.Text = SAllType then
begin
for I := 0 to clbTaskType.Count - 1 do
clbTaskType.Checked[I] := True;
end;
InternalRebuild;
end;
end;
procedure TCIRCSCOMMONFILTER.clbTaskTypeClickCheck(Sender: TObject);
begin
ccbTaskType.Text := GetCLBText(clbTaskType, SAllType);
end; |