ejundatagrid是一个国产的中国式报表控件,目前网络上已难见踪影,厂家网址也不失链了。在delphi7下,我用了很多的类excel、类stringgrid的控件,我觉是它是最好使用的控件,没有之一。就因为这个控件,我买了一套授权,且它不支持现在的delphi xe的最新版本,我写的主要程序都没有往xe上迁移。
这个控件,可以与excel进行方 便交换数据,只需复制粘贴就可以将excel数据放入自己的软件中,也可以将结果快速导出或复制粘贴到excel,支持常规的公式。因为热爱,所以我将自己总结的一些常规操作放上来,记忆存档。
TEjunDataGrid控件的基本操作
1、获取行数和列数:
使用RowCount和ColCount属性可以获取到网格的行数和列数。
==============
AGrid.RowCount
AGrid.ColCount
读取和写入单元格值:通过Cells属性可以获取或设置特定单元格的值。
2、选择一定范围的单元格:
SelectRangle方法可以用于选定一个矩形区域的单元格。
==============
AGrid.SelectRangle(2, i, 5, i);
3、 遍历EjunDataGrid中的选择区域
这个操作可以让我们遍历EjunDataGrid上被选定的单元格。在下面的例子中,我们遍历从左上角到右下角的所有单元格。
==============
for i := EjunDatagrid.Selection.Top to EjunDatagrid.Selection.Bottom do
for j := EjunDatagrid.Selection.Left to EjunDatagrid.Selection.Right do
begin
// 执行相关操作...
end;
4、获取EjunDataGrid的选择区域
通过Selection属性,我们可以获取到EjunDataGrid当前选定的区域。Selection属性返回一个包含四个字段(Top, Bottom, Left, Right)的记录,分别代表选定区域的上边界、下边界、左边界和右边界。
==============
var
sel: TGridRect;
begin
sel := EjunDatagrid.Selection;
// 执行相关操作...
end;
如果有其他特定的TEjunDataGrid操作需要澄清,请随时告诉我。
5、读取EjunDataGrid中单元格的内容
Cells属性可以让我们访问EjunDataGrid中的每个单元格。然后通过.Text可以获取到单元格内的文本。
==============
cellText := EjunDatagrid.Cells[j, i].Text;
6、设置EjunDataGrid中单元格的背景颜色
可以使用Cells属性选定特定的单元格,然后使用.Style.BgColor设置该单元格的背景颜色。
==============
if (Stype = 'T') then
EjunDatagrid.Cells[j, i].Style.BgColor := clGreen;
根据条件设置EjunDataGrid单元格的背景颜色
基于数据库查询结果的不同情况,为EjunDataGrid中的单元格设置不同的背景颜色。
==============
if (Stype = 'T') then
acell.Style.BgColor := clGreen
else if (Stype = 'C') then
AGrid.Cells[Col, Row].Style.BgColor := clOlive
// ...
7、设置EjunDataGrid的行数和列数
通过设置RowCount和ColCount属性,可以定义EjunDataGrid的行数和列数。
==============
AGrid.RowCount := MaxRow + 1;
AGrid.ColCount := MaxCol + 1;
8、将数据库查询结果填充到EjunDataGrid中
使用Cells属性来定位特定的单元格,并使用AsString方法将从数据库获取的值赋给该单元格。
==============
AGrid.Cells[Col, Row].AsString := ADOQuery.FieldByName('标题').AsString;
9、合并EjunDataGrid中的单元格
通过Merge方法,
可以合并EjunDataGrid中的一组单元格。
MergeRect是一个包含四个字段(Left, Top, Right, Bottom)的记录,代表要合并的区域。
==============
AGrid.Merge(MergeRect);
合并EjunDataGrid中的单元格
Merge方法用于合并EjunDataGrid中的一组单元格。它接收一个TRect类型的参数,该参数是一个记录类型,包含四个字段:Left、Top、Right和Bottom,这四个字段分别代表合并区域的左边界、上边界、右边界和下边界。
在以下代码片段中,我们先从数据库查询获取到需要合并的单元格区域(StartCol, StartRow, EndCol, EndRow),然后将其赋值给MergeRect,最后调用Merge方法进行单元格合并:
==============
MergeRect.Left := MergeQuery.FieldByName('StartCol').AsInteger;
MergeRect.Top := MergeQuery.FieldByName('StartRow').AsInteger;
MergeRect.Right := MergeQuery.FieldByName('EndCol').AsInteger;
MergeRect.Bottom := MergeQuery.FieldByName('EndRow').AsInteger;
AGrid.Merge(MergeRect);
注意,在使用Merge方法之前,应确保待合并的单元格区域内没有已经被其他合并区域覆盖的单元格。如果存在,可能会导致合并操作失败或程序错误。
10、获取合并单元格数量:
使用MergedCellCount属性,可以获取到网格中合并单元格的数量。
==============
AGrid.MergedCellCount
获取合并单元格区域:通过MergedCellRanges[]方法,可以获取到某个合并单元格的区域(返回一个TRect对象,其中包含该区域的左上角和右下角的坐标)。
==============
r := AGrid.MergedCellRanges[i];
判断行是否在合并单元格内:检查指定的行(ARow)是否在合并单元格的范围内。如果是,则函数返回True,否则返回False。
==============
if (r.Top <= ARow) and (r.Bottom >= ARow) then
begin
Result := True;
Break;
end;
以上就是针对TEjunDataGrid中合并单元格的主要操作。
3. 合并单元格操作
TEjunDataGrid控件支持合并单元格,你可以进行以下操作:
11、判断行是否在合并单元格内:
检查指定的行(ARow)是否在合并单元格的范围内。如果是,则函数返回True,否则返回False。
==============
if (r.Top <= ARow) and (r.Bottom >= ARow) then
begin
Result := True;
Break;
end;
12、遍历合并单元格:
使用MergedCellCount属性和MergedCellRanges方法可以遍历所有已经合并的单元格。
==============
for i := 0 to AGrid.MergedCellCount - 1 do
begin
r := AGrid.MergedCellRanges[i];
if (r.Top <= ARow) and (r.Bottom >= ARow) then
begin
Result := True;
Break;
end;
end;
13、获取合并单元格区域:
通过MergedCellRanges[]方法,可以获取到某个合并单元格的区域(返回一个TRect对象,其中包含该区域的左上角和右下角的坐标)。
==============
r := AGrid.MergedCellRanges[i];
14、选定EjunDataGrid中的一组单元格,并设置其对齐方式
通过SelectRangle方法,可以选定EjunDataGrid中的一组单元格。然后使用Selection.HorzAlign设置该区域内所有单元格的水平对齐方式。
==============
AGrid.SelectRangle(MergeRect);
AGrid.Selection.HorzAlign := haCenter;
15、设置EjunDataGrid中各列的宽度
通过ColWidths属性,可以设置EjunDataGrid中每一列的宽度。
==============
AGrid.ColWidths[2] := 200;
for I := 3 to AGrid.ColCount do
AGrid.ColWidths[I] := 120;
16、遍历EjunDataGrid的每一行:
==============
for i := 1 to AGrid.RowCount - 1 do
读取和写入单元格值:例如在前三行,它将生成的编码赋值给第一个单元格,并将其归类为"C"类型。
==============
AGrid.Cells[1, i].AsString := GetFormattedCode('c-', cCount);
Stype := 'C';
17、设置单元格字体颜色:
通过Font.Color属性,可以修改单元格的字体颜色。
==============
AGrid.Cells[ACol, ARow].Font.Color := clRed;
设置单元格背景颜色:通过Color属性,可以修改单元格的背景颜色。
==============
AGrid.Cells[ACol, ARow].Color := clYellow;
设置单元格对齐方式:通过Alignment属性,可以修改单元格的内容对齐方式。
==============
AGrid.Cells[ACol, ARow].Alignment := taCenter;
请告诉我当你准备好进行后续部分时。
28、单元格的固定和释放
在TEjunDataGrid中,可以将特定的单元格设为固定或者非固定状态:
固定单元格:通过FixedCells[]方法,可以将指定的单元格设为固定状态。
==============
AGrid.FixedCells[j, i] := True;
释放单元格:通过FixedCells[]方法,可以将指定的单元格设为非固定状态。
==============
AGrid.FixedCells[j, i] := False;
以上就是从上文中提炼出的关于TEjunDataGrid的操作,包括基本属性和方法、合并单元格操作、遍历操作、单元格样式操作、单元格的固定和释放等。希望这些信息能对你有所帮助。
19、遍历操作
TEjunDataGrid可以通过循环进行逐行或逐列的遍历,这是处理数据格子中信息常用的方法:
遍历所有行:你可以通过循环遍历AGrid的所有行,进行逐行处理。
==============
for i := 0 to AGrid.RowCount - 1 do
遍历所有列:你也可以通过循环遍历AGrid的所有列,进行逐列处理。
==============
for j := 0 to AGrid.ColCount - 1 do
遍历所有合并单元格:你可以通过循环遍历AGrid的所有已经合并的单元格。
==============
for i := 0 to AGrid.MergedCellCount - 1 do
当你准备好,我将继续整理其他的操作。
20、边线设置操作
这部分主要涉及在TEjunDataGrid控件中设置单元格边线:
检查Excel单元格是否有实线边框:
如果Excel单元格有实线边框,则在ejunDataGrid中为对应的单元格设置细实线边框:
==============
FEjundatagrid.cells[ejuncol, ejunrow].Select;
FEjundatagrid.Selection.SetBorder([gbLeft, gbRight, gbTop, gbBottom], // 设置所有四个方向的边框
gbsThin, // 边框样式为实线
clBlack, // 边框颜色为黑色
True, // 内部行边线设置
True // 内部列边线设置
);
以上就是从上文中进一步提炼出的针对TEjunDataGrid的边线设置操作,包括检查Excel单元格是否有实线边框以及设置对应ejunDataGrid单元格的细实线边框。这些都是直接针对TEjunDataGrid对象的操作,并且在实际应用中非常常见。如果有更多内容需要整理,请告诉我,我会尽快为您处理。