⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unpersonreportdisplay.pas

📁 本产品是开发LISTVIEW相关功能的可定制产品
💻 PAS
📖 第 1 页 / 共 2 页
字号:
        nWidth:=StrToInt(lvTableDetail.Items[i].SubItems[0]);
        //合乎要求继续
        i:=0;
        while i< lvDisplayDetail.Items.Count do
        begin
            if(lvDisplayDetail.Items[i].Caption=sCaption) then
              break;
            i:=i+1;
        end;
        if(i = lvDisplayDetail.Items.Count)then
        begin
            lvDisplayDetail.items.BeginUpdate;
            with lvDisplayDetail.Items.Add do
            begin
                Caption:=sCaption;
                SubItems.Add(IntToStr(nWidth));
                SubItems.Add(lvTableDetail.Items[i].SubItems[1]);
            end;
            lvDisplayDetail.items.EndUpdate;
        end
        else
           Application.MessageBox('   你选择的显示列已经存在,请检查是否重复!',
                                                            '系统信息管理窗',0);
    end;
    StatusBar1.Panels.Items[1].Text := '添加显示列成功';
    spUp.Enabled:=True;
end;

procedure TfrmPersonReportDisplay.BitBtn2Click(Sender: TObject);
begin
    spUp.Enabled:=True;
end;

//恢复使能,现在已经多余
procedure TfrmPersonReportDisplay.lvTableDetailClick(Sender: TObject);
begin
    spUp.Enabled:=True;
    spDown.Enabled:=True;
    spSaveDB.Enabled:=True;
    spAllUp.Enabled:=True;
end;

//恢复使能,现在已经多余
procedure TfrmPersonReportDisplay.lvDisplayDetailClick(Sender: TObject);
begin
    spUp.Enabled:=True;
    spDown.Enabled:=True;
    spSaveDB.Enabled:=True;
    spAllUp.Enabled:=True;
end;

procedure TfrmPersonReportDisplay.ComboBox1KeyPress(Sender: TObject;
  var Key: Char);
begin
  if (Key <> Char(VK_UP))and(Key <> Char(VK_DOWN))then
      key := Char(0); //禁止用户键盘输入信息
end;

procedure TfrmPersonReportDisplay.ComboBox2KeyPress(Sender: TObject;
  var Key: Char);
begin
  if (Key <> Char(VK_UP))and(Key <> Char(VK_DOWN))then
      key := Char(0); //禁止用户键盘输入信息
end;

procedure TfrmPersonReportDisplay.N10Click(Sender: TObject);
begin
   close;
end;

//判断指定窗体指定LISTVIEW列在报表打印定制中是否允许删除
Function TfrmPersonReportDisplay.bAgreeDel(const FormCaption,
                                           DisplayColumnCaption:string):boolean;
var qQryDB:TQuery;
begin
  result:=True;
  qQryDB:=TQuery.Create(nil);//创建查询
  qQryDB.DatabaseName:=CDM.dbData.DatabaseName;
  qQryDB.SessionName:=CDM.dbData.SessionName;
  with qQryDB do
  begin
    Close;
    SQL.Clear;//清SQL
    SQL.Add('SELECT FORMCAPTION,A.TABLEDETAILID '
    +'FROM SFRJPRINTDETAIL A,SFRJTABLEDETAIL B ');
    SQL.Add('WHERE A.TABLEDETAILID=B.TABLEDETAILID AND FORMCAPTION='''
    +FormCaption+''' AND CAPTION='''+DisplayColumnCaption+'''');
    Open;
    If Not eof then
    begin
      result:=False;
    end;
    qQryDB.Close;
    qQryDB.Free;
    qQryDB:=nil;
  end;
end;

//取定制显示内容
procedure TfrmPersonReportDisplay.Refresh;
var qQryDB:TQuery;
    i:integer;
begin
  qQryDB:=TQuery.Create(nil);
  qQryDB.DatabaseName:=CDM.dbData.DatabaseName;
  qQryDB.SessionName:=CDM.dbData.SessionName;
  with qQryDB do
  begin
    qQryDB.Close;//选择要显示的字段LISTVIEW初始化
    qQryDB.SQL.Clear;
    qQryDB.SQL.Add('SELECT A.TABLEDETAILID,DISPLAYTAB,'
    +'CAPTION,WIDTH,FORMCAPTION FROM SFRJPERSONDISPLAY A,SFRJTABLEDETAIL B ');
    qQryDB.SQL.Add('WHERE (A.STAFFID='''+sUserID+''')'
    +' AND(A.TABLEDETAILID=B.TABLEDETAILID) AND (FORMCAPTION='''+sFormCaption
    +''') ORDER BY DISPLAYTAB ASC');
    qQryDB.Open;
    qQryDB.First;
    nShowNum:=qQryDB.RecordCount;
//Added by dpd 2003-12-30 for 在个性化中无显示内容时以统一的显示为准 begin
    if nShowNum<=0 then//只有当有查询的记录数时才执行下面的操作
    begin
      qQryDB.Close;//选择要显示的字段LISTVIEW初始化
      qQryDB.SQL.Clear;
      qQryDB.SQL.Add('SELECT  INARYSERIALID,DISPLAYTAB,CAPTION,B.TABLEDETAILID,'
        +' COLUMNNAME,WIDTH,DATATYPE FROM SFRJDISPLAYDETAIL A,SFRJTABLEDETAIL B '
        +'WHERE (A.TABLEDETAILID=B.TABLEDETAILID) AND (FORMCAPTION='''+sFormCaption
    +''') ORDER BY DISPLAYTAB ASC');
      qQryDB.Open;
      qQryDB.First;
      nShowNum:=qQryDB.RecordCount;
    end;
//Added by dpd 2003-12-30 for 在个性化中无显示内容时以统一的显示为准 end    
    SetLength(aShowColum,nShowNum); //置数组长度
    i:=0;
    lvDisplayDetail.items.BeginUpdate;
    lvDisplayDetail.items.Clear;
    While not qQryDB.Eof do//循环写入到显示LISTVIEW中
    begin
      with lvDisplayDetail.Items.Add do
      begin
        Caption:=qQryDB.FieldByName('CAPTION').AsString;
        aShowColum[i]:=Caption;
        SubItems.Add(qQryDB.FieldByName('WIDTH').Asstring);
        SubItems.Add(qQryDB.FieldByName('TABLEDETAILID').Asstring);
        qQryDB.Next ;
        i:=i+1;
      end;
    end;
    lvDisplayDetail.items.Endupdate;

    Close;//提供可以选择的字段LISTVIEW初始化
    SQL.Clear;
    SQL.Add('SELECT TABLEDETAILID,CAPTION,WIDTH,FORMCAPTION '
    +'FROM SFRJTABLEDETAIL A WHERE FORMCAPTION='''+sFormCaption
    +''' ORDER BY TABLEDETAILID');
    Open;
    First;
    lvTableDetail.items.BeginUpdate;
    lvTableDetail.items.Clear;
    While not Eof do//循环写入到可显示LISTVIEW中
    begin
      with lvTableDetail.Items.Add do
      begin
        Caption:=FieldByName('CAPTION').AsString;
        SubItems.Add(FieldByName('WIDTH').Asstring);
        SubItems.Add(FieldByName('TABLEDETAILID').Asstring);
        Next ;
      end;
    end;
    lvTableDetail.items.endupdate;
    qQryDB.Close;
    qQryDB.Free;
    qQryDB:=nil;
  End;
end;

//执行刷新操作
procedure TfrmPersonReportDisplay.N12Click(Sender: TObject);
begin
   Refresh;
end;

//执行刷新操作
procedure TfrmPersonReportDisplay.spRefreshClick(Sender: TObject);
begin
   Refresh;
end;

//
procedure TfrmPersonReportDisplay.lvDisplayDetailColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  Case Column.Index of
       1:  SortListView(lvDisplayDetail,Column.ID,ssNumeric,True);
       0:  SortListView(lvDisplayDetail,Column.ID,ssAlpha,True);
  end;
end;

procedure TfrmPersonReportDisplay.lvTableDetailColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  Case Column.Index of
       1:  SortListView(lvTableDetail,Column.ID,ssNumeric,True);
       0:  SortListView(lvTableDetail,Column.ID,ssAlpha,True);
  end;

end;

procedure TfrmPersonReportDisplay.spExitClick(Sender: TObject);
begin
  close;
end;
//将要操作的窗体标题传进来
procedure TfrmPersonReportDisplay.IniShow(FormCaption: String);
begin
  sFormCaption:= FormCaption;
end;

procedure TfrmPersonReportDisplay.lvTableDetailDblClick(Sender: TObject);
begin
  spUpClick(Sender); 
end;

procedure TfrmPersonReportDisplay.lvDisplayDetailDblClick(Sender: TObject);
begin
  spDownClick(Sender);
end;

procedure TfrmPersonReportDisplay.ChangeShowCloumn(const GoUp:boolean);
var lsCaptionName,lsWidth,lsTableDetailIDs:string;
    i:integer;//用作防止行过长的数组下标
begin
  i:=nRowSelected;
  if GoUp then
  begin//向上移
    if lvDisplayDetail.ItemIndex<0 then
    begin
    end
    else if lvDisplayDetail.ItemIndex>0 then
    begin
      nRowSelected:=lvDisplayDetail.ItemIndex;
      i:=nRowSelected;
      //做上下位置交换
      lsCaptionName:=lvDisplayDetail.Items[i].Caption;
      lsWidth:=lvDisplayDetail.Items[i].SubItems[0];
      lsTableDetailIDs:=lvDisplayDetail.Items[i].SubItems[1];
      lvDisplayDetail.Items[i].Caption:=lvDisplayDetail.Items[i-1].Caption;
      lvDisplayDetail.Items[i].SubItems[0]:=lvDisplayDetail.Items[i-1].SubItems[0];
      lvDisplayDetail.Items[i].SubItems[1]:=lvDisplayDetail.Items[i-1].SubItems[1];
      lvDisplayDetail.Items[i-1].Caption:=lsCaptionName;
      lvDisplayDetail.Items[i-1].SubItems[0]:=lsWidth;
      lvDisplayDetail.Items[i-1].SubItems[1]:=lsTableDetailIDs;
      lvDisplayDetail.Items.Item[i-1].Selected:=True;//改变焦点行
    end;
  end
  else
  begin//向下移
    if lvDisplayDetail.ItemIndex<0 then
    begin
    end
    else if lvDisplayDetail.ItemIndex<>lvDisplayDetail.Items.Count-1 then
    begin
      nRowSelected:=lvDisplayDetail.ItemIndex;
      i:=nRowSelected;
      //做上下位置交换
      lsCaptionName:=lvDisplayDetail.Items[i].Caption;
      lsWidth:=lvDisplayDetail.Items[i].SubItems[0];
      lsTableDetailIDs:=lvDisplayDetail.Items[i].SubItems[1];
      lvDisplayDetail.Items[i].Caption:=lvDisplayDetail.Items[i+1].Caption;
      lvDisplayDetail.Items[i].SubItems[0]:=lvDisplayDetail.Items[i+1].SubItems[0];
      lvDisplayDetail.Items[i].SubItems[1]:=lvDisplayDetail.Items[i+1].SubItems[1];
      lvDisplayDetail.Items[i+1].Caption:=lsCaptionName;
      lvDisplayDetail.Items[i+1].SubItems[0]:=lsWidth;
      lvDisplayDetail.Items[i+1].SubItems[1]:=lsTableDetailIDs;
      lvDisplayDetail.Items.Item[i+1].Selected:=True;//改变焦点行
    end;
  end;
end;

procedure TfrmPersonReportDisplay.SpeedButton1Click(Sender: TObject);
begin
  ChangeShowCloumn(True);//向上移一行
end;

procedure TfrmPersonReportDisplay.SpeedButton2Click(Sender: TObject);
begin
  ChangeShowCloumn(False);//向下移一行
end;

Function TfrmPersonReportDisplay.Execute:boolean;
begin
  Result:=False;
  frmPersonReportDisplay.ShowModal;
  if bReShow=True then
     Result:=True;
  Application.ProcessMessages;   
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -