瀏覽代碼

Debug: Collapase all & Search

MaiXinRong 8 年之前
父節點
當前提交
ee6353e9d3
共有 2 個文件被更改,包括 141 次插入3 次删除
  1. 75 3
      Forms/ReportsFrm.dfm
  2. 66 0
      Forms/ReportsFrm.pas

+ 75 - 3
Forms/ReportsFrm.dfm

@@ -104,9 +104,9 @@ object ReportsForm: TReportsForm
       TabOrder = 0
       object extvReport: TExTreeView
         Left = 0
-        Top = 35
+        Top = 57
         Width = 211
-        Height = 390
+        Height = 368
         Align = alClient
         Font.Charset = DEFAULT_CHARSET
         Font.Color = clWindowText
@@ -122,6 +122,7 @@ object ReportsForm: TReportsForm
         CheckMode = cmNoGray
         TabOrder = 0
         OnClick = extvReportClick
+        OnKeyDown = extvReportKeyDown
         Items.Data = {
           0600000033000000000000000100000001000000FFFFFFFF0000000000000000
           1AD6A7B1ED303220D6D0C6DAD6A7B8B6D6A4CAE9B1ED202E7372743400000000
@@ -188,6 +189,77 @@ object ReportsForm: TReportsForm
           end
         end
       end
+      object pnlSearch: TPanel
+        Left = 0
+        Top = 35
+        Width = 211
+        Height = 22
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 2
+        Visible = False
+        DesignSize = (
+          211
+          22)
+        object imgSearch: TImage
+          Left = 195
+          Top = 3
+          Width = 16
+          Height = 16
+          Cursor = crHandPoint
+          Anchors = [akTop, akRight]
+          AutoSize = True
+          Picture.Data = {
+            055449636F6E0000010001001010000001002000680400001600000028000000
+            1000000020000000010020000000000000000000000000000000000000000000
+            0000000000000000000000000000000000000000000000000000000000000000
+            D098A090C09090E0B06060FF802020E0801820E0A05850B0C098906000000000
+            000000000000000000000000000000000000000000000000C0808010C07870D0
+            D0B0A0FFC05830FFE0A080FFF0C8B0FFF0C0A0FFD09070FF903010FFB0787080
+            0000000000000000000000000000000000000000C0808070C08080FFE0C0B0FF
+            D07040FFFFD0B0FFFFFFF0FFE0C8C0FF904030FFFFE8D0FFF0B890FF903010FF
+            C09080600000000000000000C0888020C08080E0C09890FFE0E8E0FFE0B8A0FF
+            F0B090FFFFFFFFFFFFFFFFFFE0D0C0FFD0A090FFFFE8E0FFFFE0D0FFD09070FF
+            A05050B000000000C0788080C07880FFD0C8C0FFF0F8F0FFD0C8C0FFE08050FF
+            FFD0B0FFFFFFFFFFFFFFFFFFFFF0F0FF905040FFC08870FFFFE8E0FFF0C0A0FF
+            801810E0A08080E0C09090FFE0F0E0FFE0E8E0FFC09090FFC08880FFF08850FF
+            FFD0B0FFFFFFFFFFFFFFFFFFF0E8E0FFE0D0D0FF905040FFD0A890FFFFC0A0FF
+            902820E0C07870FFE0E8E0FFD0C0C0FFC07880FFC08080FFC08080FFF0A080FF
+            FFC0A0FFFFFFFFFFC08880FFA05840FFE0D0D0FFA05840FFC0A090FFE0A880FF
+            C06860FFC08080FFD0A8B0FFC08080FFD09090FFD09090FFD08890FFE0A8A0FF
+            FFA870FFFFC8B0FFF0E8E0FFC08880FFA05840FFC08880FFF0C8B0FFD07040FF
+            D09090F0D0A0A0FFD0A8B0FFD09090FFE0A0A0FFE098A0FFD09890FFD09090FF
+            E0A8A0FFFFA870FFFFC0A0FFFFE0D0FFFFE0D0FFFFC0A0FFE08850FFD0C0B0FF
+            E0E0E0FFD0A0A020D0A0A0FFF0D0D0FFD09890FFE0A8B0FFE0A8B0FFE0A8A0FF
+            E0A0A0FFE0B0B0FFF0A890FFFF9060FFF09050FFE0A080FFD09890FFC06870FF
+            C0B0B0FF00000000D0A0A030D0A0A0FFF0C8D0FFD09890FFE0B0B0FFF0B8B0FF
+            E0B0B0FFE0A8B0FFE0A0A0FFE0A0A0FFD09890FFD09090FFD08880FFC07070FF
+            C07070FF0000000000000000D0A0A030D0A0A0FFF0C8D0FFD09890FFE0B0B0FF
+            F0C0C0FFF0B8B0FFF0B0B0FFE0B0B0FFE0A8B0FFE0A0A0FFD098A0FFD09090FF
+            D08880E0000000000000000000000000D0A0A030D0A0A0FFF0C8D0FFD09890FF
+            F0B8B0FFF0C8C0FFF0C0C0FFF0C0C0FFF0B8C0FFE0B0B0FFD0A8A0FFD0808090
+            C080801000000000000000000000000000000000D0A0A030D0A0A0FFF0C8D0FF
+            D09890FFF0C0C0FFE0C0C0FFE0C0C0FFD0A8B0FFC08080A0C080801000000000
+            000000000000000000000000000000000000000000000000D0A0A030D0A0A0FF
+            F0D0D0FFE0A0A0FFD0A8A0FFC08080A0C0808020000000000000000000000000
+            00000000000000000000000000000000000000000000000000000000D0A0A020
+            D09090D0C08080A0C08080200000000000000000000000000000000000000000
+            00000000FE039C41F8019C41F0009C41C0009C4180009C4100009C4100009C41
+            00009C4100009C4100009C4180009C41C0009C41E0009C41F0039C41F80F9C41
+            FC3F9C41}
+          OnClick = imgSearchClick
+        end
+        object edtSearch: TEdit
+          Left = 0
+          Top = 2
+          Width = 193
+          Height = 18
+          Anchors = [akLeft, akTop, akRight]
+          Ctl3D = False
+          ParentCtl3D = False
+          TabOrder = 0
+        end
+      end
     end
     object sbReportsPreview: TScrollBox
       Left = 214
@@ -216,7 +288,7 @@ object ReportsForm: TReportsForm
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clWindowText
     Font.Height = -12
-    Font.Name = #24494#36719#38597#40657
+    Font.Name = 'Microsoft YaHei UI'
     Font.Style = []
     Bars = <
       item

+ 66 - 0
Forms/ReportsFrm.pas

@@ -61,6 +61,9 @@ type
     dxcciExcelMode: TdxBarControlContainerItem;
     pnlReports: TPanel;
     BatchPrintXml: TPrintComXML;
+    pnlSearch: TPanel;
+    edtSearch: TEdit;
+    imgSearch: TImage;
     procedure PreviewComXMLGetDataConnection(var ADOCon: TADOConnection);
     procedure xlbRealSizeClick(Sender: TObject);
     procedure xlbOnePageClick(Sender: TObject);
@@ -91,6 +94,9 @@ type
     procedure chkFillZeroClick(Sender: TObject);
     procedure PreviewComXMLGetDatasetEvent(DatasetInfo: PDatasetInfoRec;
       var ADataset: TDataSet);
+    procedure extvReportKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure imgSearchClick(Sender: TObject);
   private
     FProjectData: TProjectData;
     FCurPage: Integer;
@@ -1318,6 +1324,8 @@ begin
   rdbtnA3.Checked := SameText(rdbtnA3.Caption, ReportConfig.PageSize);
   rdbtnA4.Checked := SameText(rdbtnA4.Caption, ReportConfig.PageSize);
   SetPrinterPageSize(ReportConfig.PageSize);
+
+  pnlSearch.Visible := _IsDebugView;
 end;
 
 procedure TReportsForm.LoadExcelBorder(var Border: TColumnLineRec);
@@ -1556,4 +1564,62 @@ begin
   inherited;
 end;
 
+procedure TReportsForm.extvReportKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if (ssCtrl in Shift) and (ssShift in Shift) and (ssAlt in Shift)
+      and (Key in [67, 99]) then // 'c', 'C'
+    extvReport.FullCollapse;
+end;
+
+procedure TReportsForm.imgSearchClick(Sender: TObject);
+
+  function SearchAfter(const AText: string; vBegin: TExTreeNode): TExTreeNode;
+  var
+    vNext: TExTreeNode;
+  begin
+    Result := nil;
+    vNext := vBegin.GetNext;
+    while Assigned(vNext) and not Assigned(Result) do
+    begin
+      if (Pos(AText, vNext.Text) > 0) then
+        Result := vNext;
+      vNext := vNext.GetNext;
+    end;
+  end;
+
+  function SearchBegin(const AText: string; vEnd: TExTreeNode): TExTreeNode;
+  var
+    vPre: TExTreeNode;
+  begin
+    Result := nil;
+    vPre := extvReport.Items.GetFirstNode;
+    while (vPre <> vEnd) and not Assigned(Result) do
+    begin
+      if (Pos(AText, vPre.Text) > 0) then
+        Result := vPre;
+      vPre := vPre.GetNext;
+    end;
+  end;
+
+  procedure SearchReportTemplate(const AText: string);
+  var
+    vNode: TExTreeNode;
+  begin
+    vNode := SearchAfter(AText, extvReport.Selected);
+    if not Assigned(vNode) then
+      vNode := SearchBegin(AText, extvReport.Selected);
+    if Assigned(vNode) then
+    begin
+      extvReport.Selected := vNode;
+      extvReport.OnClick(extvReport);
+    end
+    else
+      WarningMessage(Format('未找到含关键字“%s”的报表,请缩短关键字后查询', [AText]));
+  end;
+
+begin
+  SearchReportTemplate(edtSearch.Text);
+end;
+
 end.