说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在Delphi的DBGrid中插入其他可视组件

HTML文档下载 WORD文档下载 PDF文档下载
在Delphi的DBGrid中插入其他可视组件

Delphi提供了功能强大的 DBGrid组件,以方便进行数据库应用程序设计。但是如果我们仅仅利用DBGrid组件,每一个获得焦点(Grid)只是一个简单的文本编辑框,不方便用户输入数据。Delphi也提供了一些其他数据组件来方便用户输入,比如DBComboBox,DBCheckBox等组件,但这些组件却没有DBGrid功能强大。Delphi能不能象Visual Foxpro那样让DBGrid中获得焦点网格可以是其它可视数据组件以方便用户呢?其实我们可以通过在DBGrid中插入其他可视组件来实现这一点。

Delphi对DBGrid处理的内部机制,就是在网格上浮动一个组件——DBEdit组件。你输入数据的网格其实是浮动DBEdit组件,其他未获得焦点地方不过是图像罢了。所以,在DBGrid中插入其他可视组件就是在网格上浮动一个可视组件。因此任何组件,包括从简单的DbCheckBox到复杂的对话框,都可以在DBGrid中插入。下面就是一个如何在DBGrid中插入DBComboBox组件的步骤,采用同样的办法可以插入其他组件。

1、 在Delphi 4.0中新建一个项目。

2、 分别拖动的Data Access组件板上DataSource、Table,Data Controls组件板上DBGrid,DBComboBox四个组件到Form1上。

3、 设置各个组件的属性如下:

rcf1对象 属性 设定植

Form1 Caption '在DBGrid中插入SpinEdit组件示例'

DataSource1 DataSet Table1

Table1 DatabaseName DBDEMOS

TableName 'teacher.DBF'

Active True

DBGrid1 DataSource DataSource1

DBComboBox1 DataField SEX

DataSource DataSource1

Visible False

Strings Items. '男'| '女'

意:我在这里用了Teacher.dbf,那是反映教职工的性别,只能是“男”或者是“女”。

4、 DrawDataCell事件是绘制单元格,当获得焦点网格所对应的字段与组合框所对应的字段一致时,移动组合框到获得焦点的网格上,并且

使组合框可视,从而达到在DBGrid指定列上显示DBComboBox的功能。设置DBGrid1的OnDrawDataCell事件如下:

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);

begin

if (gdFocused in State) then

begin

if (Field.FieldName = DBComboBox1.DataField ) then

begin

DBComboBox1.Left := Rect.Left + DBGrid1.Left;

DBComboBox1.Top := Rect.Top + DBGrid1.top;

DBComboBox1.Width := Rect.Right - Rect.Left;

DBComboBox1.Height := Rect.Bottom - Rect.Top;

DBComboBox1.Visible := True;

end;

end;

end;

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

procedure TForm1.DBGrid1ColExit(Sender: TObject);

begin

If DBGrid1.SelectedField.FieldName = DBComboBox1.DataField then

begin

DBComboBox1.Visible := false;

end;

end;

6、 当DBGrid指定列获得焦点时DrawDataCell事件只是绘制单元格,并显示DBComboBox,但是DBComboBox并没有获得焦点,数据的输入还是在单元格上进行。在DBGrid1的KeyPress事件中调用SendMessage这个 Windows API函数将数据输入传输到DBComboBox上,从而达到在DBComboBox上进行数据输入。因此还要设置KeyPress事件如下:

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);

begin

if (key < > chr(9)) then

begin

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

begin

DBComboBox1.SetFocus;

SendMessage(DBComboBox1.Handle

WM_Char

word(Key)

0);

end;

end;

end;

程序在中文Windows 98,Delphi 4.015 下调试通过。希望本文能使你可以更加方便快捷的开发数据库应用程序。

谷歌:受感染的合法网站远比恶意网站危险性大 Mozilla正式发布Firefox 22应用程序开发者受益 支持3D游戏、视频通话和文件分享 直接拿来用!最火的前端开发项目(一) Salesforce.com和Oracle在云合作上达成长期协议 即将到来的数据中心僵尸末日,谁能成为最后的幸存者?! Andorid APK反逆向解决方案:梆梆加固原理探寻 科技拥抱设计:体验设计如何创新? Rails 4.0正式发布 命途多舛的webOS,两度易主,生生死死多少回 Citrix全面开源XenServer 为了三十亿人的网络幸福:Google投资O3b发射网络卫星 Windows 8.1中IE 11开始支持WebGL和SPDY/3 微软Build 2013开发者大会:盘点Windows 8.1的15个重大更新 瞧!这是摩托罗拉移动新Logo,你有什么感觉? 专访UEditor创始人战毅:打造最佳的用户编辑体验 Eclipse 4.3 正式版发布 代号Kepler 为兴趣而生 七大编程挑战项目,你敢来吗? iOS 7辅助功能:左右摇头控制iOS设备 挑战传统关系型数据库:Facebook图形数据库TAO揭秘 揭秘“棱镜计划”幕后的技术 你更新了吗?Visual Studio 2013 Preview和.NET 4.5.1同时发布 你主要使用什么编程语言? 跨平台游戏开发工具App Game Kit或将新增更多强悍功能 移动应用推广的那些事儿:应用发现篇 DDoS攻击也能成为一种云计算服务 Netflix开源Hadoop集群调度工具:日处理近万作业、上千TB数据 传谷歌正开发自己的视频游戏主机和智能手表 AMD APU战略转型:全民四核,发力“云+端” 富士康自主研发智能手表 惹苹果发来订单 开发者眼中的iOS 7:重设计过程没想象中那么糟 游戏引擎Unity宣布免费支持Windows Phone 8及Xbox One 有关打印问题????????? win2000找98奇慢无比 template class的连接问题。请赐教 求拓扑排序的所有可能序列?50分求教 java程序员? 请问有没有介绍五子棋算法的好网站?我要做一个和机器下的程序!大家帮忙 请问在编程中的例程,行程和过程的定义是什么?以及他们的区别。 该怎么使用 action() 与 mouseDrag()?请看我的程序问题在哪? DELPHI6.0中的最小化事件是什么 marry____不只怎么办了 (★如何初始化控件CMSFexGrid★) 各位兄弟,不知哪里可以查到所有常量的值? 怎么把帽号赋给一个变量?thank 为什么WinXP激活后就不能重装? 困惑--判断颜色是否相同??? (急急急)寻找:win2000/xp/nt/9x 的可安装文件开发包(IFS Kit),送大分 如何在DB2(V5.2)下面实现表的ID自动增加功能? 帖子结不了,在送300分~~~~~~~~~~ 请问oracle那些版本以上叫8i,常用的是哪个版本,有WINDOWS下使用的吗? 我看过的TOOLBAR 都是横着的,可是我现在想做一个竖立这的TOOLBAR 我该怎么做啊!我翻遍了 CODEGURU 可是没有一个这样的例子! 谁有什么好例子 多谢了!! error C2065: 'end1' : undeclared identifier 我怎么用CreateDialog 建立一个对话框呢! 谁有代码!!多谢!CreateDialog(hInst,LPCTSTR"ID_",hWnd,DlgProc); 送小分:怎样在一个对话框程序中产生一个HWND视窗? 在Windows 2000 Professional 下可以装VS.net吗? 关于文件上传问题 关于微软自己的控件下载问题!! 关于打包的问题 急求答案--请教高手:有关IIS与TOMCAT...... 请问有哪为知道,weblogic提供petstore例子,什么地方有详细说明?? 怎么样利用CHtmlViw将参数用POST的方式提交给WEB服务器 不明白.. 请问遇到连接错误该如何解决? pws的日志在什么地方? 在VBA中如何使用ClipBoard 哪里可以下载mastering delphi 6,或者其他有关delphi6的书籍。 vb和access的问题 C++Builder不支持tif或tiff格式怎么办? 为何我的TQuery为只读? 用Winsock传送文件如何判断一个文件已经传送完毕?(一定给分!) VC程序方法的请教。 请问如何禁用一个页面的cache 不好意思,怎么把引号赋给一个变量?thank 关于字体的保存,用序列化 关于oracle连接的一个简单问题 一个构件地址35分,快快来吧。 如何实现实时监测注册表的变化呢??????????? 如何锁定一个SQL SERVER的表? 哪里有Rose2000? MMGG Redhat7.2Ftp,硬盘安装问题求救! 请问怎样设置phpmyadmin带用户名和密码的登陆界面? 本来打算跳楼的,想想还是先来这试试...... 自信 作文 作文 友情开头 高中英语常用固定短语RT越多越好, 自信的作文可以在许多事上运用的 求作文黑板上的记忆开头和结尾,中心是 友谊求作文黑板上的记忆开头和结尾,中心是 友谊 ,要点题点中心还有一个开头结尾,题目依旧是黑板上的记忆 中心是学习 作文父母的爱350字左右 作文 自信的我 友情的文章开头 英语中重要(常用)的固定短语英语的常用短语和固定搭配 列出一些 我很自信 作文 写中秋节晚上的作文(500字) 祝福读后感500字文章 求助英语课文中的英语短语 中秋寄语 500作文 祝福别人,作文500字以上 家乡的春节作文500字急 中秋节的作文500字 短文《生命,生命》的阅读答案 哪里能找的英语课文短语? 以自信为话题的作文 生命·生命(阅读短文额.)“蜜蜂在我眼前消失了,我才觉察自己一直跪在地上.我继续跪了一段时间.”“我”为什么要继续跪一段时间呢?就这个额..呵呵..请务必回答. 家乡的春节的作文500字 什么什么让生命更精彩作文 生命的高度阅读短文答案 友情为话题写一篇作文 生命因爱更精彩600字作文 以“生命因读书而精彩”为话题作文1.600字左右 2.文体不限(诗歌除外) 3.急用 4.请给我文章,不要教我怎么写之类的. 谁能写一篇关于收获友谊的作文?(重点是内容)一篇《收获友谊》的作文,开头结尾不用写,写内容就行(和故事差不多) 生命因什么什么更精彩作文怎没写 超越生命的爱 阅读短文!这是一个真实的故事.发生在西部的一个极度缺水的沙漠地区.这里每人每天的用水量严格地限定为3斤,这还得靠驻军从很远的地方运来.日常饮用、洗漱、洗菜、洗衣, 作文素材:生命因追求而精彩从<生命因追求而精彩>的角度给一些优美素材:例如:从一个过程、现象来表达一种精神:如:流水~、鲜花~、野草~、蝴蝶~大家能举一些结构优美点的 求一篇关于友情的作文要有事情的,不要全是议论,而且要自己写的,网上没有的。要写出我们的友情多么深厚,最后我们的友情因为我们而不再存在的。 写一件在成长过程中懂得某个生活道理的作文400字今天就要道55555555555555555555555555555555555555555555555555555555555555555555 作文《生命,因为追求而精彩》或关于它的素材 初一生求用英语表达的成语作文哪篇成语都可以五六句左右就好 词语不要太难 =顺便在这个作文上做个阅读题 作文,写写你成长中懂得的某种道理600字. 以《生命因追求而美丽》为题的作文!600字或以《生命因追求而精彩》为题的作文!600字! 求一篇带着友谊出发的作文要点评哦. 成长过程总懂得的某种生活道理 800字六年级作文生活中,我们在一天天长大,渐渐懂得了孝敬父母和长辈,懂得了珍惜幸福.写一写成长过程总懂得的某种生活道理. 找一篇有关军训的文章(我们刚刚军训完)600——1000字 《追求生命的ㄨㄨ》作文怎么写 800——1000字的作文 以“祝福我的祖国”为话题 有真实事例,以小见大也OK 《军训心德》作文1000字 以“生命的追求”为话题的作文的范文以“生命的追求”的话题的作文.请各位给我说说怎么写啊.范文最好. 庆国庆,祝福我的祖国 为话题的作文1000字. 请给我人生路上的一些建议,让我的生命更加精彩…我是1984年出生的,目前的月薪2500(无食宿开支),老家在湖南株洲.自己存了有大概十万块钱.请问我今后该怎么继续走下去?工作已是滚瓜烂 怎么找英语课文中的词组最好列举出来,我是初一下学期的,都写出来哦,还要标上课题! 关于怎样理解课文的作文(小学的《卖火柴的小女孩》350字~400字) 运动让生命更精彩作文 以“生活是需要自信的”为作文人生需要自信作文(初中水平的作文) 求作文,350字左右,请以''这件事让我懂得【珍惜 】为题,急 让生命与生命更近些 作文 生活需要自信心的作文! 谁知道关于环境的诗歌或散文,谁知道关于同学之间友谊的诗歌或散文30~100字之间,我着急用! 有关让我们的生命更加精彩的论文RT! 我生活在自信中 作文400字以上 回忆古诗《静夜思》,展开想象,写一篇文章 有关生命的作文 求助作文素材.题目分别为《感动》《生活需要自信》作家们帮帮忙吧怎么写比较好 有关友谊的开头结尾,句子(好作文中,或自编,非诗句!)谢谢!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn