求助。grid里怎么能让单元格固定焦点 比如鼠标点中了一个单元格,然后鼠标滚轴怎么拉,始终焦点都在原先那个单元格?不会随着拖动而改变? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 修改消息函数,截取滚动消息.直接msg.result :=1; unit Unit2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids;type TForm2 = class(TForm) StringGrid1: TStringGrid; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); private { Private declarations } protected oldproc :TWndMethod; procedure MyProWnd(var Message: TMessage); public { Public declarations } end;var Form2: TForm2;implementation{$R *.dfm}procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);begin action := cafree;end;procedure TForm2.FormCreate(Sender: TObject);begin oldproc := StringGrid1.WindowProc; StringGrid1.WindowProc := MyProWnd;end;procedure TForm2.FormDestroy(Sender: TObject);begin form2:= nil;end;procedure TForm2.MyProWnd(var Message: TMessage);begin if Message.Msg=WM_MOUSEWHEEL then Message.Result :=1 else oldproc(Message);end;end. 以上代码在delphi2009下测试通过. 查不到对应的用什么消息,就记录log看看. 晕死,写了log了,动一下就2,3百个消息。。有没有哪里有资料查?其实就是右边和下边的滚动条的消息,有办法捕捉吗 WM_HSCROLL和WM_VSCROLL是滚动消息吧.但这个屏蔽掉就不能滚动了. 首先,谢谢你这两天来的指导。确实,这两个如果屏蔽掉就不能滚动了,那样也不行。我觉得在grid里如果鼠标滚轴或者滚动条动的时候是数据集里的相应数据的定位变动了,有没有办法就是让数据集不随着这些操作的变动而变动? 试了下,直接数据集定位的效果也和屏蔽消息一样的,导致了滚动条没办法动了,这样数据多的话下面的数据就没办法看到了有没有办法实现和excel那样的功能啊,就是滚动条还是可以动,怎么拖拉都可以,但是焦点始终停留在之前鼠标单击选中的单元格,只有鼠标再次单击其他单元格才会改变焦点? 怎么修改?我用的是grideh,请指教 学到了记住一句话 Excel是编程人员最大的敌人!!! 线程同步问题CriticalSection(临界区) Delphi调用VC做的Dll的函数不返回,程序就死了, 我打了log发现Dll是返回了的,为什么Delphi会不往下执行了呢?谢谢! 知道访问密码可是不知道写在什么位置? 截屏问题请教.! 低手相问,DELPHI的问题!在线等 求助! 毕业设计 用IntraWeb做了个图书超市 征求建议 http://nullspace.zhibo.net下载 得到三个三角,散600,这是第五个100分,12:23结贴 如何让窗体具中(初级问题) 为什么出这种错? if Assigned 请详细说说class of的作用和用法
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;type
TForm2 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
protected
oldproc :TWndMethod;
procedure MyProWnd(var Message: TMessage);
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
end;procedure TForm2.FormCreate(Sender: TObject);
begin
oldproc := StringGrid1.WindowProc;
StringGrid1.WindowProc := MyProWnd;
end;procedure TForm2.FormDestroy(Sender: TObject);
begin
form2:= nil;
end;procedure TForm2.MyProWnd(var Message: TMessage);
begin
if Message.Msg=WM_MOUSEWHEEL then
Message.Result :=1
else
oldproc(Message);
end;end.
有没有哪里有资料查?其实就是右边和下边的滚动条的消息,有办法捕捉吗
但这个屏蔽掉就不能滚动了.
这些操作的变动而变动?
记住一句话 Excel是编程人员最大的敌人!!!