# 数据展示与分析 **本文档引用的文件** - [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp) - [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp) - [appdatatdlistview.h](file://h/appdatatdlistview.h) - [appdatatdgrlistview.h](file://h/appdatatdgrlistview.h) - [appdataipsp2dtdview.cpp](file://cpp/Views/appdataipsp2dtdview.cpp) - [appdatarsp2dtdview.cpp](file://cpp/Views/appdatarsp2dtdview.cpp) - [appdatarspcetdview.cpp](file://cpp/Views/appdatarspcetdview.cpp) - [DataMngStruct.h](file://h/DataMngStruct.h) ## 目录 1. [项目结构](#项目结构) 2. [核心组件](#核心组件) 3. [架构概述](#架构概述) 4. [详细组件分析](#详细组件分析) 5. [依赖分析](#依赖分析) ## 项目结构 Geomative Studio项目是一个地质勘探数据处理软件,其核心功能包括测试数据的展示与分析。项目结构清晰地分为多个模块,其中与数据展示直接相关的文件主要位于`cpp/Views`和`h`目录下。关键的测试数据展示组件包括列表视图(appdatatdlistview)和图形化视图(appdatatdgrlistview),这些组件负责渲染测试数据、处理用户交互以及实现数据可视化。 ```mermaid graph TB subgraph "视图层" A[appdatatdlistview] --> |继承| B[CListView] C[appdatatdgrlistview] --> |继承| B D[appdataipsp2dtdview] --> |继承| E[CView] F[appdatarsp2dtdview] --> |继承| E G[appdatarspcetdview] --> |继承| E end subgraph "数据管理" H[DataMngStruct] end A --> H C --> H D --> A D --> C F --> A F --> C G --> A C --> G ``` **图表来源** - [appdatatdlistview.h](file://h/appdatatdlistview.h#L16) - [appdatatdgrlistview.h](file://h/appdatatdgrlistview.h#L16) - [appdataipsp2dtdview.cpp](file://cpp/Views/appdataipsp2dtdview.cpp#L23) - [appdatarsp2dtdview.cpp](file://cpp/Views/appdatarsp2dtdview.cpp#L22) - [appdatarspcetdview.cpp](file://cpp/Views/appdatarspcetdview.cpp#L24) - [DataMngStruct.h](file://h/DataMngStruct.h#L14) **章节来源** - [appdatatdlistview.h](file://h/appdatatdlistview.h#L1-L68) - [appdatatdgrlistview.h](file://h/appdatatdgrlistview.h#L1-L63) ## 核心组件 测试数据展示功能的核心组件包括`CAppDataTdListView`和`CAppDataTdGrListView`,分别负责以列表和图形化方式展示测试数据。`CAppDataTdListView`提供了数据的表格化展示,支持列排序、批量导出和删除等操作。`CAppDataTdGrListView`则通过自定义绘制实现了数据的颜色编码,能够根据测量状态(如短路、开路、大电阻等)以不同颜色显示数据项,便于用户快速识别异常情况。 **章节来源** - [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp#L24-L485) - [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp#L23-L189) ## 架构概述 系统的数据展示架构采用MVC模式,视图层由多个继承自MFC框架的视图类组成。`CAppDataTdListView`和`CAppDataTdGrListView`作为具体的视图实现,通过消息映射机制响应用户交互事件。不同测量模式(如2D、3D、CE)的数据展示通过专门的视图类(如`CAppDataIpsp2DTdView`、`CAppDataRsp2DTdView`、`CAppDataRspCETdView`)来实现,这些视图类通过分割窗口将详细信息、内容列表和图形化视图组织在一起,形成统一的用户界面。 ```mermaid classDiagram class CAppDataTdListView { +OnInitialUpdate() +OnColumnclick() +OnDblclk() +OnBatchexport() +OnBatchDelData() } class CAppDataTdGrListView { +OnInitialUpdate() +OnColumnclick() +OnCustomDrawList() } class CAppDataIpsp2DTdView { +Create() +OnSize() } class CAppDataRsp2DTdView { +Create() +OnSize() } class CAppDataRspCETdView { +Create() +OnSize() } CAppDataTdListView <|-- CAppDataIpsp2DTdView CAppDataTdListView <|-- CAppDataRsp2DTdView CAppDataTdListView <|-- CAppDataRspCETdView CAppDataTdGrListView <|-- CAppDataIpsp2DTdView CAppDataTdGrListView <|-- CAppDataRsp2DTdView CAppDataTdGrListView <|-- CAppDataRspCETdView ``` **图表来源** - [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp#L24-L485) - [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp#L23-L189) - [appdataipsp2dtdview.cpp](file://cpp/Views/appdataipsp2dtdview.cpp#L23-L117) - [appdatarsp2dtdview.cpp](file://cpp/Views/appdatarsp2dtdview.cpp#L22-L118) - [appdatarspcetdview.cpp](file://cpp/Views/appdatarspcetdview.cpp#L24-L134) ## 详细组件分析 ### 列表视图分析 `CAppDataTdListView`组件实现了测试数据的列表化展示,通过`OnInitialUpdate`方法初始化列标题,支持用户通过点击列标题进行排序。该组件还实现了批量导出和删除功能,通过进度条和状态提示为用户提供操作反馈。 ```mermaid flowchart TD Start([初始化视图]) --> InsertColumns["插入列标题"] InsertColumns --> SetExtendedStyle["设置扩展样式"] SetExtendedStyle --> EnableSorting["启用列排序"] EnableSorting --> EnableSelection["启用选择功能"] EnableSelection --> End([视图准备就绪]) ``` **图表来源** - [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp#L80-L271) **章节来源** - [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp#L1-L485) ### 图形化视图分析 `CAppDataTdGrListView`组件通过`OnCustomDrawList`方法实现了数据项的自定义绘制,根据测量状态应用不同的文本颜色。短路和开路状态显示为红色,大电阻状态显示为蓝色,正常状态显示为黑色,这种颜色编码策略有助于用户快速识别异常测量值。 ```mermaid flowchart TD Start([自定义绘制]) --> CheckStage["检查绘制阶段"] CheckStage --> PrePaint{"预绘制阶段?"} PrePaint --> |是| NotifyItemDraw["通知项目绘制"] PrePaint --> |否| ItemPrePaint{"项目预绘制?"} ItemPrePaint --> |是| NotifySubItemDraw["通知子项目绘制"] ItemPrePaint --> |否| SubItemDraw{"子项目绘制?"} SubItemDraw --> |是| GetStatus["获取状态文本"] GetStatus --> CheckStatus{"状态为短路/开路?"} CheckStatus --> |是| SetRed["设置红色文本"] CheckStatus --> |否| CheckLargeRes{"状态为大电阻?"} CheckLargeRes --> |是| SetBlue["设置蓝色文本"] CheckLargeRes --> |否| SetBlack["设置黑色文本"] SetRed --> End SetBlue --> End SetBlack --> End ``` **图表来源** - [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp#L145-L188) **章节来源** - [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp#L1-L189) ### 测量模式视图分析 不同测量模式的视图类(如`CAppDataIpsp2DTdView`、`CAppDataRsp2DTdView`、`CAppDataRspCETdView`)通过创建分割窗口来组织界面布局。每个视图包含三个主要部分:详细信息面板、内容列表和图形化视图,这种一致的布局设计为用户提供了统一的操作体验。 ```mermaid sequenceDiagram participant View as CAppDataIpsp2DTdView participant Splitter1 as m_firstSplitter participant Splitter2 as m_secondSplitter participant Detail as CAppDataTdDetailListView participant Content as CAppDataIpsp2DTdConListView participant Graph as CAppDataTdGrListView View->>View : Create() View->>Splitter1 : CreateStatic(1,2) Splitter1->>Splitter1 : CreateView(详细信息) Splitter1->>Splitter2 : CreateStatic(2,1) Splitter2->>Splitter2 : CreateView(内容列表) Splitter2->>Splitter2 : CreateView(图形化视图) Splitter2->>Splitter2 : RecalcLayout() Splitter1->>Splitter1 : RecalcLayout() ``` **图表来源** - [appdataipsp2dtdview.cpp](file://cpp/Views/appdataipsp2dtdview.cpp#L69-L102) - [appdatarsp2dtdview.cpp](file://cpp/Views/appdatarsp2dtdview.cpp#L68-L103) - [appdatarspcetdview.cpp](file://cpp/Views/appdatarspcetdview.cpp#L67-L117) **章节来源** - [appdataipsp2dtdview.cpp](file://cpp/Views/appdataipsp2dtdview.cpp#L1-L117) - [appdatarsp2dtdview.cpp](file://cpp/Views/appdatarsp2dtdview.cpp#L1-L118) - [appdatarspcetdview.cpp](file://cpp/Views/appdatarspcetdview.cpp#L1-L134) ## 依赖分析 测试数据展示组件依赖于MFC框架的`CListView`和`CView`基类,通过继承和重写虚函数来实现特定功能。这些组件还依赖于`DataMngStruct`类来获取和管理测试数据,形成了清晰的依赖关系。不同测量模式的视图类共享相同的列表和图形化视图组件,体现了代码的复用性。 ```mermaid graph TD A[CAppDataTdListView] --> B[CListView] C[CAppDataTdGrListView] --> B D[CAppDataIpsp2DTdView] --> E[CView] F[CAppDataRsp2DTdView] --> E G[CAppDataRspCETdView] --> E A --> H[DataMngStruct] C --> H D --> A D --> C F --> A F --> C G --> A G --> C ``` **图表来源** - [appdatatdlistview.h](file://h/appdatatdlistview.h#L16) - [appdatatdgrlistview.h](file://h/appdatatdgrlistview.h#L16) - [appdataipsp2dtdview.cpp](file://cpp/Views/appdataipsp2dtdview.cpp#L23) - [appdatarsp2dtdview.cpp](file://cpp/Views/appdatarsp2dtdview.cpp#L22) - [appdatarspcetdview.cpp](file://cpp/Views/appdatarspcetdview.cpp#L24) - [DataMngStruct.h](file://h/DataMngStruct.h#L14) **章节来源** - [appdatatdlistview.cpp](file://cpp/Views/appdatatdlistview.cpp#L1-L485) - [appdatatdgrlistview.cpp](file://cpp/Views/appdatatdgrlistview.cpp#L1-L189) - [appdataipsp2dtdview.cpp](file://cpp/Views/appdataipsp2dtdview.cpp#L1-L117) - [appdatarsp2dtdview.cpp](file://cpp/Views/appdatarsp2dtdview.cpp#L1-L118) - [appdatarspcetdview.cpp](file://cpp/Views/appdatarspcetdview.cpp#L1-L134) - [DataMngStruct.h](file://h/DataMngStruct.h#L1-L23)