OCX控件怎么操作其滚动条? ( 积分: 100 )

  • 主题发起人 主题发起人 冷涯
  • 开始时间 开始时间

冷涯

Unregistered / Unconfirmed
GUEST, unregistred user!
我在窗体上放了几个OCX控件,它自己会根据内容的大小出来横的和竖的滚动条.我想让其任何一个OCX的滚动条滚动时其它几个也跟着滚动.我用消息栏截的方法拦不到OCX的滚动消息:
if msg.message = WM_HSCROLL then
ShowMessage('HSCROLL');
if msg.message = WM_VSCROLL then
ShowMessage('VSCROLL');
后来这样:
if msg.hwnd = OCX.Handle then
begin
if msg.message = WM_HSCROLL then
ShowMessage('HSCROLL');
if msg.message = WM_VSCROLL then
ShowMessage('VSCROLL');
end

程序加断点能跟进去,但是还是没拦住它的滚动消息.当我查看OCX.Handle 时编译器提示:
"Variable 'Self' inaccessible here due to optimization&quot
.
以前我用这种方法加上GetScrollPos(VCL_CONTROL.Handle, SB_HORZ)和sendmessage()
相结合的方法就可以实现多个VCL控件的同步滚动,但现在用到OCX控件上不管用,请各位帮忙想个解决办法,谢谢,小弟急用.
 
我在窗体上放了几个OCX控件,它自己会根据内容的大小出来横的和竖的滚动条.我想让其任何一个OCX的滚动条滚动时其它几个也跟着滚动.我用消息栏截的方法拦不到OCX的滚动消息:
if msg.message = WM_HSCROLL then
ShowMessage('HSCROLL');
if msg.message = WM_VSCROLL then
ShowMessage('VSCROLL');
后来这样:
if msg.hwnd = OCX.Handle then
begin
if msg.message = WM_HSCROLL then
ShowMessage('HSCROLL');
if msg.message = WM_VSCROLL then
ShowMessage('VSCROLL');
end

程序加断点能跟进去,但是还是没拦住它的滚动消息.当我查看OCX.Handle 时编译器提示:
"Variable 'Self' inaccessible here due to optimization&quot
.
以前我用这种方法加上GetScrollPos(VCL_CONTROL.Handle, SB_HORZ)和sendmessage()
相结合的方法就可以实现多个VCL控件的同步滚动,但现在用到OCX控件上不管用,请各位帮忙想个解决办法,谢谢,小弟急用.
 
怎么没人回答啊?兄弟们帮忙解决一下吧.
 
"Variable 'Self' inaccessible here due to optimization&quot
.

这个要在
if msg.hwnd = OCX.Handle then 这里设置断点才有效,因为在后面设置的时候,其实那个变量已经不存在了

if msg.message = WM_HSCROLL then
这个消息是针对主窗口的,不是ACTIVEX的(应该没错吧),有个折中的办法,象替换flash控件的右键菜单那样的方法

......
private
procedure mymessage(var msg:tmsg;var handled:boolean);
......
implementation

{$R *.DFM}


procedure TForm1.mymessage(var msg:tmsg;var handled:boolean);
begin
if (msg.hwnd=xxx.handle) then //xxx为控件name
begin
if msg.message =wm_rbuttondown then
begin
PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
Handled := True;
end
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
application.onmessage:=mymessage;
end

把滚动消息设置成我们自己的,然后再去处理,看看行不行
 

Similar threads

I
回复
0
查看
562
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部