初来乍到,请多多指教!先请教一个控件问题 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(老冯) 的回答,对我帮助很大
问题的点数是不是要像在大富翁里一样分发啊,不知道怎么发:(