Delphi中DBGrid应用全书Word文件下载.docx

上传人:b****2 文档编号:982972 上传时间:2023-04-29 格式:DOCX 页数:25 大小:24.01KB
下载 相关 举报
Delphi中DBGrid应用全书Word文件下载.docx_第1页
第1页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第2页
第2页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第3页
第3页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第4页
第4页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第5页
第5页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第6页
第6页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第7页
第7页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第8页
第8页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第9页
第9页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第10页
第10页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第11页
第11页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第12页
第12页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第13页
第13页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第14页
第14页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第15页
第15页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第16页
第16页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第17页
第17页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第18页
第18页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第19页
第19页 / 共25页
Delphi中DBGrid应用全书Word文件下载.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Delphi中DBGrid应用全书Word文件下载.docx

《Delphi中DBGrid应用全书Word文件下载.docx》由会员分享,可在线阅读,更多相关《Delphi中DBGrid应用全书Word文件下载.docx(25页珍藏版)》请在冰点文库上搜索。

Delphi中DBGrid应用全书Word文件下载.docx

;

//字体

(SenderasTDBGrid).Columns[i].Title.Font.Size:

=9;

//字体大小

(SenderasTDBGrid).Columns[i].Title.Font.Color:

=$000000ff;

//字体颜色(红色)

(SenderasTDBGrid).Columns[i].Title.Color:

=$0000ff00;

//背景色(绿色)

end;

//隔行改变网格背景色:

ifQuery1.RecNomod2=0then

(SenderasTDBGrid).Canvas.Brush.Color:

=clInfoBk//定义背景颜色

else

=RGB(191,255,223);

//定义背景颜色

//定义网格线的颜色:

DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);

with(SenderasTDBGrid).Canvasdo//画cell的边框

Pen.Color:

=$00ff0000;

//定义画笔颜色(蓝色)

MoveTo(Rect.Left,Rect.Bottom);

//画笔定位

LineTo(Rect.Right,Rect.Bottom);

//画蓝色的横线

=$0000ff00;

//定义画笔颜色(绿色)

MoveTo(Rect.Right,Rect.Top);

//画绿色的竖线

end;

2.Delphi5-隔行改变DBGrid网格颜色:

在Form1上放置DBGrid1、Query1、DataSource1三个数据库组件,设置相关的属性,使DBGrid1能显示表中的数据。

然后,在DBGrid1的onDrawColumnCell事件中键入以下代码,然后运行程序

procedureTForm1.DBGrid1DrawColumnCell(Sender:

DataCol:

State:

vari:

ifadoQuery1.RecNomod2=0then

=clinfobk//定义背景颜色

//定义背景颜色

=clbtnface;

//定义画笔颜色(兰色)

//画绿色

3.DBGrid指定列上显示DBboBox

设置DBGrid1的OnDrawDataCell事件如下:

procedureTForm1.DBGrid1DrawDataCell(Sender:

Field:

TField;

if(gdFocusedinState)then

if(Field.FieldName=DBboBox1.DataField)then

DBboBox1.Left:

=Rect.Left+DBGrid1.Left;

DBboBox1.Top:

=Rect.Top+DBGrid1.top;

DBboBox1.Width:

=Rect.Right-Rect.Left;

DBboBox1.Height:

=Rect.Bottom-Rect.Top;

DBboBox1.Visible:

=True;

2)、DBGrid指定单元格未获得焦点时不显示DBboBox,设置DBGrid1的OnColExit事件如下:

procedureTForm1.DBGrid1ColExit(Sender:

TObject);

IfDBGrid1.SelectedField.FieldName=DBboBox1.DataFieldthen

=false;

3)、当DBGrid指定列获得焦点时DrawDataCell事件只是绘制单元格,并显示DBboBox,但是DBboBox并没有获得焦点,数据的输入还是在单元格上进行。

在DBGrid1的KeyPress事件中调用SendMessage这个WindowsAPI函数将数据输入传输到DBboBox上,从而达到在DBboBox上进行数据输入。

因此还要设置KeyPress事件如下:

procedureTForm1.DBGrid1KeyPress(Sender:

varKey:

Char);

if(key<

>

chr(9))then

if(DBGrid1.SelectedField.FieldName=DBboBox1.DataField)then

DBboBox1.SetFocus;

SendMessage(DBboBox1.Handle,WM_Char,word(Key),0);

打印TDBGrid内容----方法1

procedurePrintDbGrid(DataSet:

TDataSet;

DbGrid:

TDbGrid;

Title:

String);

var

PointX,PointY:

ScreenX:

i,lx,ly:

px1,py1,px2,py2:

RowPerPage,RowPrinted:

ScaleX:

Real;

THeight:

TitleWidth:

SumWidth:

PageCount:

SpaceX,SpaceY:

RowCount:

PointX:

=Round(GetDeviceCaps(printer.Handle,LOGPIXELSX)/2.54);

PointY:

=Round(GetDeviceCaps(printer.Handle,LOGPIXELSY)/2.54);

=Round(Screen.PixelsPerInch/2.54);

=PointX/ScreenX;

RowPrinted:

=0;

printer.BeginDoc;

WithPrinter.Canvasdo

DataSet.DisableControls;

DataSet.First;

THeight:

=Round(TextHeight('

我'

)*1.5);

//设定每行高度为字符高的1.5倍

SpaceY:

=Round(TextHeight('

)/4);

SpaceX:

=Round(TextWidth('

RowPerpage:

=Round((printer.PageHeight-5*PointY)/THeight);

//上下边缘各2厘米

ly:

=2*PointY;

PageCount:

whilenotDataSet.Eofdo

if(RowPrinted=RowPerPage)or(RowPrinted=0)then

ifRowPrinted<

>

0then

Printer.NewPage;

RowPrinted:

=PageCount+1;

Font.Name:

Font.size:

=16;

Font.Style:

=Font.Style+[fsBold];

lx:

=Round((Printer.PageWidth-TextWidth(Title))/2);

TextOut(lx,ly,Title);

Font.Size:

=11;

=Font.Style-[fsBold];

=Printer.PageWidth-5*PointX;

=Round(2*PointY+0.2*PointY);

ifRowPerPage*PageCount>

DataSet.RecordCountthen

RowCount:

=DataSet.RecordCount

=RowPerPage*PageCount;

TextOut(lx,ly,'

第'

+IntToStr(RowPerPage*(PageCount-1)+1)+'

-'

+IntToStr(RowCount)+'

条,共'

+IntToStr(DataSet.RecordCount)+'

条'

);

=2*PointX;

=ly+THeight*2;

py1:

=ly-SpaceY;

ifRowCount=DataSet.RecordCountthen

py2:

=py1+THeight*(RowCount-RowPerPage*(PageCount-1)+1)

=py1+THeight*(RowPerPage+1);

SumWidth:

=lx;

fori:

=0toDBGrid.Columns.Count-1do

px1:

=SumWidth-SpaceX;

px2:

=SumWidth;

MoveTo(px1,py1);

LineTo(px2,py2);

TitleWidth:

=TextWidth(DBGrid.Columns[i].Title.Caption);

=Round(SumWidth+(DBGrid.Columns[i].width*scaleX-titleWidth)/2);

TextOut(lx,ly,DBGrid.Columns[i].Title.Caption);

=Round(SumWidth+DBGrid.Columns[i].width*scaleX)+SpaceX*2;

//画最后一条竖线

//画第一条横线

=py1+THeight;

=py2+THeight;

=ly+THeight;

=ly-SpaceY+THeight;

TextOut(lx,ly,DataSet.FieldByname(DBGrid.Columns[i].Fieldname).AsString);

=Round(lx+DBGrid.Columns[i].width*ScaleX+SpaceX*2);

=RowPrinted+1;

DataSet.next;

DataSet.first;

DataSet.EnableControls;

printer.EndDoc;

把DBGrid输出到Excel表格---方法一

(支持多Sheet){

功能描述:

把DBGrid输出到Excel表格(支持多Sheet)

调用格式:

CopyDbDataToExcel([DBGrid1,DBGrid2]);

}

procedureCopyDbDataToExcel(Args:

arrayofconst);

iCount,jCount:

XLApp:

Variant;

Sheet:

I:

Screen.Cursor:

=crHourGlass;

ifnotVarIsEmpty(XLApp)then

XLApp.DisplayAlerts:

=False;

XLApp.Quit;

VarClear(XLApp);

try

XLApp:

=CreateOleObject(‘Excel.Application‘);

except

=crDefault;

Exit;

XLApp.WorkBooks.Add;

XLApp.SheetsInNewWorkbook:

=High(Args)+1;

forI:

=Low(Args)toHigh(Args)do

XLApp.WorkBooks[1].WorkSheets[I+1].Name:

=TDBGrid(Args[I].VObject).Name;

Sheet:

=XLApp.Workbooks[1].WorkSheets[TDBGrid(Args[I].VObject).Name];

ifnotTDBGrid(Args[I].VObject).DataSource.DataSet.Activethen

TDBGrid(Args[I].VObject).DataSource.DataSet.first;

foriCount:

=0toTDBGrid(Args[I].VObject).Columns.Count-1do

Sheet.Cells[1,iCount+1]:

=

TDBGrid(Args[I].VObject).Columns.Items[iCount].Title.Caption;

jCount:

=1;

whilenotTDBGrid(Args[I].VObject).DataSource.DataSet.Eofdo

Sheet.Cells[jCount+1,iCount+1]:

TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString;

Inc(jCount);

TDBGrid(Args[I].VObject).DataSource.DataSet.Next;

XlApp.Visible:

dbgrid的數據導入到excel中---方法二

unitUnit1;

interface

uses

Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,

StdCtrls,Grids,DBGrids,Db,DBTables,Excel97,OleServer,Word97;

type

TForm1=class(TForm)

ExcelApplication1:

TExcelApplication;

ExcelWorkbook1:

TExcelWorkbook;

ExcelWorksheet1:

TExcelWorksheet;

Table1:

TTable;

DataSource1:

TDataSource;

DBGrid1:

TDBGrid;

Button1:

TButton;

Button4:

WordApplication1:

TWordApplication;

WordDocument1:

TWordDocument;

procedureButton1Click(Sender:

procedureButton4Click(Sender:

private

{Privatedeclarations}

public

{Publicdeclarations}

Form1:

TForm1;

implementation

{$R*.DFM}

procedureTForm1.Button1Click(Sender:

i,row,column:

integer;

Try

ExcelApplication1.Connect;

Except

MessageDlg('

Excelmaynotbeinstalled'

mtError,[mbOk],0);

Abort;

End;

ExcelApplication1.Visible[0]:

ExcelApplication1.Caption:

='

ExcelApplic

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2