在DBGRID里面鼠标滚动时,如果让与数据库关联的DBEDIT的值也跟着变动. 如题,我是想鼠标的中键在滚动的时候,DBGRID里面的值也随着变动.如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我当然知道要关联同一个DATASOURCE,比如:DBGRID1关联DATASOURCE1,DBEDIT1也关联DATASOURCE1,但是没有用.当鼠标在DBGRID1中的纪录滚动时,DBEDIT1里面的数据是不会变化的,一定要在鼠标左键点击到DBGRID1中的某一条数据时,DBEDIT1里面才会显示出相应的数据.有没有办法? 不知道你怎么搞的,本来简单问题,搞的复杂化--//实在不行,在添加一个DATASOURCE2,Ado2,DBedit连接DATASOURCE2,在鼠标滑动事件里面写程序付值, private//定义变量 { Private declarations } OldGridWnd: TWndMethod; OlgGrid2wnd: TWndMethod; procedure NewGridWnd(var Message: TMessage);-----procedure TZKPL.FormCreate(Sender: TObject);begin OldGridWnd := DBGrid1.WindowProc; DBGrid1.WindowProc := NewGridWnd;end;-----procedure TZKPL.NewGridWnd(var Message: TMessage);var IsNeg: Boolean; str: string;begin if Message.Msg = WM_MOUSEWHEEL then begin IsNeg := Short(Message.WParamHi) < 0; if IsNeg then Begin //DBGrid1.DataSource.DataSet.MoveBy(1) AdoQuery1.MoveBy(1); str:=AdoQuery1.FieldByName('zkuan_').AsString ; AdoQuery2.Close; Adoquery2.SQL.Clear; AdoQuery2.SQL.Add('select top '+Edit1.Text+' * from klbom where zkuan_='''+str+''''); Adoquery2.Open; End else Begin AdoQuery1.MoveBy(-1); str:=AdoQuery1.FieldByName('zkuan_').AsString ; AdoQuery2.Close; Adoquery2.SQL.Clear; AdoQuery2.SQL.Add('select top '+Edit1.Text+' * from klbom where zkuan_='''+str+''''); Adoquery2.Open; End; end else OldGridWnd(Message);end;// 你的问题在于DBGrid按鼠标滚轮的时候,记录指针不会跟着走。5楼方法可解决这个问题,或者用DBGridEh,那就可不需要另作这些特殊处理。直接用同一个数据源就可以了。 换控件,用DBGridEh,正常情况下是不需要修改什么代码。除非你有对DBGrid控件的展现做文章。 用dbgrideh就可以实现不写代码,才可以实现鼠标的中键在滚动的时候,DBGRID里面的值也随着变动的功能,你下载ehLib414该控件,安装一下就可以了. 求,delphi的数据库连接插件 delphi如何判断端口是否被占用 如何区分判断一个字符串中的数字和非数字字符? 为什么我的bde登录框去不掉? 高手指点一下,联合查询的问题,弄了一下午,查不出来错误,请高手指点! 平滑滚动的奥妙!(高手请指点) 给朋友指条明路哈!纯属调查!!!!! 在程序中如何控制 TwebBrowser 控件的滚动条? 這條SQL語句錯在那里?? delphi的Query问题,很是奇怪,请大侠赐教! 关于fastreport的 怎么理解参数中的Var
当鼠标在DBGRID1中的纪录滚动时,DBEDIT1里面的数据是不会变化的,一定要在鼠标左键点击到DBGRID1中的某一条数据时,DBEDIT1里面才会显示出相应的数据.有没有办法?
--//实在不行,在添加一个DATASOURCE2,Ado2,DBedit连接DATASOURCE2,在鼠标滑动事件里面写程序付值,
private//定义变量
{ Private declarations }
OldGridWnd: TWndMethod;
OlgGrid2wnd: TWndMethod;
procedure NewGridWnd(var Message: TMessage);
-----
procedure TZKPL.FormCreate(Sender: TObject);
begin
OldGridWnd := DBGrid1.WindowProc;
DBGrid1.WindowProc := NewGridWnd;
end;
-----
procedure TZKPL.NewGridWnd(var Message: TMessage);
var
IsNeg: Boolean;
str: string;
begin
if Message.Msg = WM_MOUSEWHEEL then
begin
IsNeg := Short(Message.WParamHi) < 0;
if IsNeg then
Begin
//DBGrid1.DataSource.DataSet.MoveBy(1)
AdoQuery1.MoveBy(1);
str:=AdoQuery1.FieldByName('zkuan_').AsString ;
AdoQuery2.Close;
Adoquery2.SQL.Clear;
AdoQuery2.SQL.Add('select top '+Edit1.Text+' * from klbom where zkuan_='''+str+'''');
Adoquery2.Open;
End
else
Begin
AdoQuery1.MoveBy(-1);
str:=AdoQuery1.FieldByName('zkuan_').AsString ;
AdoQuery2.Close;
Adoquery2.SQL.Clear;
AdoQuery2.SQL.Add('select top '+Edit1.Text+' * from klbom where zkuan_='''+str+'''');
Adoquery2.Open;
End;
end
else
OldGridWnd(Message);
end;
//