初来乍到,请多多指教!先请教一个控件问题

初来乍到,请多多指教!先请教一个控件问题 VCL组件开发及应用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061224131514154.html
SendMessage(panel2.Handle,LB_SETHORIZONTALEXTENT,   panel2.Width+30,       0);  
  这个方式可以给LISTBOX添加横向滚动条,但是换成PANEL就不行了,为什么,论坛中说是可以的,但是我就是实现不了,请教是什么原因,我用的是DELPHI7,谢谢。  
   
  顺便再问一下,想学习VCL控件开发,有没有比较合适的书籍?

TPanel应该没有处理LB_SETHORIZONTALEXTENT这条消息的HANDLER吧。这条消息是专门针对LISTBOX的。   看前缀LB_就是这个意思了。但是SendMessage(panel2.Handle,LB_SETHORIZONTALEXTENT,   panel2.Width+30,       0);  
  还是可以实现panel2.Width+30的。

TFormDemo   =   class(TForm)  
          Panel:   TPanel;  
          ButtonDemo:   TButton;  
          procedure   FormCreate(Sender:   TObject);  
          procedure   ButtonDemoClick(Sender:   TObject);  
      private  
          OldPanelWndProc:   TWndMethod;  
          procedure   NewPanelWindowProc(var   Message:   TMessage);  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      FormDemo:   TFormDemo;  
   
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TFormDemo.FormCreate(Sender:   TObject);  
  begin  
      OldPanelWndProc   :=   Panel.WindowProc;  
      Panel.WindowProc   :=   NewPanelWindowProc;  
  end;  
   
  procedure   TFormDemo.NewPanelWindowProc(var   Message:   TMessage);  
  begin  
      if   Message.Msg   =   LB_SETHORIZONTALEXTENT   then  
          Panel.Width   :=   Message.WParam;  
      OldPanelWndProc(Message);  
  end;  
   
  procedure   TFormDemo.ButtonDemoClick(Sender:   TObject);  
  begin  
      SendMessage(Panel.Handle,LB_SETHORIZONTALEXTENT,   Panel.Width+30,   0);  
  end;  
   
 

但是实现归实现,   与LB_SETHORIZONTALEXTENT这条消息没有什么直接的关系啊,   发送这条消息和发送其他的消息没有什么区别的。

谢谢   sanmaotuo(老冯)     的回答,对我帮助很大  
 

问题的点数是不是要像在大富翁里一样分发啊,不知道怎么发:(

转载于:https://www.cnblogs.com/delphi2007/archive/2008/11/18/1335888.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值