我在rzgroupbar里加了两个trzgroup(rzgroup1和rzgroup2),在trzgroup里分别有richedit。
创建时,使rzgroupbar显示出垂直滚动条,并在richedit里输入内容,使它也显示出垂直滚动条。
为了使鼠标滚轮能够直接控制鼠标正下方控件的滚动条移动,我用了tapplication控件,在onmessage里加了以下代码:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
var
proc_WinControl:TWinControl;
proc_Point:TPoint;
proc_Hwnd:Hwnd;
i:Integer;
begin
if Msg.message=WM_MOUSEWHEEL then
begin
if Form1.WindowState<>wsMinimized then
begin
GetCursorPos(proc_Point);
proc_Hwnd:=WindowFromPoint(proc_Point);
for i:=0 to Form1.ComponentCount -1 do
begin
if Form1.Components[i] is TWinControl then
begin
if TWINCONTROL(Form1.Components[i]).Handle=proc_Hwnd then
begin
proc_WinControl:=TWinControl(Form1.Components[i]);
break;
end;
end;
end;
Msg.hwnd:=proc_Hwnd;
end;
end;
handled:=False;
end;
运行以后发现存在以下的问题:
1)创建窗体后,如果没有打焦点放到richedit里,把鼠标放到richedit上,并转动滚轮,鼠标正下方的richedit的滚动条会动。再把鼠标移到rzgroupbar的滚动条上并转动滚轮,richedit的滚动条不动了,但是rzgroupbar的也不动。
2)把焦点放到richedit,并把鼠标放在它上面,转动滚轮,richedit的滚动条反倒不动了,rzgroupbar的开始动。
高手们帮帮忙吧,两天了都没解决,救救命吧!!!
创建时,使rzgroupbar显示出垂直滚动条,并在richedit里输入内容,使它也显示出垂直滚动条。
为了使鼠标滚轮能够直接控制鼠标正下方控件的滚动条移动,我用了tapplication控件,在onmessage里加了以下代码:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
var
proc_WinControl:TWinControl;
proc_Point:TPoint;
proc_Hwnd:Hwnd;
i:Integer;
begin
if Msg.message=WM_MOUSEWHEEL then
begin
if Form1.WindowState<>wsMinimized then
begin
GetCursorPos(proc_Point);
proc_Hwnd:=WindowFromPoint(proc_Point);
for i:=0 to Form1.ComponentCount -1 do
begin
if Form1.Components[i] is TWinControl then
begin
if TWINCONTROL(Form1.Components[i]).Handle=proc_Hwnd then
begin
proc_WinControl:=TWinControl(Form1.Components[i]);
break;
end;
end;
end;
Msg.hwnd:=proc_Hwnd;
end;
end;
handled:=False;
end;
运行以后发现存在以下的问题:
1)创建窗体后,如果没有打焦点放到richedit里,把鼠标放到richedit上,并转动滚轮,鼠标正下方的richedit的滚动条会动。再把鼠标移到rzgroupbar的滚动条上并转动滚轮,richedit的滚动条不动了,但是rzgroupbar的也不动。
2)把焦点放到richedit,并把鼠标放在它上面,转动滚轮,richedit的滚动条反倒不动了,rzgroupbar的开始动。
高手们帮帮忙吧,两天了都没解决,救救命吧!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货