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

📄 unreportdisplay.pas

📁 本产品是开发LISTVIEW相关功能的可定制产品
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      begin
        Caption:=FieldByName('CAPTION').AsString;
        SubItems.Add(FieldByName('WIDTH').Asstring);
        SubItems.Add(FieldByName('FORMCAPTION').Asstring);
        SubItems.Add(FieldByName('TABLEDETAILID').Asstring);
        Next ;
      end;
    end;
    lvTableDetail.items.endupdate;
    qQryDB.Close;
    qQryDB.Free;
    qQryDB:=nil;
  End;
  nOldSelectRow:=lvReportName.ItemIndex;
  StatusBar1.Panels.Items[1].Text := '窗体名称:'+sFormCaption;
end;

procedure TfrmReportDisplay.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  lvReportName.Items.Clear;
  lvTableDetail.Items.Clear;
  lvDisplayDetail.Items.Clear;
end;

procedure TfrmReportDisplay.BitBtn1Click(Sender: TObject);
var i,nWidth:Integer;
    sCaption,StrSerial:String;
begin
    GroupBox4.Visible:=False;
    i:=lvTableDetail.ItemIndex;
    if(i>=0)then
    begin
        sCaption:=lvTableDetail.Items[i].Caption;
        nWidth:=StrToInt(lvTableDetail.Items[i].SubItems[0]);
        sFormCaption:=lvTableDetail.Items[i].SubItems[1];
        StrSerial:=lvTableDetail.Items[i].SubItems[2];
        //合乎要求继续
        i:=0;
        while i< lvDisplayDetail.Items.Count do
        begin
            if(lvDisplayDetail.Items[i].SubItems[0]=sCaption)then
              break;
            i:=i+1;
        end;
        if(i = lvDisplayDetail.Items.Count)then
        begin
            lvDisplayDetail.items.BeginUpdate;
            with lvDisplayDetail.Items.Add do
            begin
                Caption:=Combobox1.Text;
                SubItems.Add(sCaption);
                SubItems.Add(IntToStr(nWidth));
                SubItems.Add(lvReportName.Items[nOldSelectRow].Caption);
                SubItems.Add(StrSerial);
            end;
            lvDisplayDetail.items.EndUpdate;
            nRowWidth:=nRowWidth+nWidth;
        end
        else
           Application.MessageBox('   你选择的显示列已经存在,请检查是否重复!','系统信息管理窗',0);
    end;
    StatusBar1.Panels.Items[1].Text := '窗体名称:'+lvReportName.Items[nOldSelectRow].Caption+',添加显示列成功';
    GroupBox4.Visible:=False;
    spUp.Enabled:=True;
end;

procedure TfrmReportDisplay.BitBtn2Click(Sender: TObject);
begin
    GroupBox4.Visible:=False;
    spUp.Enabled:=True;
end;

procedure TfrmReportDisplay.lvReportNameKeyUp(Sender: TObject;
  var Key: Word; Shift: TShiftState);
var qQryDB:TQuery;
    sFormCaption:string;
begin
  if ((Key=38) or(Key=40)) then
  begin
      if nOldSelectRow=lvReportName.ItemIndex then
         Exit;
      sFormCaption:=lvReportName.Items[lvReportName.ItemIndex].Caption;
      qQryDB:=TQuery.Create(nil);
      qQryDB.DatabaseName:=CDM.dbData.DatabaseName;
      qQryDB.SessionName:=CDM.dbData.SessionName;
      with qQryDB do
      begin
        Close;//选择要显示的字段LISTVIEW初始化
        SQL.Clear;
        SQL.Add('SELECT A.TABLEDETAILID,DISPLAYTAB,'
        +'CAPTION,WIDTH,FORMCAPTION FROM SFRJDISPLAYDETAIL A,SFRJTABLEDETAIL B');
        SQL.Add(' WHERE A.TABLEDETAILID=B.TABLEDETAILID AND FORMCAPTION='''
        +sFormCaption+''' ORDER BY DISPLAYTAB ASC');
        Open;
        First;
        lvDisplayDetail.items.BeginUpdate;
        lvDisplayDetail.items.Clear;
        nRowWidth:=0;//显示列总宽度
        While not Eof do
        begin
          with lvDisplayDetail.Items.Add do
          begin
            Caption:=FieldByName('DISPLAYTAB').AsString;
            SubItems.Add(FieldByName('CAPTION').AsString);
            SubItems.Add(FieldByName('WIDTH').Asstring);
            nRowWidth:=nRowWidth+FieldByName('WIDTH').AsInteger;
            SubItems.Add(sFormCaption);
            SubItems.Add(FieldByName('TABLEDETAILID').Asstring);
            Next ;
          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
        begin
          with lvTableDetail.Items.Add do
          begin
            Caption:=FieldByName('CAPTION').AsString;
            SubItems.Add(FieldByName('WIDTH').Asstring);
            SubItems.Add(FieldByName('FORMCAPTION').Asstring);
            SubItems.Add(FieldByName('TABLEDETAILID').Asstring);
            Next ;
          end;
        end;
        lvTableDetail.items.endupdate;
        qQryDB.Close;
        qQryDB.Free;
        qQryDB:=nil;
      End;
      nOldSelectRow:=lvReportName.ItemIndex;
      StatusBar1.Panels.Items[1].Text := '窗体名称:'+sFormCaption;
   end;
end;

procedure TfrmReportDisplay.lvTableDetailClick(Sender: TObject);
begin
    GroupBox4.Visible:=False;
    spUp.Enabled:=True;
    spDown.Enabled:=True;
    spSaveDB.Enabled:=True;
    spAllUp.Enabled:=True;

end;

procedure TfrmReportDisplay.lvDisplayDetailClick(Sender: TObject);
begin
    GroupBox4.Visible:=False;
    spUp.Enabled:=True;
    spDown.Enabled:=True;
    spSaveDB.Enabled:=True;
    spAllUp.Enabled:=True;
end;

procedure TfrmReportDisplay.N5Click(Sender: TObject);
begin
   GroupBox4.Visible:=False;
end;

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

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

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

//判断指定窗体指定LISTVIEW列在报表打印定制中是否允许删除
Function TfrmReportDisplay.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 TfrmReportDisplay.Refresh;
var qQryDB:TQuery;
    i:integer;
    sFormCaption:string;
begin
  nOldSelectRow:=0;
  qQryDB:=TQuery.Create(nil);
  qQryDB.DatabaseName:=CDM.dbData.DatabaseName;
  qQryDB.SessionName:=CDM.dbData.SessionName;
  with qQryDB do
  begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT FORMCAPTION FROM SFRJREPORTNAME A '
              +'WHERE SHAREUSE=1 GROUP BY FORMCAPTION');
      Open;
      First;
      lvReportName.items.BeginUpdate;
      lvReportName.items.Clear;
      I:=0;
      sFormCaption:='0';
      While not Eof do
      begin
        with lvReportName.Items.Add do
        begin
          Caption:=FieldByName('FORMCAPTION').AsString;
          If i=0 Then
          begin
             sFormCaption:=FieldByName('FORMCAPTION').AsString;
          end;
          i:=i+1;
          Next ;
        end;
      end;
      lvReportName.items.endupdate;

      Close;//选择要显示的字段LISTVIEW初始化
      SQL.Clear;
      SQL.Add('SELECT A.TABLEDETAILID,DISPLAYTAB,'
      +'CAPTION,WIDTH,FORMCAPTION FROM SFRJDISPLAYDETAIL A,SFRJTABLEDETAIL B ');
      SQL.Add('WHERE A.TABLEDETAILID=B.TABLEDETAILID AND FORMCAPTION='''
      +sFormCaption+''' ORDER BY DISPLAYTAB ASC');
      Open;
      First;
      lvDisplayDetail.items.BeginUpdate;
      lvDisplayDetail.items.Clear;
      nRowWidth:=0;
      While not Eof do
      begin
        with lvDisplayDetail.Items.Add do//添加到显示队列中
        begin
          Caption:=FieldByName('DISPLAYTAB').AsString;
          SubItems.Add(FieldByName('CAPTION').AsString);
          SubItems.Add(FieldByName('WIDTH').Asstring);
          nRowWidth:=nRowWidth+FieldByName('WIDTH').AsInteger;
          SubItems.Add(sFormCaption);
          SubItems.Add(FieldByName('TABLEDETAILID').Asstring);
          Next ;
        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
      begin
        with lvTableDetail.Items.Add do
        begin
          Caption:=FieldByName('CAPTION').AsString;
          SubItems.Add(FieldByName('WIDTH').Asstring);
          SubItems.Add(FieldByName('FORMCAPTION').Asstring);
          SubItems.Add(FieldByName('TABLEDETAILID').Asstring);
          Next ;
        end;
      end;
      lvTableDetail.items.endupdate;
      qQryDB.Close;
      qQryDB.Free;
      qQryDB:=nil;
   END;
end;

procedure TfrmReportDisplay.N12Click(Sender: TObject);
begin
   Refresh;
end;

procedure TfrmReportDisplay.spRefreshClick(Sender: TObject);
begin
   Refresh;
end;

procedure TfrmReportDisplay.lvReportNameColumnClick(Sender: TObject;
  Column: TListColumn);
begin
       SortListView(lvReportName,Column.ID,ssAlpha,True);
end;

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

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

end;

procedure TfrmReportDisplay.spExitClick(Sender: TObject);
begin
  close;
end;

end.

⌨️ 快捷键说明

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