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

在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 下调试通过。希望本文能使你可以更加方便快捷的开发数据库应用程序。

搜狗号码通产品经理谈微创新 数据和运营更关键 在线推荐系统是如何进行工作的? 欧朋浏览器上架App Store,iOS生态真要变天? 苹果iOS 6.1地图搜索API将替代谷歌Places Oracle向开发者承诺 称尽快修复Java安全问题 日本:开发者与投资人都不容忽视的移动市场 Unity 3D引擎:十大最火的插件推荐 重塑品牌 RIM更名黑莓 发布BlackBerry 10移动操作系统及新手机 NoSQL依赖的不只是大数据 还有应用程序架构的改变 新一代Apple TV增强内在组件 外观不变 加速Web开发的7款知名HTML5框架 Firefox OS开发者日来袭 5小时15款Web应用出炉! 微软发布Office 365家庭高级版 订阅费499元/年 鲍尔默对Office信心满满,十亿用户量触手可及 【多图】梦幻现实 IBM的未来超级计算机水世界 一名骨灰级工程师的OpenStack部署总结引发的讨论 解读DuckDuckGo搜索 百万点击也敢叫板Google 开发者成功学:扔掉你那些很sexy的想法 VMware严控ESXi API 引发用户和ISV被绑架担忧 布局O2O Facebook推出实物礼品卡 iSuppli:微软Surface RT实际销量远低于出货量 业界前三甲:App Store两个刷榜者,站了出来 极客无极限 一行HTML5代码引发的创意大爆炸 将服务器“弃”之荒野? 微软玩转露天数据中心 Dropbox:我们现在关注“内容” 而不仅仅是文件存储 访Teradata Aster Mayank Bawa:抛弃无效数据,让分析走向大众化 谷歌Chrome或新增通知中心 与Google Now整合 传言称HBO节目将登陆苹果Apple TV? Crashlytics被收购,应用崩溃报告服务要火了? 微软公布WP7.8完整功能 诺基亚率先升级 BlackBerry 10或许不仅仅是一剂强心针 谁能告诉我这样把对话框的背景变成一个位图? icon to bmp的 代码???????????????? 图的表示问题 关于逻辑坐标和物理坐标问题的讨论 这是怎么了--winme 的工具栏没了,SOS SOS 请各位帮忙!!!! 烦请各位告诉我CBitmap和HBITMAP的区别及相互转换方法。多谢了 请问,当我将应用程序和我的指定文件类型相关联时候,我怎么才能指定该文件类型的图标。我试了将ResourceView中的ICON修改,可还是不行。 如何读AVI文件到缓冲区 今日我要把分全送人,我要隐退江湖了 关于关闭“进程”的问题???,help!!!!!!! 在家用SQL server7.0 做的數據庫backup文件怎麼不能在公司的機器上restore,急死我了!!! 关于MTS问题 给分王,我要功成隐退了 关于fdisk的使用出现意想不到的问题!!!!! 在公司做好的本地程序,和数据库,如何上传 有缘人,送分人,功成身退 誰有Java的在線网絡游戲,就象263,yahoo上那樣的. error C2664是怎么回事?十万火急!!! 我的编译器总出 LINK : fatal error LNK1104: cannot open file "Debug/Typer.exe" 是什么原因? 送分喽 vb中的问题!!!急 请问:fastreport的自定义变量如何与delphi变量进行互相传递!!! 请问各位高手关于局域网共享上网的设置问题。 basic 的数据结构问题 asp与xml 百分求维护经验 初级问题 求救:如何用fileup组件将一个文件同时存到两台机子的硬盘上! 有关netmeeting、AVPhone或其它做视频会议相关控件的使用方法。 a question about String Type!Please help me! 关于%include的问题。高分 vb如何访问sql-server。 有用SDK编写的象“我的电脑”那样的程序吗? 请教:如何绘制成绩分析的正态分布曲线? bean里删除文件? 请问关于响应事件的问题?? 请问怎样用在Active DLL中调用ASP的response对象? 请介绍几本关于vb的书,不是入门的书,有没有向<delphi5开发人员指南》这样的书???? dos下编程,如何获得文件创建时间? 如何判断存储过程执行成功结束?(50分相送) 谁行行好吧,小弟谢过了!(sql的cd key) 请教现在是应该学习VB6还是VB.NET? 关于在mfc中自定义类的一个问题 请教现在是应该学习VB6还是VB.NET? 谁有在VB中开发DirectX的教程,请推荐下载地址. zrong(zr) TommyTong(童童) GreenWaterBlueSky(我的家在碧水蓝天) 进来看一看可以吗? 谁行行好吧,小弟谢过了!(sql的cd key) 这里是个关于Iczelion的win32的汇编教程中的一个问题,请各位指点! 请问如何让VB。NET编译的。EXE文件在没有装有。NET架构的系统上运行? 大白鲨:计算机软件专业到低学那些课程 窗口的最小化和最大化事件是什么? 我想知道怎么样增加财富值. 运用 《文化生活》知识 谈谈如何发展中国特色社会主义文化 英语作文,my best friend还有修改一下错误的地方.如果有不连贯的地方,望指出,并修改A friend is a person who can let you feel warm when you are depressed.So I have many friends.But XXX is my best friend.He is as old as me.He t 我想知道如何增加我的财富值 荀子与孟子的人性观及政治主张不同点? 解释词语!速度征求:匆促:留心:有条不紊:解释!快!急需 我想知道如何可以增加财富值 论述孟子、荀子的人性观 解释词语的意思(速度!~)忐忑不安:静谧:窥伺:栖息:忧郁:晨曦:倾泻: 我想知道如何快速地增加我的财富值 在人性问题上,孟子主张本善,荀子主张本恶.在人性向善的方法上,孟子主张通过教化,扶植和培养善的萌芽,使善性得以发扬光大;荀子主张通过教化,限制恶的趋势,使人性之恶向善转化.下列错 形容鸟儿活泼、健康、生命力旺盛? 我想知道如何增加财富值? 主张“人性善”的是 A孔子B老子C孟子D荀子 英语作文 My best friends 我想知道财富值怎样可以增加得很快我想知道悬赏分这个 金融杠杆究竟是啥意思啊?看到一些投资 金融方面的书~经常是什么华尔街 杠杆收购之类的话~请问究竟是啥意思啊? 显卡的英文单词代表什么?n卡和a卡的各个英文单词代表什么?Graphics又代表什么? 我想知道我现在的财富值是多少,可是要怎么查呀? 什么是“杠杆贷款”,他对于金融机构的作用怎样的?看到了这么一个新闻,来自华尔街日报的.是在说花旗银行最近的行动,要打成一笔交易,来获取120亿美元的杠杆贷款.请问,这个杠杆贷款跟普 英文中R代表什么意思 求my mother英语作文50字 杠杆化金融产品有哪些? 孟子的政治主张 运用文化生活中有关传统文化的知识谈谈对春节拜年的认识 直到现在我才知道家庭的真正含义用英语怎么说 孟子的政治观点有什么? 高二政治必修三文化生活知识点整理 啊尔卑斯棒棒糖有什么含义? 孟子提出了_____,______的政治主张 我想知道得名得到财富值? 我想知道怎么快速得到财富值 英语作文My best friend要求:她的名字叫凯特,是我最好的朋友,她家住在我家隔壁,5年的好朋友,高个,长发,聪明,乐于助人,有幽默感,爱讲笑话,不经常见面,她长大后的梦想是当歌手,游全世界,..写 蓝球比赛七局四胜.第一肠比赛组织者可货票房收入3a万元,后每次比上一次多a万.最后组织人可以得到多少收入 不少于33a的溉率四点之前结束提问! 我想知道怎么才能快速得到财富值. 求篇英语作文:My Best Friend 要求如下描述我的好朋友孙悦玲,她是我的好朋友,她很健谈和很随和,身材很高,经常和我一起出去玩和打网球.或自己在编一点,反正要50个单词, 最后一道题,有财富值 我想知道怎么样能快速的得到财富值呢 我不能表达我意思用英语怎么说 就剩这道题了,弄完给财富值 我想知道如何获得财富值?如何能快速的获得? 表示...的意思用英语怎么说 自行车轮胎安装在前轮可行驶5000米,安装在后轮可行驶3000米,如调换使用,一对新轮胎可行驶多少千米?行多少米对调一次? 我想知道财富值怎么样能快速的得到财富值呢? “爸爸的微笑消失了,脸色变得严肃起来”是因为 斯丢被 是一个英文单词 斯丢被是我中文翻译出来的~ 2.5平方电线直径是1.76可以吗 ——是一笔财富 作文 是英文 所以用汉字代替了 以《my best friend》写两篇英语作文,60词左右,要求用上比较级. 六年级的一篇作文《我的财富》帮我找材料,越多越好.提纲最好一篇记叙文,要有具体事例 如题 2.5平方电线直径是1. 写景的作文马上!看到我的问题会写的快写!OK!财富全给你! 凹订斯 英语怎么意思? 运用《经济生活》的知识,谈谈你对“市场是发展文化产业最好土壤”的理解.结合材料.美国好莱坞电影,日本原创漫画,韩剧在中国红级一时,没有金币了,那个好心老师或者学生帮帮忙啊 这几个词的意思 运用文化生活的知识回答,为什么我国仍然存在落后文化和腐朽文化? 请运用文化生活有关知识谈谈我们应该如何继承和发展中国传统文化? 词语的意思给好评
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘