我想做一个自定义的组件,是从TImage继承的,想在新组件里面添加一个功能:在运行时可以象拖动窗口那样来改变Image的大小,就好像在设计时可以通过控件周围的几个操作点来调整控件大小那样。请问有什么方法可以实现呢?我这样试过:
..........  
published
    property OnResize;
............
但是这样不行。
拜托各位大侠了!!!!

解决方案 »

  1.   

    你把image设置成cli.... 然后改变窗口大小时 image就会跟着变大小的。
      

  2.   

    可能是我表达的不清楚吧,我是想做Windows附件里的画图板的画布效果,就是可以用鼠标调整画布大小的那种
      

  3.   

    应该处理MouseMove MouseDown MouseUp事件.
    这是程序运行时直接调整Image控件Width的代码,我想写组件也能这么用吧.procedure TForm1.img1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if (x > img1.Width - 5) then Self.Cursor := crSizeWE;
      if IsSize then
        img1.Width := img1.Width + (X - img1.Width);
      Self.Caption := IntToStr(x);
    end;procedure TForm1.img1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if (x > img1.Width - 5)then
        IsSize := True;
    end;procedure TForm1.img1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      IsSize := False;
      Self.Cursor := crDefault;
    end;
      

  4.   

    多谢weixiaohua兄弟的帮助,问题得到解决了。要是在TForm1.img1MouseDown的第一句加上
      self.DoubleBuffered:=true;的话可以解决闪烁问题。给分~~~也谢谢其他楼的兄弟们。结贴
      

  5.   

    weixiaohua现在网页有错误,我给不了分。晚一点再给你吧,我不会赖帐的,放心^_^
      

  6.   

    恭喜
    self.DoubleBuffered:=true;这句写到formcreate里面不完了吗,另外注意这个设置的是image的parent的DoubleBuffered:=true;