有阿,早就有了阿,网上有个用delphi实现delphi的例子,有源码,你自己找来看看。

解决方案 »

  1.   

    如果需要可以mail给你,[email protected]
      

  2.   

    请Mail给我,一定给分。
    [email protected]
      

  3.   

    到现在还没有收到呀
    www.tolly.com是什么啊,好像是做VoIP的。
      

  4.   

    《Delphi 高级开发指南》上有详细的讲解。
      

  5.   

    同志们,来帮把手啊。
    我已用尽一切能用的方法了,效果都不好,只能寄希望于控件了。
    以下控件谁有注册码或Crack,必加分
    REDESIGN
    FORMEDIT
    TFormDesigner或其他能实现功能的控件也必加分。
      

  6.   

    DDHSIZER.PAS
    unit DdhSizer;interfaceuses
       Classes, Windows, Messages, Controls, StdCtrls;const
      sc_DragMove: Longint = $F012;type
      TDdhSizeButton = class (TButton)
      public
        procedure WmNcHitTest (var Msg: TWmNcHitTest);
          message wm_NcHitTest;
      end;  TDdhSizerControl = class (TCustomControl)
      private
        FControl: TControl;
        FRectList: array [1..8] of TRect;
        FPosList: array [1..8] of Integer;
      public
        constructor Create (AOwner: TComponent;
          AControl: TControl);
        procedure CreateParams (var Params: TCreateParams);
          override;
        procedure CreateHandle; override;
        procedure WmNcHitTest (var Msg: TWmNcHitTest);
          message wm_NcHitTest;
        procedure WmSize (var Msg: TWmSize);
          message wm_Size;
        procedure WmLButtonDown (var Msg: TWmLButtonDown);
          message wm_LButtonDown;
        procedure WmMove (var Msg: TWmMove);
          message wm_Move;
        procedure Paint; override;
        procedure SizerControlExit (Sender: TObject);
      end;procedure Register;implementationuses
      Graphics;// TDdhSizeButton methodsprocedure TDdhSizeButton.WmNcHitTest(var Msg: TWmNcHitTest);
    var
      Pt: TPoint;
    begin
      Pt := Point (Msg.XPos, Msg.YPos);
      Pt := ScreenToClient (Pt);
      if (Pt.x < 5) and (pt.y < 5) then
        Msg.Result := htTopLeft
      else if (Pt.x > Width - 5) and (pt.y < 5) then
        Msg.Result := htTopRight
      else if (Pt.x > Width - 5) and (pt.y > Height - 5) then
        Msg.Result := htBottomRight
      else if (Pt.x < 5) and (pt.y > Height - 5) then
        Msg.Result := htBottomLeft
      else if (Pt.x < 5) then
        Msg.Result := htLeft
      else if (pt.y < 5) then
        Msg.Result := htTop
      else if (Pt.x > Width - 5) then
        Msg.Result := htRight
      else if (pt.y > Height - 5) then
        Msg.Result := htBottom
      else
        inherited;
    end;// TDdhSizerControl methodsconstructor TDdhSizerControl.Create (
      AOwner: TComponent; AControl: TControl);
    var
      R: TRect;
    begin
      inherited Create (AOwner);
      FControl := AControl;
      // install the new handler
      OnExit := SizerControlExit;
      // set the size and position
      R := FControl.BoundsRect;
      InflateRect (R, 2, 2);
      BoundsRect := R;
      // set the parent
      Parent := FControl.Parent;
      // create the list of positions
      FPosList [1] := htTopLeft;
      FPosList [2] := htTop;
      FPosList [3] := htTopRight;
      FPosList [4] := htRight;
      FPosList [5] := htBottomRight;
      FPosList [6] := htBottom;
      FPosList [7] := htBottomLeft;
      FPosList [8] := htLeft;
    end;procedure TDdhSizerControl.CreateHandle;
    begin
      inherited CreateHandle;
      SetFocus;
    end;procedure TDdhSizerControl.CreateParams (var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
      Params.ExStyle := Params.ExStyle +
        ws_ex_Transparent;
    end;procedure TDdhSizerControl.Paint;
    var
      I: Integer;
    begin
      Canvas.Brush.Color := clBlack;
      for I := 1 to  8 do
        Canvas.Rectangle (FRectList [I].Left, FRectList [I].Top,
          FRectList [I].Right, FRectList [I].Bottom);
    end;procedure TDdhSizerControl.WmNcHitTest(var Msg: TWmNcHitTest);
    var
      Pt: TPoint;
      I: Integer;
    begin
      Pt := Point (Msg.XPos, Msg.YPos);
      Pt := ScreenToClient (Pt);
      Msg.Result := 0;
      for I := 1 to  8 do
        if PtInRect (FRectList [I], Pt) then
          Msg.Result := FPosList [I];
      // if the return value was not set
      if Msg.Result = 0 then
        inherited;
    end;procedure TDdhSizerControl.WmSize (var Msg: TWmSize);
    var
      R: TRect;
    begin
      R := BoundsRect;
      InflateRect (R, -2, -2);
      FControl.BoundsRect := R;
      // setup data structures
      FRectList [1] := Rect (0, 0, 5, 5);
      FRectList [2] := Rect (Width div 2 - 3, 0,
        Width div 2 + 2, 5);
      FRectList [3] := Rect (Width - 5, 0, Width, 5);
      FRectList [4] := Rect (Width - 5, Height div 2 - 3,
       Width, Height div 2 + 2);
      FRectList [5] := Rect (Width - 5, Height - 5,
       Width, Height);
      FRectList [6] := Rect (Width div 2 - 3, Height - 5,
        Width div 2 + 2, Height);
      FRectList [7] := Rect (0, Height - 5, 5, Height);
      FRectList [8] := Rect (0, Height div 2 - 3,
       5, Height div 2 + 2);
    end;procedure TDdhSizerControl.SizerControlExit (Sender: TObject);
    begin
      Free;
    end;procedure TDdhSizerControl.WmLButtonDown (var Msg: TWmLButtonDown);
    begin
      Perform (wm_SysCommand, sc_DragMove, 0);
    end;procedure TDdhSizerControl.WmMove (var Msg: TWmMove);
    var
      R: TRect;
    begin
      R := BoundsRect;
      InflateRect (R, -2, -2);
      FControl.Invalidate; // repaint entire surface
      FControl.BoundsRect := R;
    end;// components registrationprocedure Register;
    begin
      RegisterComponents ('DDHB', [TDdhSizeButton]);
      RegisterNoIcon ([TDdhSizerControl]);
    end;end.--------------------------------------------------------------------------------
    Generated by PasToWeb, a tool by Marco Cantù.SIZEFORM.PAS
    unit SizeForm;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls, DdhSizer;type
      TForm1 = class(TForm)
        Button2: TButton;
        CheckBox1: TCheckBox;
        Edit1: TEdit;
        Bevel1: TBevel;
        Bevel2: TBevel;
        DdhSizeButton1: TDdhSizeButton;
        DdhSizeButton2: TDdhSizeButton;
        procedure AttachSizer(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.AttachSizer(Sender: TObject);
    begin
      TDdhSizerControl.Create (self, Sender as TControl);
    end;end.--------------------------------------------------------------------------------
    Generated by PasToWeb, a tool by Marco Cantù.
    SIZEFORM.DFM
    object Form1: TForm1
      Left = 196
      Top = 117
      Width = 460
      Height = 183
      Caption = 'SizeDemo'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      PixelsPerInch = 96
      TextHeight = 13
      object Bevel1: TBevel
        Left = 8
        Top = 8
        Width = 441
        Height = 65
      end
      object Bevel2: TBevel
        Left = 8
        Top = 80
        Width = 441
        Height = 65
      end
      object Button2: TButton
        Left = 56
        Top = 96
        Width = 75
        Height = 25
        Caption = 'Button2'
        TabOrder = 0
        OnClick = AttachSizer
      end
      object CheckBox1: TCheckBox
        Left = 175
        Top = 102
        Width = 85
        Height = 17
        Caption = 'CheckBox1'
        TabOrder = 1
        OnClick = AttachSizer
      end
      object Edit1: TEdit
        Left = 293
        Top = 99
        Width = 105
        Height = 21
        TabOrder = 2
        Text = 'Edit1'
        OnClick = AttachSizer
      end
      object DdhSizeButton1: TDdhSizeButton
        Left = 72
        Top = 24
        Width = 137
        Height = 25
        Caption = 'DdhSizeButton1'
        TabOrder = 3
      end
      object DdhSizeButton2: TDdhSizeButton
        Left = 248
        Top = 24
        Width = 137
        Height = 25
        Caption = 'DdhSizeButton2'
        TabOrder = 4
      end
    end--------------------------------------------------------------------------------
    Generated by PasToWeb, a tool by Marco Cantù.
    SIZEDEMO.DPR
    program SizeDemo;uses
      Forms,
      SizeForm in 'SizeForm.pas' {Form1};{$R *.RES}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.一个完整的例子——《Delphi 高级开发指南》
      

  7.   

    城城想说的网站是www.torry.net吧,我在上面也找到了一个,是画一个方框来拖动的,同样屏蔽了鼠标事件,而且无法实现多个控件被选。
    还是谢谢你。