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

📄 unreportnameprint.pas

📁 本产品是开发LISTVIEW相关功能的可定制产品
💻 PAS
📖 第 1 页 / 共 3 页
字号:
//  N5.Enabled:=True;
  if ((lvReportName.ItemIndex<0) or (lvReportName.ItemIndex>lvReportName.Items.Count))then
     exit;
  sSerial:=lvReportName.Items[lvReportName.ItemIndex].Caption;
  sFormCaption:=lvReportName.Items[lvReportName.ItemIndex].SubItems[0];
  sReportName:=lvReportName.Items[lvReportName.ItemIndex].SubItems[1];
  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  PRINTTAB,PRINTCAPTION,CAPTION,WIDTH,FORMCAPTION,A.TABLEDETAILID TABLEDETAILID FROM SFRJPRINTDETAIL A,SFRJTABLEDETAIL B WHERE A.TABLEDETAILID=B.TABLEDETAILID AND REPORTID='+sSerial+' ORDER BY PRINTTAB');
      Open;
      First;
      lvPrintDetail.items.BeginUpdate;
      lvPrintDetail.items.Clear;
      nRowWidth:=0;//打印列总宽度
      While not Eof do
      begin
        with lvPrintDetail.Items.Add do
        begin
          Caption:=FieldByName('PRINTTAB').AsString;
          SubItems.Add(FieldByName('PRINTCAPTION').Asstring);
          SubItems.Add(FieldByName('CAPTION').AsString);
          SubItems.Add(FieldByName('WIDTH').Asstring);
          nRowWidth:=nRowWidth+FieldByName('WIDTH').AsInteger;
          SubItems.Add(sReportName);
          SubItems.Add(FieldByName('TABLEDETAILID').Asstring);
          Next ;
        end;
      end;
      lvPrintDetail.items.endupdate;

      Close;//提供可以选择的字段LISTVIEW初始化
      SQL.Clear;
      SQL.Add('SELECT  TABLEDETAILID,PRINTCAPTION,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('PRINTCAPTION').AsString;
          SubItems.Add(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 := '报表名称:'+sReportName+',打印总列宽为:'+IntToStr(nRowWidth)+'个像素.';
end;

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


procedure TfrmReportNamePrint.spAddClick(Sender: TObject);
begin
    GroupBox4.Visible:=False;
    FrmReportInfo:=TFrmReportInfo.Create(nil);
    FrmReportInfo.IniInfo(0,0,0,'','','');
    ShowColor(FrmReportInfo);
    FrmReportInfo.ShowModal;
    if FrmReportInfo.bbSure=True then
    begin
        with lvReportName.Items.Add do
        begin
            Caption:=FrmReportInfo.sReportID;
            SubItems.Add(FrmReportInfo.sFormCaption);
            SubItems.Add(FrmReportInfo.sReportName);
            SubItems.Add(FrmReportInfo.sPrintType);
            SubItems.Add(FrmReportInfo.sDiscription);
        END;
    end;    
    FrmReportInfo.Free;
    FrmReportInfo:=NIL;
end;

procedure TfrmReportNamePrint.spEditClick(Sender: TObject);
var i,j:Integer;
begin
    GroupBox4.Visible:=False;
    j:=lvReportName.ItemIndex;
    if(j>=0)then
    begin
        sFormCaption:=lvReportName.Items[J].SubItems[0];
        sReportName:=lvReportName.Items[J].SubItems[1];
        sDiscription:=lvReportName.Items[J].SubItems[3];
        if (lvReportName.Items[J].SubItems[2]='A4横打') then
           i:=1
        else
           i:=0;
        FrmReportInfo:=TFrmReportInfo.Create(nil);
        FrmReportInfo.IniInfo(nRowWidth,1,i,sFormCaption,sReportName,sDiscription);
        ShowColor(FrmReportInfo);
        FrmReportInfo.ShowModal;
        if FrmReportInfo.bbSure=True then
        begin
            lvReportName.Items[j].SubItems[0]:=FrmReportInfo.sFormCaption;
            lvReportName.Items[j].SubItems[1]:=FrmReportInfo.sReportName;
            lvReportName.Items[j].SubItems[2]:=FrmReportInfo.sPrintType;
            lvReportName.Items[j].SubItems[3]:=FrmReportInfo.sDiscription;
       end;
       FrmReportInfo.Free;
       FrmReportInfo:=NIL;
    end
    else
       StatusBar1.Panels.Items[1].Text := '请选择要修改的行!'

end;

procedure TfrmReportNamePrint.spDelClick(Sender: TObject);
var i,J:Integer;
begin
    GroupBox4.Visible:=False;
    J:=lvReportName.ItemIndex;
    if(J>=0)then
    begin
        sFormCaption:=lvReportName.Items[J].SubItems[0];
        sReportName:=lvReportName.Items[J].SubItems[1];
        if (lvReportName.Items[J].SubItems[2]='A4横打') then
           i:=1
        else
           i:=0;
        sDiscription:=lvReportName.Items[J].SubItems[3];
        FrmReportInfo:=TFrmReportInfo.Create(nil);
        FrmReportInfo.IniInfo(nRowWidth,2,i,sFormCaption,sReportName,sDiscription);
        ShowColor(FrmReportInfo);
        FrmReportInfo.ShowModal;
        if FrmReportInfo.bbSure=True then 
            lvReportName.Items[j].Delete;
        FrmReportInfo.Free;
        FrmReportInfo:=NIL;
        if(j<lvReportName.Items.Count) then
        begin
          lvReportName.Items[j].Selected:=True;
          lvReportNameClick(lvReportName);
        end
        else
          spRefresh.Click;
    end
    else
       StatusBar1.Panels.Items[1].Text := '请选择要删除的行!'
end;

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

procedure TfrmReportNamePrint.BitBtn2Click(Sender: TObject);
begin
    GroupBox4.Visible:=False;
    spUp.Enabled:=True;
    spAdd.Enabled:=True;
    spEdit.Enabled:=True;
    spDel.Enabled:=True;
end;

procedure TfrmReportNamePrint.lvReportNameKeyUp(Sender: TObject;
  var Key: Word; Shift: TShiftState);
var qQryDB:TQuery;
    sSerial:string;
begin
  if ((Key=38) or(Key=40)) then
  begin
      if nOldSelectRow=lvReportName.ItemIndex then
         Exit;
      sReportName:=lvReportName.Items[lvReportName.ItemIndex].SubItems[1];
      sSerial:=lvReportName.Items[lvReportName.ItemIndex].Caption;
      sFormCaption:=lvReportName.Items[lvReportName.ItemIndex].SubItems[0];
      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 PRINTTAB,PRINTCAPTION,CAPTION,WIDTH,FORMCAPTION,A.TABLEDETAILID FROM SFRJPRINTDETAIL A,SFRJTABLEDETAIL B WHERE A.TABLEDETAILID=B.TABLEDETAILID AND REPORTID='+sSerial+' ORDER BY PRINTTAB');
          Open;
          First;
          lvPrintDetail.items.BeginUpdate;
          lvPrintDetail.items.Clear;
          nRowWidth:=0;//打印列总宽度
          While not Eof do
          begin
            with lvPrintDetail.Items.Add do
            begin
              Caption:=FieldByName('PRINTTAB').AsString;
              SubItems.Add(FieldByName('PRINTCAPTION').Asstring);
              SubItems.Add(FieldByName('CAPTION').AsString);
              SubItems.Add(FieldByName('WIDTH').Asstring);
              nRowWidth:=nRowWidth+FieldByName('WIDTH').AsInteger;
              SubItems.Add(sReportName);
              SubItems.Add(FieldByName('TABLEDETAILID').Asstring);
              Next ;
            end;
          end;
          lvPrintDetail.items.endupdate;

          Close;//提供可以选择的字段LISTVIEW初始化
          SQL.Clear;
          SQL.Add('SELECT TABLEDETAILID,PRINTCAPTION,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('PRINTCAPTION').AsString;
              SubItems.Add(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 := '报表名称:'+sReportName+',打印总列宽为:'+IntToStr(nRowWidth)+'个像素.';
   end;
end;

procedure TfrmReportNamePrint.lvTableDetailClick(Sender: TObject);
begin
    GroupBox4.Visible:=False;
    spUp.Enabled:=True;
    spAdd.Enabled:=True;
    spEdit.Enabled:=True;
    spDel.Enabled:=True;
    spDown.Enabled:=True;
    spSaveDB.Enabled:=True;
    spAllUp.Enabled:=True;
end;

procedure TfrmReportNamePrint.lvPrintDetailClick(Sender: TObject);
begin
    GroupBox4.Visible:=False;
    spUp.Enabled:=True;
    spAdd.Enabled:=True;
    spEdit.Enabled:=True;
    spDel.Enabled:=True;
    spDown.Enabled:=True;
    spSaveDB.Enabled:=True;
    spAllUp.Enabled:=True;
end;

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

procedure TfrmReportNamePrint.ComboBox1KeyPress(Sender: TObject;

⌨️ 快捷键说明

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