delphi DBgrid应用全书】的更多相关文章

在一个Dbgrid中显示多数据库    在数据库编程中,不必要也不可能将应用程序操作的所有数据库字段放入一个数据库文件中.正确的数据库结构应是:将数据库字段放入多个数据库文件,相关的数据库都包含一个唯一的关键字段,在多数据库结构里可以建立联系.     例如:要编制一个人事管理程序,为简化演示程序,只建立两个数据库,每个数据库都只建立两个字段.     个人简介 jianjie.dbf,由人事处维护:工资情况 gongzi.dbf,由财务处维护.     1.数据库的建立     进入DataB…
delphi DBGrid简单自绘(字体颜色.背景等)  从网上找的代码 应该是C#写的,其实delphi 的操作类似: 1 2 3 4 5 6 7 8 9 10 11 12 13 void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,       const TRect &Rect, int DataCol, TColumn *Column,       TGridDrawState State) {     AnsiStr…
Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一.但是 DBGrid 缺省的外观未免显得单调和缺乏创意.其实,我们完全可以在我们的程序中通过编程来达到美化DBGrid 外观的目的.通过编程,我们可以改变 DBGrid 的表头.网格.网格线的前景色和背景色,以及相关的字体的大小和风格.    以下的示例程序演示了对 DBGrid 各属性的设置,使 Delphi 显示的表格就像网页中的表格一样漂亮美观.    示例程序的运行:    在 Form1 上放置 DBGrid1.Q…
https://zhidao.baidu.com/question/580946797.html DELPHI 中,使用 dbgrid显示数据.窗体上放置三个按钮,caption分别为:修改.删除.更新.1,修改就是直接在dbgrid中修改数据,然后保存到数据库中:2,删除,就是,当鼠标点击一条记录后.在单击此按钮,就可以在数据库中删除此条记录:3,更新就是当数据库内容有变化后,单击此按钮,显示当前数据库中的数据. 以adoquery为例1修改 如果adoquery的 locktype为ltOp…
我程序是 adoquery+datasource+dbgrid 做的我有一个窗体:有四个按钮.分别是新建,修改,删除,刷新. 新建第一条记录,dbgrid显示一条记录,新建第二条记录.DBGRID总共显示第一,第二条记录.不需要把以前记录显示出来.. 修改时候,,,当修改当前记录完成后DBGRID回当前修改行. 删除一条记录...定位到删除记录下条记录. ADOQuery1.Close; ADOQuery1.SQL.Text:='select * from 表名 where (ID > ' +Q…
uses ComObj; //DBGrid:指定的DBGrid;SaveFileName:要保存的文件名 function ExportDBGrid(DBGrid: TDBGrid; SaveFileName: string): boolean; var c,r,i,j: integer; app: Olevariant; TempFileName, ResultFileName: string; begin try result := True; app := CreateOLEObject(…
Delphi中,可以使用数据集控件提供的 Locate 成员方法快速定位至某条记录, 然后通过清除数据集控件的选中状态,并重新赋值达到我们的目的. grDirectory.DataSource.DataSet.Locate('StepNo', StrToInt(stepList[i]), []); grDirectory.ClearSelection; grDirectory.FocusedNode.Selected := True;…
使用DataSource.DataSet.RecNo可以得到dbgrid选中的是第几行,示例代码如下: procedure TForm1.btn1Click(Sender: TObject); begin ShowMessage(IntToStr(dbgrd1.DataSource.DataSet.RecNo)); end; 效果如下: 先用ADOQuery连接数据库在DBgrid内显示出来~~~~之后在DBgrid的OnCellClick事件写如下代码procedure TForm1.DBGr…
1 在数据库对应的表中加入  bit 列验证是否被选中 然后dbgrid第一列的filedname是bit列 在DBgrid的onDrawColumnCell事件中写: procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); const CtrlState: array[Boolean] of Int…
DBGrid1.DragMode   :=   dmManual;//留意这个设置不要变 procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); procedure TForm18.ApplicationEvents1Message(var Msg: tagMSG;var Handled: Boolean);begincase   Msg.message   of          WM_LBUTTO…
procedure TForm10.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);var Im1: TBitmap;staff_id: string;beginIm1:=TBitmap.Create;if (dm.AQ_personal.RecordCount = 0) then exit;if Column.Fi…
unit uzcdbadd; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, DB, StdCtrls, Buttons, GridsEh, DBGridEh, ComCtrls, ExtCtrls; type TfrmzcdbAdd = class(TForm) lbl1: TLabel; pnl1: TPanel; lbl2: T…
1.得到当前格子中的内容:DBGrid1.Fields[DBGrid1.SelectedIndex].DisplayText;把DBGrid1.SelectedIndex改为你所希望引用的字段就可以了,如第3个字段. DBGrid1.Fields[3].DisplayText; 2.双击单元格触发不同事件 procedure TMainFrm.DBGrid1DblClick(sender:TObject); begin if dbgrid1.fields[dbgrid1.selectedInde…
DBGrid1.Options:= DBGrid1.Options+[dgMultiSelect];  //先设置DBGrid1的多选属性为True if DBGrid1.SelectedRows.Count>0 then begin   with DBGrid1.DataSource.DataSet do   for i:=0 to DBGrid1.SelectedRows.Count-1 do   begin     GotoBookmark(Pointer(DBGrid1.Selected…
uses Excel2000,ComObj; procedure F_Form.Button1Click(Sender: TObject);var    myExcel:TExcel;    Int_i,Int_j,rowCount,columnCount:Integer;    ExcelId:Variant;begin  try      ExcelId:=CreateOleObject('Excel.Application');  except      on Exception do r…
错误的写法: DBGrid1CellClick(DBGrid1.Columns[ DBGrid1.DataSource.DataSet.RecNo ]); //执行点击事件 正确的写法: DBGrid1CellClick(DBGrid1.Columns[0]); //执行点击事件…
Delphi DBGrid右键删除行并提交至数据库.在form上添加,控件TPopupMenu,并指定右键名称:删行 2.编写删除语句: If ADOQuery1.State in [dsEdit, dsInsert] then ADOQuery1.Post;    If ADOQuery1.RecordCount <> 0 then ADOQuery1.Delete; 3.把dbgrid的PopupMenu属性,设置成刚刚添加的控件TPopupMenu. 4.编译,运行…
如何在DBGrid中选中行,而又让它可以进入编辑状态? 也许你会问我这有什么用?呵呵,做数据库应用的兄弟们会深有感触,当用DBGrid显示的字段过多时,用户不得不拉动最下面的滚动条,去看最右边的东西,如果没有设置DBGrid->Options[dgRowSelect],那么,拉到最右边之后,很有可能看串行的:如果设置了DBGrid->Options[dgRowSelect],则在拉到最右边之后,不会看串行,但是鼠标点击其它行(不是当前选中行)时,DBGrid的视图一下子就会回到显示最左边的那一…
DELPHI基础开发技巧 ◇[DELPHI]网络邻居复制文件 uses shellapi; copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false); ◇[DELPHI]产生鼠标拖动效果 通过MouseMove事件.DragOver事件.EndDrag事件实现,例如在PANEL上的LABEL: var xpanel,ypanel,xlabel,ylabel:integer; PANEL的Mo…
http://www.cnblogs.com/leewiki/archive/2011/12/16/2290172.html Delphi中点击DBGrid某一行获得其详细数据方法 前提是用ADOTable进行数据库的链接.(其他的链接数据库的方法没有试过) 在方法:DBGrid1DblClick中添加代码: 1 ComboBox1.Text:=DBGrid1.Columns.Grid.Fields[0].Value;2 Edit1.Text:=DBGrid1.Columns.Grid.Fiel…
Delphi实现Dbgrid全选和反选.清除全选的功能,不管是在Delphi下,还是在WEB开发中,这种功能都是很实用的,是进行数据批量操作的基础.本模块就是实现了为Delphi的DBGrid数据列表增加全选内容.清除全选的功能,很实用了,代码内容如下: //全选 procedure TFrameCustSelector.ToolButton1Click(Sender: TObject); var OldCurrent: TBookmark; begin OldCurrent := DBGrid…
在Delphi中,DBGrid控件是一个开发数据库软件不能不使用的控件,其功能非常强大,可以配合SQL语句实现几乎所有数据报表的显示,操作也非常简单,属性.过程.事件等都非常直观,但是使用中,有时侯还是需要一些其他功能,例如打印.斑马纹显示.将DBGrid中的数据转存到Excel97中等等.这就需要我们定制DBGrid,以更好的适应我们的实际需要.本人根据使用Delphi的体会,定制了DBGrid,实现了以上列举的功能,对于打印功能则是在DBGrid的基础上联合QuickReport的功能,直接…
在实际项目中,偶然遇到需要按下SHIFT键,在DBGrid中进行多选的情况,测试了几种方法,最终确定了一个比较好的解决方法,总结如下: procedure TTestFrame.TestDBGridMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin //实现 Shift+鼠标左键单击 多选 if Button = mbLeft then begin if not FblS…
要想跨进程访问DBGRID,貌似只能用HOOK,写一个DLL想办法注入到目标进程.注入成功后,使DLL与目标进程在同一进程空间中(其内有一些细节问题,请参见代码),这时可以访问目标进程的VCL组件.并把VCL组件的数据通过进程通信的方式发给Sniffer进程. 如何进行注入? 可以安装一个WH_CALLWNDPROC钩子,这样当有消息在窗口函数中时,系统就会装载HOOK,即执行DLL部分. 如何发消息? 可以在DLL中设置一个自定义消息,在安装完钩子后,发送一个自定义消息至目标进程的窗口函数.…
若DBGrid.DataSource.DateSet为ADOQuery1,这样试一下:if ADOQuery1.Modified then ... procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin  if ADODataSet1.Modified then    begin    Messagedlg('对不起,你还没有保存数据?',mtInformation,[mbOK],0);    C…
1.根据条件更改某一单元格的颜色 procedure TMainFrm.First_DGDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DM.FirstListStatus.AsString='生产' then begin First_DG.Canvas.Font.Color:=clGreen end els…
http://blog.csdn.net/windhaunting/article/details/4751560 1.TTable(DBGrid1.DataSource.DataSet).EmptyTable;     2.DBGrid1.DataSource:=nil;     //切断与数据源的联系…
//fromhttp://kingron.myetang.com/zsfunc12.htm (*//标题:处理数据网格的编辑框说明:示例添加焦点颜色;获取还没有提交到数据集的字段文本设计:Zswang日期:2002-03-31支持:wjhu111@21cn.com//*) ///////Begin   Sourcefunction   GetDBGridEdit(mDBGrid:   TDBGrid):   TEdit;var    I:   Integer;begin    Result   …
可参考下面的例子:   数据自动计算的实现:“金额”是由“单价”和“工程量”相乘直接得来的,勿需人工输入. 这可在“数据源构件”的onupdatedata例程添加如下代码实现: procedure TForm1.DataSource1UpdateData(Sender: TObject); begin      table1.fieldbyname('金额').asfloat:=table1.fieldbyname('单价').asfloat      *table1.fieldbyname('…
功能:根据一条记录满足特定条件,使用不同的颜色进行显示. 来源:http://www.aliyagoo.com/blog 主要事件是在PrepareCanvas 不是DrawColumnCell 而且 DefaultDraw不需要设置 procedure TBills.DBGrid1PrepareCanvas(sender: TObject; DataCol: Integer;   Column: TColumn; AState: TGridDrawState); begin    if RD.…