起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 259|回复: 3

如何在“任务中心”中加上“任务类型”过滤条件?**

[复制链接]
发表于 2008-2-13 09:17:04 | 显示全部楼层 |阅读模式
如何在“任务中心”中加上“任务类型”过滤条件?如下图:

rwlx.jpg

98.18 KB, 下载次数: 167

回复

使用道具 举报

发表于 2008-2-13 09:58:07 | 显示全部楼层
楼主,参考下面的方法

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;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-13 17:16:39 | 显示全部楼层
我照着做了,我感觉"4.任务中心过滤流程型的任务和非流程型的任务(任务中心)"部分中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;

增加部分写的不对,应该怎样写.
回复 支持 反对

使用道具 举报

发表于 2008-2-14 09:35:24 | 显示全部楼层
2楼的方法仅仅是作为参考,它实现的是增加了一个过滤条件:流程产生的任务和非流程产生的任务的过滤。楼主要实现的是增加另外两种过滤方式,那就需要根据自己的实际需要写相应的代码,以及数据库查询条件设置。但是处理的方法跟2楼是类似的。

3楼的代码就是要修改成你所说的任务类型,具体请楼主先研究下TTask表的FTYPE字段里的内容和TTASKTYPE表的内容
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-7 01:48 , Processed in 0.045747 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表