Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
cz_012273
WZGL
提交
e08f15aa
W
WZGL
项目概览
cz_012273
/
WZGL
通知
2
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
WZGL
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e08f15aa
编写于
6月 02, 2022
作者:
C
cz_012273
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Dbgrid点击排序功能加入公用模块(入库、出库、查询、提示均可使用,同时自动调整前五列列宽)
上级
8c39182a
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
84 addition
and
44 deletion
+84
-44
ChaXun.dfm
ChaXun.dfm
+1
-0
ChaXun.pas
ChaXun.pas
+6
-0
ChuKu.dfm
ChuKu.dfm
+1
-0
ChuKu.pas
ChuKu.pas
+6
-0
DataUnit.pas
DataUnit.pas
+55
-0
RuKu.dfm
RuKu.dfm
+1
-0
RuKu.pas
RuKu.pas
+6
-0
TiShi.dfm
TiShi.dfm
+1
-0
TiShi.pas
TiShi.pas
+7
-44
WZGL.res
WZGL.res
+0
-0
未找到文件。
ChaXun.dfm
浏览文件 @
e08f15aa
...
...
@@ -222,5 +222,6 @@ object Form4: TForm4
TitleFont.Height = -11
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
OnTitleClick = DBGrid1TitleClick
end
end
ChaXun.pas
浏览文件 @
e08f15aa
...
...
@@ -32,6 +32,7 @@ type
procedure
Button1Click
(
Sender
:
TObject
);
procedure
Button2Click
(
Sender
:
TObject
);
procedure
FormShow
(
Sender
:
TObject
);
procedure
DBGrid1TitleClick
(
Column
:
TColumn
);
private
{ Private declarations }
...
...
@@ -63,6 +64,11 @@ begin
close
;
end
;
procedure
TForm4
.
DBGrid1TitleClick
(
Column
:
TColumn
);
begin
DM1
.
DBGridSort
(
Column
);
end
;
procedure
TForm4
.
FormShow
(
Sender
:
TObject
);
begin
dm1
.
FDConnection1
.
Connected
:=
True
;
...
...
ChuKu.dfm
浏览文件 @
e08f15aa
...
...
@@ -119,6 +119,7 @@ object Form3: TForm3
TitleFont.Height = -11
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
OnTitleClick = DBGrid1TitleClick
end
object DBLookupComboBox1: TDBLookupComboBox
Left = 151
...
...
ChuKu.pas
浏览文件 @
e08f15aa
...
...
@@ -39,6 +39,7 @@ type
procedure
DBLookupComboBox2CloseUp
(
Sender
:
TObject
);
procedure
DBLookupComboBox3CloseUp
(
Sender
:
TObject
);
procedure
Button3Click
(
Sender
:
TObject
);
procedure
DBGrid1TitleClick
(
Column
:
TColumn
);
private
{ Private declarations }
...
...
@@ -155,6 +156,11 @@ begin
end
;
end
;
procedure
TForm3
.
DBGrid1TitleClick
(
Column
:
TColumn
);
begin
DM1
.
DBGridSort
(
Column
);
end
;
procedure
TForm3
.
DBLookupComboBox1CloseUp
(
Sender
:
TObject
);
begin
DM1
.
FDQuery3
.
FieldByName
(
'品名'
).
value
:=
DBLookupComboBox1
.
text
;
...
...
DataUnit.pas
浏览文件 @
e08f15aa
...
...
@@ -37,6 +37,7 @@ type
DataSource8
:
TDataSource
;
SaveDialog1
:
TSaveDialog
;
procedure
DataModuleCreate
(
Sender
:
TObject
);
procedure
DBGridSort
(
Column
:
TColumn
);
private
{ Private declarations }
...
...
@@ -111,6 +112,60 @@ begin
end
;
end
;
procedure
TDM1
.
DBGridSort
(
Column
:
TColumn
);
//DBgrid点击标题栏排序
var
SqlStr
,
myFieldName
,
TempStr
:
string
;
OrderPos
:
integer
;
SavedParams
:
TParams
;
begin
if
not
(
Column
.
Field
.
FieldKind
in
[
fkData
,
fkLookup
])
then
exit
;
//如果字段类型不属于物理字段或查询字段则退出
if
Column
.
Field
.
FieldKind
=
fkData
then
myFieldName
:=
UpperCase
(
Column
.
Field
.
FieldName
)
//如为物理字段,字段名大写
else
myFieldName
:=
UpperCase
(
Column
.
Field
.
KeyFields
);
//如为查询字段,主键名大写
while
Pos
(
myFieldName
,
';'
)<>
0
do
//如果名称中包含分号
myFieldName
:=
copy
(
myFieldName
,
1
,
Pos
(
myFieldName
,
';'
)-
1
)
+
','
+
copy
(
myFieldName
,
Pos
(
myFieldName
,
';'
)+
1
,
100
);
//把分号变逗号
with
TFDQuery
(
TDBGrid
(
Column
.
Grid
).
DataSource
.
DataSet
)
do
begin
close
;
SqlStr
:=
UpperCase
(
Sql
.
Text
);
//SQL语句字符串大写
// if pos(myFieldName,SqlStr)=0 then exit; //如果SQL语句中不存在所选字段名,则退出
if
ParamCount
>
0
then
//如果运行过程时包含参数
begin
SavedParams
:=
TParams
.
Create
;
//创建保存参数变量
SavedParams
.
Assign
(
Params
);
//连接参数
end
;
OrderPos
:=
pos
(
'ORDER'
,
SqlStr
);
//获取'ORDER'串在SQL语句中的起始位置
if
(
OrderPos
=
0
)
or
(
pos
(
myFieldName
,
copy
(
SqlStr
,
OrderPos
,
100
))=
0
)
then
//如不存在ORDER或ORDER子句中不包含所选字段
TempStr
:=
' Order By '
+
myFieldName
+
' Asc'
//生成按照所选字段升序排列的ORDER子句
else
if
pos
(
'ASC'
,
SqlStr
)=
0
then
//如果ORDER子句中有所选字段但不包含升序标志
TempStr
:=
' Order By '
+
myFieldName
+
' Asc'
//生成按所选字段升序排列的ORDER子句
else
//如果ORDER子句中有所选字段且包含升序标志
TempStr
:=
' Order By '
+
myFieldName
+
' Desc'
;
//生成按所选字段降序排列的ORDER子句
if
OrderPos
<>
0
then
SqlStr
:=
Copy
(
SqlStr
,
1
,
OrderPos
-
1
);
//如果存在ORDER子句,提取ORDER子句之前的SQL语句内容
SqlStr
:=
SqlStr
+
TempStr
;
//将其与新生成的ORDER子句连接
Active
:=
False
;
//锁定QUERY状态
Sql
.
Clear
;
//清除SQL内容
Sql
.
Text
:=
SqlStr
;
//更新SQL内容
if
ParamCount
>
0
then
//如果运行过程时包含参数
begin
Params
.
Assign
(
SavedParams
);
//提取保存的参数变量
SavedParams
.
Free
;
//释放参数变量
end
;
Prepare
;
//将带参数的SQL语句传给数据库引擎
Open
;
//打开查询
Fields
[
0
].
DisplayWidth
:=
4
;
Fields
[
1
].
DisplayWidth
:=
20
;
Fields
[
2
].
DisplayWidth
:=
6
;
Fields
[
3
].
DisplayWidth
:=
10
;
end
;
end
;
function
ExportDBGrid
(
Args
:
array
of
const
;
SheetName
:
string
):
boolean
;
// 循环读取记录方式导出EXCEL
...
...
RuKu.dfm
浏览文件 @
e08f15aa
...
...
@@ -112,6 +112,7 @@ object Form2: TForm2
TitleFont.Height = -11
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
OnTitleClick = DBGrid1TitleClick
end
object DBNavigator1: TDBNavigator
Left = 31
...
...
RuKu.pas
浏览文件 @
e08f15aa
...
...
@@ -39,6 +39,7 @@ type
procedure
DBLookupComboBox1CloseUp
(
Sender
:
TObject
);
procedure
FormCreate
(
Sender
:
TObject
);
procedure
Button3Click
(
Sender
:
TObject
);
procedure
DBGrid1TitleClick
(
Column
:
TColumn
);
private
{ Private declarations }
...
...
@@ -140,6 +141,11 @@ begin
end
;
end
;
procedure
TForm2
.
DBGrid1TitleClick
(
Column
:
TColumn
);
begin
DM1
.
DBGridSort
(
Column
);
end
;
procedure
TForm2
.
DBLookupComboBox1CloseUp
(
Sender
:
TObject
);
begin
DM1
.
FDQuery1
.
FieldByName
(
'品名'
).
value
:=
DBLookupComboBox1
.
text
;
...
...
TiShi.dfm
浏览文件 @
e08f15aa
...
...
@@ -79,6 +79,7 @@ object Form6: TForm6
TitleFont.Name = 'Tahoma'
TitleFont.Style = []
OnDrawDataCell = DBGrid2DrawDataCell
OnTitleClick = DBGrid2TitleClick
end
object Button3: TButton
Left = 180
...
...
TiShi.pas
浏览文件 @
e08f15aa
...
...
@@ -28,6 +28,7 @@ type
procedure
Button3Click
(
Sender
:
TObject
);
procedure
Button4Click
(
Sender
:
TObject
);
procedure
DBGrid1TitleClick
(
Column
:
TColumn
);
procedure
DBGrid2TitleClick
(
Column
:
TColumn
);
private
{ Private declarations }
...
...
@@ -115,51 +116,8 @@ begin
end
;
procedure
TForm6
.
DBGrid1TitleClick
(
Column
:
TColumn
);
var
SqlStr
,
myFieldName
,
TempStr
:
string
;
OrderPos
:
integer
;
SavedParams
:
TParams
;
begin
if
not
(
Column
.
Field
.
FieldKind
in
[
fkData
,
fkLookup
])
then
exit
;
//如果字段类型不属于物理字段或查询字段则退出
if
Column
.
Field
.
FieldKind
=
fkData
then
myFieldName
:=
UpperCase
(
Column
.
Field
.
FieldName
)
//如为物理字段,字段名大写
else
myFieldName
:=
UpperCase
(
Column
.
Field
.
KeyFields
);
//如为查询字段,主键名大写
while
Pos
(
myFieldName
,
';'
)<>
0
do
//如果名称中包含分号
myFieldName
:=
copy
(
myFieldName
,
1
,
Pos
(
myFieldName
,
';'
)-
1
)
+
','
+
copy
(
myFieldName
,
Pos
(
myFieldName
,
';'
)+
1
,
100
);
//把分号变逗号
with
dm1
.
FDQuery7
do
begin
SqlStr
:=
UpperCase
(
Sql
.
Text
);
// if pos(myFieldName,SqlStr)=0 then exit;
if
ParamCount
>
0
then
begin
SavedParams
:=
TParams
.
Create
;
SavedParams
.
Assign
(
Params
);
end
;
OrderPos
:=
pos
(
'ORDER'
,
SqlStr
);
if
(
OrderPos
=
0
)
or
(
pos
(
myFieldName
,
copy
(
SqlStr
,
OrderPos
,
100
))=
0
)
then
TempStr
:=
' Order By '
+
myFieldName
+
' Asc'
else
if
pos
(
'ASC'
,
SqlStr
)=
0
then
TempStr
:=
' Order By '
+
myFieldName
+
' Asc'
else
TempStr
:=
' Order By '
+
myFieldName
+
' Desc'
;
if
OrderPos
<>
0
then
SqlStr
:=
Copy
(
SqlStr
,
1
,
OrderPos
-
1
);
SqlStr
:=
SqlStr
+
TempStr
;
Active
:=
False
;
Sql
.
Clear
;
Sql
.
Text
:=
SqlStr
;
if
ParamCount
>
0
then
begin
Params
.
Assign
(
SavedParams
);
SavedParams
.
Free
;
end
;
Prepare
;
Open
;
end
;
DM1
.
DBGridSort
(
Column
);
end
;
procedure
TForm6
.
DBGrid2DrawDataCell
(
Sender
:
TObject
;
const
Rect
:
TRect
;
...
...
@@ -178,4 +136,9 @@ begin
DBGrid2
.
DefaultDrawDataCell
(
Rect
,
Field
,
State
);
end
;
procedure
TForm6
.
DBGrid2TitleClick
(
Column
:
TColumn
);
begin
DM1
.
DBGridSort
(
Column
);
end
;
end
.
WZGL.res
浏览文件 @
e08f15aa
无法预览此类型文件
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录