delphi dbgrid 排序模糊定位

回复讨论(解决方案)
看来别人的软件,当输入条件后,查找到的当前记录总是显示在grid的中间。。。。
没有想过,但是我觉得这个需求比较...
我觉得你可能是希望用户看的时候比较方便,知道是当前条记录,
这样的话我建议你给当前条记录底色着色的办法和设置当前记录字体颜色来完成
OnDrawColumnCell事件可以完成
窗口界面:&有一个文本框及cxGrid,&当在文本框中输入文本时,使用dataset.locate方法定位当前位置,因为满足条件的记录较多,需要从grid中进行选择,如果dataset把第一条满足条件的记录显示在grid的低部,哪客户总要拖动滚动条来选择记录,很不方便的。。。
客户要求呀。。。没办法
可以向cxGrid发送向下键或者pagedown健的消息.
PostMessage(cxGrid.Handle,WM_KEYDOWN,VK_DOWN,0);
PostMessage(cxGrid.Handle,WM_KEYUP,VK_DOWN,0);
在使用cxGrid时,发现如下规律:
假定整个cxGrid可以容纳14条记录,当第一次打开窗口时,并运行dataset.locate方法找记录时,第一条匹配的记录在第13行位置,当用mouse点击后该行后,每按一次下箭头,cxGrid的cursor向上移动一行。。。
请高手帮忙。。。。
没做过这种需求的,你可以参考下bookmark的用法,看能不能实现
TcxGridDBTableView.Controller.TopRowIndex&:=&TcxGridDBTableView.Controller.FocusedRowI
cxGrid的其它技巧参见:
http://community.csdn.net/Expert/topic/.xml?temp=.588421用心创造滤镜
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(8419)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_095065',
blogTitle:'Delphi DBGrid使用大全',
blogAbstract:'delphi中TDBGrid的使用 10:03procedure TMainForm.DBGrid1DrawColumnCell(Sender: TOconst Rect: TR DataCol: I Column: TCState: TGridDrawState);var i :beginif gdSelected in State then E//定义表头的字体和背景颜色:
for i :=0 to (Sender as TDBGrid).Columns.Count-1 do
(Sender as TDBGrid).Columns[i].Title.Font.Name :=\'宋体\'; //字体',
blogTag:'delphi,dbgrid',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:6,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}博客访问: 6565
博文数量: 31
注册时间:
鏆傛棤浠嬬粛
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
给主人留下些什么吧!~~
请登录后留言。dbgrid如何实现录入动态模糊查询
[问题点数:100分,无满意结帖,结帖人wuruichang]
dbgrid如何实现录入动态模糊查询
[问题点数:100分,无满意结帖,结帖人wuruichang]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
2014年10月 Delphi大版内专家分月排行榜第二2014年9月 Delphi大版内专家分月排行榜第二
2012年4月 Delphi大版内专家分月排行榜第二2012年3月 Delphi大版内专家分月排行榜第二2012年1月 Delphi大版内专家分月排行榜第二2011年11月 Delphi大版内专家分月排行榜第二
2012年2月 Delphi大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。Delphi&DBGrid显示颜色应用技巧
在 Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一。但是 DBGrid
缺省的外观未免显得单调和缺乏创意。其实,我们完全可以在我们的程序中通过编程来达到美化DBGrid 外观的目的。通过编程,我们可以改变
DBGrid 的表头、网格、网格线的前景色和背景色,以及相关的字体的大小和风格。
& & 以下的示例程序演示了对 DBGrid 各属性的设置,使
Delphi 显示的表格就像网页中的表格一样漂亮美观。
& & 示例程序的运行:
& & 在 Form1 上放置
DBGrid1、Query1、DataSource1 三个数据库组件,设置相关的属性,使 DBGrid1 能显示表中的数据。然后,在
DBGrid1 的 onDrawColumnCell 事件中键入以下代码,然后运行程序,就可以看到神奇的结果了。本代码在
Windows98、Delphi5.0 环境下调试通过。
<img STYLE="DispLAY: none" src="/blog7style/images/common/sg_trans.gif" real_src ="/OutliningIndicators/ContractedBlock.gif" JQUERY"
ALT="Delphi&DBGrid显示颜色应用技巧"
TITLE="Delphi&DBGrid显示颜色应用技巧" /><img src="/blog7style/images/common/sg_trans.gif" real_src ="/OutliningIndicators/ExpandedBlockStart.gif"
ALT="Delphi&DBGrid显示颜色应用技巧"
TITLE="Delphi&DBGrid显示颜色应用技巧" />View
procedure TMainForm.DBGrid1DrawColumnCell(Sender: TO
const Rect: TR DataCol: I Column: TCState: TGridDrawState);
if gdSelected in State then E
//定义表头的字体和背景颜色:
for i :=<span STYLE="CoLor: # to (Sender as TDBGrid).Columns.Count-<span STYLE="CoLor: # do
(Sender as TDBGrid).Columns[i].Title.Font.Name :='宋体'; //字体
(Sender as TDBGrid).Columns[i].Title.Font.Size :=<span STYLE="CoLor: #; //字体大小
(Sender as TDBGrid).Columns[i].Title.Font.Color :=$000000 //字体颜色(红色)
(Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00; //背景色(绿色)
//隔行改变网格背景色:
if Query1.RecNo mod <span STYLE="CoLor: # = <span STYLE="CoLor: # then
(Sender as TDBGrid).Canvas.Brush.Color := clInfoBk //定义背景颜色
(Sender as TDBGrid).Canvas.Brush.Color := RGB(<span STYLE="CoLor: #1, <span STYLE="CoLor: #5, <span STYLE="CoLor: #3); //定义背景颜色
//定义网格线的颜色:
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
with (Sender as TDBGrid).Canvas do //画 cell 的边框
Pen.Color := $00ff0000; //定义画笔颜色(蓝色)
MoveTo(Rect.Left, Rect.Bottom); //画笔定位
LineTo(Rect.Right, Rect.Bottom); //画蓝色的横线
Pen.Color := $0000ff00; //定义画笔颜色(绿色)
MoveTo(Rect.Right, Rect.Top); //画笔定位
LineTo(Rect.Right, Rect.Bottom); //画绿色的竖线
Delphi中的数据网格控件(TDbGrid)对于显示和编辑数据库中大量的数据起着十分重要的作用;然而,在使用数据网格控件的同时,也往往因为表格中大量的数据不易区分,而令操作者眼花缭乱。如何提高网格控件的易用性,克服它的此项不足呢?本文从改变数据网格的色彩配置角度,提出了一种解决办法。
以下为数据网格控件的6种特殊效果的实现方法,至于数据网格控件与数据集如何连接的方法从略。
1. 纵向斑马线效果:实现网格的奇数列和偶数列分别以不同的颜色显示以区别相邻的数据列。
Case DataCol Mod <span STYLE="CoLor: # = <span STYLE="CoLor: # of
True: DbGrid1.Canvas.Brush.Color:= clB file://偶数列用蓝色
False: DbGrid1.Canvas.Brush.Color:= clA file://奇数列用浅绿色
DbGrid1.Canvas.Pen.Mode:=pmM
DbGrid1.DefaultDrawColumnCell (Rect
2. 纵向斑马线,同时以红色突出显示当前单元格效果:以突出显示当前选中的字段。
file://将上述代码修改为:
Case DataCol Mod 2 = 0 of
True: DbGrid1.Canvas.Brush.Color:= clB file://偶数列用蓝色
False: DbGrid1.Canvas.Brush.Color:= clA file://奇数列用浅绿色
If ((State = [gdSelected]) or (State=[gdSelectedgdFocused]))
If Not DbGrid1.SelectedRows.CurrentRowSelected then
DbGrid1.Canvas.Brush.Color:=clR file://当前选中单元格显示红色
DbGrid1.Canvas.Pen.Mode:=pmM
DbGrid1.DefaultDrawColumnCell (Rect
上述两种方法突出了列的显示效果。
3.在数据网格中以红色突出显示当前选中的行。
设置DbGrid控件的Options属性中的dgRowSelect属性为真,Color属性为clAqua(背景色)
在DbGrid的DrawColumnCell事件中编写如下代码:
if ((State = [gdSelected]) or (State=[gdSelected gdFocused]))
DbGrid1.Canvas.Brush.color:=clR
file://当前行以红色显示,其它行使用背景的浅绿色
DbGrid1.Canvas.pen.mode:=
DbGrid1.DefaultDrawColumnCell (Rect
4.行突显的斑马线效果:既突出当前行,又区分不同的列(字段)。
file://其它属性设置同3,将上述代码修改为:
if ((State = [gdSelected]) or (State=[gdSelectedgdFocused]))
Case DataCol Mod 2 = 0 of
True : DbGrid1.Canvas.Brush.color:=clR
file://当前选中行的偶数列显示红色
False: DbGrid1.Canvas.Brush.color:=
file://当前选中行的奇数列显示蓝色
DbGrid1.Canvas.pen.mode:=
DbGrid1.DefaultDrawColumnCell (Rect
5.横向斑马线, 同时以红色突显当前行效果。
file://其它属性设置同3,将上述代码修改为:
Case Table1.RecNo mod 2 = 0 of file://根据数据集的记录号进行判断
True : DbGrid1.Canvas.Brush.color:=clA file://偶数行用浅绿色显示
False: DbGrid1.Canvas.Brush.color:= file://奇数行用蓝色表示
if ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then
file://选中行用红色显示
DbGrid1.Canvas.Brush.color:=clR
DbGrid1.Canvas.pen.mode:=pmM
DbGrid1.DefaultDrawColumnCell (Rect
6.双向斑马线效果:即行间用不同色区分,同时,选中行以纵向斑马线效果区分不同的列。
file://其它属性设置同3,将上述代码修改为:
Case Table1.RecNo mod 2 = 0 of file://根据数据集的记录号进行判断
True : DbGrid1.Canvas.Brush.color:=clA file://偶数行用浅绿色显示
False: DbGrid1.Canvas.Brush.color:= file://奇数行用蓝色表示
If ((State = [gdSelected]) or (State=[gdSelectedgdFocused]))
Case DataCol mod 2 = 0 of
True : DbGrid1.Canvas.Brush.color:=clR file://当前选中行的偶数列用红色
False: DbGrid1.Canvas.Brush.color:= clG
file://当前选中行的奇数列用绿色表示
DbGrid1.Canvas.pen.mode:=pmM
DbGrid1.DefaultDrawColumnCell (Rect
上述6种方法分别就数据网格控件的列和行的色彩进行了设置,读者可以根据自己的需要设置特效。该程序在Delphi5中测试通过。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 delphi dbgrid换行 的文章

 

随机推荐