亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unreportdisplay.pas

?? 本產品是開發LISTVIEW相關功能的可定制產品
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{**********************************************************************
                           通用報表顯示定制類
名稱:       報表顯示需求參數定制程序
目的:      按照用戶要求設制報表顯示名稱、需要顯示的列、顯示的順序
功能:      按照用戶要求設制報表顯示名稱、需要顯示的列、顯示的順序
作者:      鄧普德
版權:      成都四方信息技術有限公司
使用限制:  最多顯示25列,且列名來自于指定數據庫
定義時間:  2003-10-10
修改時間:
**********************************************************************}
unit unreportDisplay;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ExtCtrls, StdCtrls, Buttons, Menus,DB,DBTables, ImgList,Variants,
  Spin,unCDefine;
  {Self Define}

type
  TfrmReportDisplay = class(TForm)
    StatusBar1: TStatusBar;
    GroupBox1: TGroupBox;
    Panel1: TPanel;
    Splitter1: TSplitter;
    GroupBox2: TGroupBox;
    Splitter2: TSplitter;
    GroupBox3: TGroupBox;
    spDown: TSpeedButton;
    spUp: TSpeedButton;
    spAllUp: TSpeedButton;
    lvDisplayDetail: TListView;
    lvTableDetail: TListView;
    miTV: TImageList;
    spSaveDB: TSpeedButton;
    GroupBox4: TPanel;
    GroupBox9: TGroupBox;
    Label3: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    ComboBox1: TComboBox;
    Label2: TLabel;
    MainMenu1: TMainMenu;
    N5: TMenuItem;
    Bevel1: TBevel;
    lvReportName: TListView;
    N10: TMenuItem;
    N12: TMenuItem;
    ImageList1: TImageList;
    procedure Splitter2Moved(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure spDownClick(Sender: TObject);
    procedure spSaveDBClick(Sender: TObject);
    procedure spUpClick(Sender: TObject);
    procedure spAllUpClick(Sender: TObject);
    procedure lvReportNameClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure lvReportNameKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure lvTableDetailClick(Sender: TObject);
    procedure lvDisplayDetailClick(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox2KeyPress(Sender: TObject; var Key: Char);
    procedure N10Click(Sender: TObject);
    procedure N12Click(Sender: TObject);
    procedure spRefreshClick(Sender: TObject);
    procedure lvReportNameColumnClick(Sender: TObject;
      Column: TListColumn);
    procedure lvDisplayDetailColumnClick(Sender: TObject;
      Column: TListColumn);
    procedure lvTableDetailColumnClick(Sender: TObject;
      Column: TListColumn);
    procedure spExitClick(Sender: TObject);
  private
    sFormName,sFormCaption,sDiscription: string;
    nOldSelectRow,nRowSelected,nRowWidth:Integer;
    procedure Refresh;
    function bAgreeDel(const FormCaption,
      DisplayColumnCaption: string): boolean;
  end;

var
  frmReportDisplay: TfrmReportDisplay;

implementation

uses
  unCDM, UnReportInfo, unCSort;

{$R *.DFM}

procedure TfrmReportDisplay.Splitter2Moved(Sender: TObject);
begin
  spDown.Top := Splitter2.Top + 4;
  spSaveDB.Top := Splitter2.Top + 4;
  spUp.Top := Splitter2.Top + 4;
  spAllUp.Top := Splitter2.Top + 4;

  spDown.Left := Splitter2.Left + 91;
  spSaveDB.Left := Splitter2.Left + 125;
  spUp.Left := Splitter2.Left + 59;
  spAllUp.Left := Splitter2.Left + 179;
end;

procedure TfrmReportDisplay.FormCreate(Sender: TObject);
begin
    Refresh;//調用刷新LISVIEW
end;
//刪除一個顯示列
procedure TfrmReportDisplay.spDownClick(Sender: TObject);
var nWidth:Integer;
    sTemp:string;//用于防止列過長而臨時生成的一個變量
begin
  if nOldSelectRow<0 then
  begin
       StatusBar1.Panels.Items[1].Text := '請選擇你要查詢的報表!';
       Exit;
  end;
  If ((lvDisplayDetail.ItemIndex<0)
     OR (lvDisplayDetail.ItemIndex>lvDisplayDetail.Items.Count)) Then
  begin
     StatusBar1.Panels.Items[1].Text := '請選擇你要取消/刪除的定制列!';
     EXIT;
  end;

  sFormCaption:= TRIM(lvReportName.Items[nOldSelectRow].Caption);
  sTemp:=lvDisplayDetail.Items[lvDisplayDetail.ItemIndex].SubItems[0];
  if bAgreeDel(sFormCaption,sTemp)=False then
  begin
    if ((MessageDlg('   該列已被選擇打印輸出,您確認不顯示該列嗎?' ,
        mtConfirmation ,[mbYes,mbNo] ,0) <> mrYes)) then
    begin
      StatusBar1.Panels.Items[1].Text := '取消操作';
      exit;
    end;
  end;
  sTemp:=lvDisplayDetail.Items[lvDisplayDetail.ItemIndex].SubItems[1];
  nWidth:=StrToInt(sTemp);
  nRowWidth:=nRowWidth-nWidth;
  lvDisplayDetail.Items[lvDisplayDetail.ItemIndex].Delete;
  StatusBar1.Panels.Items[1].Text := '窗體名稱:'+sFormCaption
     +',刪除顯示列成功';
end;
//保存選擇
procedure TfrmReportDisplay.spSaveDBClick(Sender: TObject);
var qQryDB:TQuery;
    i:integer;
    sFormCaption,stemp1,stemp2:string;
begin
  i:=nOldSelectRow;//lvReportName.ItemIndex;
  sFormCaption:=TRIM(lvReportName.Items[i].Caption);
  qQryDB:=TQuery.Create(nil);
  qQryDB.DatabaseName:=CDM.dbData.DatabaseName;
  qQryDB.SessionName:=CDM.dbData.SessionName;
  qQryDB.Close;
  qQryDB.Sql.Clear;
  //保存前先刪除歷史顯示
  qQryDB.sql.Add('DELETE FROM SFRJDISPLAYDETAIL '
  +'WHERE SFRJDISPLAYDETAIL.TABLEDETAILID IN '
  +'( SELECT SFRJTABLEDETAIL.TABLEDETAILID FROM SFRJTABLEDETAIL'
  +' WHERE FORMCAPTION='''+sFormCaption+''')');
  qQryDB.ExecSQL;
  qQryDB.Close;
  i:=0;
  while i< lvDisplayDetail.Items.Count do
  begin
    qQryDB.Close;
    qQryDB.sql.Clear;
    stemp1:=lvDisplayDetail.Items[i].SubItems[3];
    stemp2:=lvDisplayDetail.Items[i].Caption;
    qQryDB.sql.Add('INSERT INTO SFRJDISPLAYDETAIL(TABLEDETAILID,DISPLAYTAB)');
    qQryDB.sql.Add(' VALUES('+stemp1+','+stemp2+')');
    qQryDB.ExecSql;
    i:=i+1;
  end;
  qQryDB.Close;
  qQryDB.Free;
  qQryDB:=nil;
  StatusBar1.Panels.Items[1].Text:='定制顯示內容保存成功!窗體名稱:'+sFormCaption;
end;
//選取一條顯示列
procedure TfrmReportDisplay.spUpClick(Sender: TObject);
var j,i,nWidth:integer;
begin
  try
    if lvDisplayDetail.Items.Count>25 then
    begin
       StatusBar1.Panels.Items[1].Text := '本顯示定制最多支持25列,請調整!';
       EXIT;
    end;
    IF ((lvTableDetail.ItemIndex<0) OR (lvTableDetail.ItemIndex>lvTableDetail.Items.Count))THEN
    begin
       StatusBar1.Panels.Items[1].Text := '請選擇你要定制的列!';
       EXIT;
    end;
    if nOldSelectRow<0 then
    begin
         StatusBar1.Panels.Items[1].Text := '請選擇你要查詢的報表!';
         Exit;
    end;
    GroupBox4.Visible:=False;
    i:=lvTableDetail.ItemIndex;
    if(i>=0)then
    begin
        nWidth:=StrToInt(lvTableDetail.Items[i].SubItems[0]);
    end;

    spUp.Enabled:=False;
    ComboBox1.Clear;
    j:=0;
    //需要判斷該列是否已經選取
    for j:=1 to 25 do
    begin
        i:=0;
        while i< lvDisplayDetail.Items.Count do
        begin
            if lvDisplayDetail.Items[i].Caption=IntToStr(j)then
              break;
            i:=i+1;
        end;
        if i= lvDisplayDetail.Items.Count then
           ComboBox1.Items.Add(IntToStr(j));
    end;
    nRowSelected:=lvTableDetail.ItemIndex;
    ComboBox1.ItemIndex:=0;
    GroupBox4.Visible:=True;
    Label2.Caption:='選擇列:'+lvTableDetail.Items[nRowSelected].Caption;
    StatusBar1.Panels.Items[1].Text := '窗體名稱:'+sFormCaption
                 +',選擇顯示列名稱:'+lvTableDetail.Items[nRowSelected].Caption;
  except;
  end;
END;

//取消剛才未存盤前的操作
procedure TfrmReportDisplay.spAllUpClick(Sender: TObject);
var qQryDB:TQuery;
    sFormCaption:string;
begin
  if nOldSelectRow<0 then
  begin
       StatusBar1.Panels.Items[1].Text := '請選擇你要查詢的報表!';
       Exit;
  end;
  sFormCaption:=lvReportName.Items[nOldSelectRow].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;
    qQryDB.Close;
    qQryDB.Free;
    qQryDB:=nil;
  End;
  StatusBar1.Panels.Items[1].Text := '窗體名稱:'+sFormCaption;
end;
//查看指定窗體的顯示列信息
procedure TfrmReportDisplay.lvReportNameClick(Sender: TObject);
var qQryDB:TQuery;
    sFormCaption:string;
begin
  if nOldSelectRow=lvReportName.ItemIndex then
     Exit;
  GroupBox4.Visible:=False;
  spUp.Enabled:=True;
  spDown.Enabled:=True;
  spSaveDB.Enabled:=True;
  spAllUp.Enabled:=True;
  if ((lvReportName.ItemIndex<0)
     or(lvReportName.ItemIndex>lvReportName.Items.Count)) 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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品在线观看入口| 欧美日本韩国一区二区三区视频 | 2017欧美狠狠色| 99国产精品久久| 美日韩一级片在线观看| 日韩一区欧美一区| 精品国产在天天线2019| 色综合激情久久| 懂色中文一区二区在线播放| 丝袜亚洲另类欧美| 亚洲视频一二三| 久久久高清一区二区三区| 欧美视频自拍偷拍| proumb性欧美在线观看| 国产精品中文欧美| 蜜桃视频一区二区三区在线观看| 亚洲免费电影在线| 国产精品盗摄一区二区三区| 精品国产一二三| 欧美猛男男办公室激情| 色哟哟国产精品| 不卡视频免费播放| 高清不卡一区二区| 国产一区二区中文字幕| 奇米色一区二区| 日本午夜精品视频在线观看| 五月婷婷久久丁香| 一级日本不卡的影视| 国产精品久久一卡二卡| 国产日韩欧美精品一区| 国产亚洲精品bt天堂精选| 精品国产一区二区三区久久久蜜月 | 国产午夜精品一区二区| 精品国产网站在线观看| 欧美一级精品在线| 日韩欧美一区二区三区在线| 91精品国产综合久久香蕉的特点 | 精品一区二区三区在线播放 | 91在线观看一区二区| 国产成人在线网站| 国产一区久久久| 国产剧情一区在线| 国产美女视频91| 国产高清无密码一区二区三区| 国产一区二区三区日韩| 国产成人综合在线播放| 成人激情免费网站| 91免费看片在线观看| 色婷婷精品久久二区二区蜜臂av | 久久综合九色综合97_久久久| 精品欧美一区二区三区精品久久| 日韩视频免费观看高清完整版 | 精品国产免费视频| 久久精品视频免费| 国产精品不卡一区二区三区| 亚洲欧美日韩国产成人精品影院 | 欧美一区二区三区在线电影| 欧美成人伊人久久综合网| 久久蜜桃香蕉精品一区二区三区| 国产日韩欧美在线一区| 亚洲精品自拍动漫在线| 亚洲成av人片一区二区| 老司机精品视频一区二区三区| 狠狠色丁香婷婷综合久久片| 国产高清精品久久久久| 一本一道久久a久久精品综合蜜臀| 日本道色综合久久| 欧美日本在线视频| 欧美日韩国产天堂| 成人精品鲁一区一区二区| 久久国产精品无码网站| 亚洲一区二区三区在线看| 色狠狠桃花综合| 日本一区二区免费在线观看视频| 久久成人久久爱| 国产成人免费视频一区| 日韩亚洲电影在线| 欧美天堂亚洲电影院在线播放| 国产亚洲美州欧州综合国| 91麻豆精品国产91久久久更新时间 | 欧美肥胖老妇做爰| 不卡电影一区二区三区| 欧美性xxxxx极品少妇| 成人精品国产一区二区4080| 97久久超碰精品国产| 久久蜜桃av一区精品变态类天堂| 久久精品999| 91福利视频久久久久| 欧美一级一区二区| 青草av.久久免费一区| 曰韩精品一区二区| 欧美激情一区二区三区在线| 日韩二区在线观看| 精品国产伦一区二区三区免费| 欧美日韩亚洲综合一区| 国产精品动漫网站| 蜜臀精品久久久久久蜜臀| 丁香婷婷综合色啪| 久久久欧美精品sm网站| 色呦呦国产精品| 国产精品一区二区黑丝| 91免费观看在线| 成年人国产精品| 欧美日韩免费视频| 久久夜色精品一区| 欧美日韩不卡一区| 亚洲亚洲精品在线观看| 天天色天天操综合| 天天亚洲美女在线视频| 亚洲精品国产精品乱码不99 | 国产一区二区三区四区五区入口| 欧美成人免费网站| 国产一区二区美女| 美女网站色91| 久久久不卡网国产精品一区| 亚洲精品乱码久久久久久日本蜜臀| 不卡视频在线观看| 黄页网站大全一区二区| 国产欧美精品一区二区色综合| 视频一区二区三区中文字幕| 亚洲电影欧美电影有声小说| 国产精品毛片无遮挡高清| 久久亚洲二区三区| 欧美一级国产精品| 777午夜精品视频在线播放| 91美女在线视频| 成人久久18免费网站麻豆| 亚洲日本丝袜连裤袜办公室| 99久久99久久久精品齐齐| 久久久不卡网国产精品一区| 欧美成人猛片aaaaaaa| 成人免费观看av| 精品一区二区免费视频| 97国产一区二区| www国产精品av| 同产精品九九九| a亚洲天堂av| 久久人人爽人人爽| 石原莉奈在线亚洲二区| 91片在线免费观看| 久久久蜜桃精品| 免费看精品久久片| 91久久精品国产91性色tv| 国产日韩av一区| 麻豆精品久久久| 欧美日韩一区二区三区四区| 国产精品女同一区二区三区| 精品一区二区三区免费毛片爱| 欧美美女黄视频| 亚洲激情在线播放| 国产99久久久久久免费看农村| 日韩一卡二卡三卡四卡| 亚洲国产视频直播| 日本乱人伦一区| 日韩码欧中文字| 成人aa视频在线观看| 国产女主播在线一区二区| 久久不见久久见免费视频1| 欧美精品免费视频| 亚洲成人动漫在线观看| 欧美视频三区在线播放| 亚洲精品欧美激情| 91在线观看免费视频| 18成人在线视频| a亚洲天堂av| 亚洲欧洲成人精品av97| 92国产精品观看| 亚洲啪啪综合av一区二区三区| aaa国产一区| 综合久久久久综合| 日本福利一区二区| 亚洲国产精品视频| 欧美亚洲自拍偷拍| 性做久久久久久| 7777精品久久久大香线蕉| 亚洲成av人片在线| 91精品国产入口| 美美哒免费高清在线观看视频一区二区| 91精品国产91综合久久蜜臀| 蜜臀av国产精品久久久久| 日韩精品在线网站| 国产毛片精品一区| 国产精品国产自产拍高清av王其 | 99久久婷婷国产综合精品| 亚洲精品乱码久久久久久久久| 欧美无乱码久久久免费午夜一区| 婷婷综合另类小说色区| 精品欧美一区二区三区精品久久 | 五月天中文字幕一区二区| 日韩欧美亚洲国产另类| 国内精品第一页| 国产精品天干天干在观线| 色综合久久99| 日韩精品电影一区亚洲| 精品福利在线导航| 波多野结衣中文一区| 亚洲最新在线观看| 精品国产乱码久久久久久老虎 | 麻豆视频一区二区| 久久精品日产第一区二区三区高清版|