This commit is contained in:
coco
2026-07-03 16:05:30 +08:00
commit df489d5640
1101 changed files with 779140 additions and 0 deletions
@@ -0,0 +1,230 @@
# 数据展示与分析
<cite>
**本文档引用的文件**
- [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)
</cite>
## 目录
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)