Formula One - Delphi
来源:互联网 发布:淘宝月季花推荐店家 编辑:程序博客网 时间:2024/05/14 09:07
一个从DBGrid输出到Formula One的函数,用的是Formula One 6.1,有些属性Delphi自带的Formula One 3.0不支持,至少得安装Formula One 5.0以上版本.
可以修改一下这个函数,直接传入DataSet做参数,用DBGrid作参数传入是考虑到在F1Book上带出DBGrid的对齐格式、列宽等.
函数如下:
//-----------------------------------------------------------------------------
// 函数名:WriteDataFromDBGrid
// 功能描述:将一个DBGrid的内容输出到F1Book
// 入口参数:ADBGrid - 数据网格
// AStartRow - 数据起始行
// AStartCol - 数据起始列
// AF1Book – 接受数据的Formula one book
// 示例:WriteDataFromDBGrid(DBGrid1, 2, 2, F1Book1);
// 上面的例子是从F1Book1的2行2列起输出DBGrid1的内容
// 作者:JoyHero
//-----------------------------------------------------------------------------
procedure WriteDataFromDBGrid(ADBGrid: TDBGrid;
AStartRow, AStartCol: Integer; AF1Book : TF1Book);
var
i,j:Integer;
iColCount, iRowCount:Integer;
cfTemp:F1CellFormat;
iUnvisibleColCount: Integer;
begin
with AF1Book do
begin
//获得数据列数
iColCount:= ADBGrid.Columns.Count;
iRowCount:= ADBGrid.DataSource.DataSet.RecordCount;
iUnvisibleColCount:= 0;
//填充标题列
for j:=0 to iColCount-1 do
begin
EntryRC[AStartRow,AStartCol+j]:=
ADBGrid.Columns[j].Title.Caption;
ColWidth[AStartCol+j]:= ADBGrid.Columns[j].Width*50;
end;
//填充数据
if ADBGrid.DataSource.DataSet.Active then
begin
with ADBGrid.DataSource.DataSet do
begin
First;
i:= AStartRow+1;
while not Eof do
begin
for j:= 0 to iColCount-1 do
begin
EntryRC[i,AStartCol+j]:= ADBGrid.Columns[j].Field.DisplayText;
end;
Next;
Inc(i);
end;
end;
end;
//设置标题列居中显示,字体为粗体
SetSelection(AStartRow, AStartCol, AStartRow, AStartCol+iColCount-1);
HAlign:=F1HAlignCenter;
FontBold:=True;
//按照DBGrid的对齐方式设置数据列的对齐方式
try
for j:=0 to iColCount-1 do
begin
SetSelection(AStartRow+1, AStartCol+j, AStartRow+iRowCount, AStartCol+j);
Case ADBGrid.Columns[j].Alignment of
taLeftJustify:
HAlign:=F1HAlignLeft;
taRightJustify:
HAlign:=F1HAlignRight;
taCenter:
HAlign:=F1HAlignCenter;
end;
end;
except
end;
//删除DBGrid不显示的列
try
for j:=0 to iColCount-1 do
begin
if not ADBGrid.Columns[j].Visible then
begin
SetSelection(AStartRow, AStartCol+j-iUnvisibleColCount,
AStartRow+iRowCount, AStartCol+j-iUnvisibleColCount);
EditDelete(F1ShiftHorizontal);
iUnvisibleColCount:= iUnvisibleColCount+1;
end;
end;
except
end;
//画边框
SetSelection(AStartRow, AStartCol, AStartRow+iRowCount, AStartCol+iColCount-1-iUnvisibleColCount);
cfTemp:=GetCellFormat;
cfTemp.BorderStyle[F1TopBorder]:=F1BorderThin;
cfTemp.BorderStyle[F1LeftBorder]:=F1BorderThin;
cfTemp.BorderStyle[F1BottomBorder]:=F1BorderThin;
cfTemp.BorderStyle[F1RightBorder]:=F1BorderThin;
cfTemp.BorderStyle[F1HInsideBorder]:=F1BorderThin;
cfTemp.BorderStyle[F1VInsideBorder]:=F1BorderThin;
SetCellFormat(cfTemp);
end;
end;
Formula One支持直接连接ODBC数据库并返回查询结果,以下是一个小例子:
在窗体上放一个F1Book(我使用的是Formula One 6.1)和一个按纽Botton1,Botton1的Click事件如下:
procedure TForm1.Button1Click(Sender: TObject);
var
myConnect : F1ODBCConnect;
myQuery : F1ODBCQuery;
begin
myConnect := CoF1ODBCConnect.Create; //创建一个ODBC连接
myConnect.ConnectStr := ''; //设置ConnectStr为空,则弹出ODBC窗口选择
F1Book1.ODBCConnectEx(myConnect, True); //打开ODBC连接
myQuery := CoF1ODBCQuery.Create; //创建一个查询
myQuery.QueryStr := ''; //设置ConnectStr为空,则弹出SQL语句创建窗口,你也可以直接设置ConnectStr为你想要的查询语句
F1Book1.ODBCQueryEx(myQuery, 1, 1, True); //执行查询,并返回结果到F1Book
F1Book1.ODBCDisconnect; //断开ODBC连接
end;
运行一下,点击按纽,选择一个ODBC数据源,然后输入一个“Select * from ...”的查询语句,可以看到F1Book已经返回查询的数据集了。
以上两个程序在Win98、Delphi 5、Formula One 6.1下通过。
- Formula One - Delphi
- 利用Delphi中的Formula One构件生成复杂的报表
- formula one控件
- formula one常用函数
- PB中使用FORMULA ONE
- 使用Formula One生成Excel报表- -
- Formula One 常用函数及属性
- Dotnet 好站( Formula One & Duwamish7学习笔记 )
- ActiveX--经典表格控件--Formula One
- 史上最全的Formula one的属性与方法
- 史上最全的Formula one的属性与方法
- Formula One Races Ahead -- F1全速前进(一)
- Formula One Races Ahead -- F1全速前进(二)
- 史上最全的Formula one的属性与方法
- 史上最全的Formula one的属性与方法
- 在.NET中利用FORMULA ONE实现动态报表技术(一)
- 在.NET中利用FORMULA ONE实现动态报表技术(二)
- 在.NET中利用FORMULA ONE实现动态报表技术(三)
- 生存还是死亡 这是个问题————写在软件学院三周年之际
- 问一个问题
- (转)后现代主义思潮对学校教育的冲击(教师中心稿)
- 代码生成器与 .NET
- 10 Golden rules for publishing your blog (part II)
- Formula One - Delphi
- 职业生涯明言-----程社明博士和他的“计划人生”
- Dotnet 好站( Formula One & Duwamish7学习笔记 )
- 字符串表达式计算C#程序设计
- 我又在凌晨写昨天的事情
- 用Visual C#来修改和删除数据库记录
- C#下实现动态系统托盘图标
- 用Visual C#获得计算机名称和IP地址
- Visual C#中轻松浏览数据库记录