向高手求救:怎样在运行期象设计期那样在选中控件之后,通过控件四周八个点来调整大小/拖动控件? ( 积分: 200 )

  • 主题发起人 主题发起人 duhl
  • 开始时间 开始时间
你可以用 HANDLES.PAS 试一下, 就是用来做这个的.

在GOOGLE搜索HANDLES.PAS, 居然又回来了: [:D]
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1456766
 
呵呵,千辛万苦终于找到这个控件了,我要求最好是这样,就是跟Delphi中一样,B控件得到焦点时候,A控件同时失去焦点,点击Form空白处,所有控件失去焦点,哪位高手修改一下这个控件源代码啊。
 
这个控件不是可以满足你的要求了马蹄形?还修改什么呀?

我试了一下,效果还不错。
 
我明白你的意思了。你要求点击B的时候,A取消焦点。
现在是如果你点了A,又点B,控件实现的是多选,一起移动。

你自己试着改一下吧,正好是个学习的过程。
 
问题解决了。不用修改控件,实现了你的要求。

例:窗体上放两个Panel与一个StretchHandle1控件。

源码如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, StretchHandle;

type
TForm1 = class(TForm)
Panel1: TPanel;
StretchHandle1: TStretchHandle;
Panel2: TPanel;
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
StretchHandle1.Detach;
StretchHandle1.Attach(Panel1);
end;

procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
StretchHandle1.Detach;
StretchHandle1.Attach(Panel2);
end;

end.

结贴吧。
 
谢谢各位!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部