全部博文(788)
分类:
2008-11-18 14:50:22
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(老冯) 的回答,对我帮助很大
问题的点数是不是要像在大富翁里一样分发啊,不知道怎么发:(