TEdit可以,可TImage可以拖动,但拉它的边缘改变不了大小,有什么好办法可以在运行时用鼠标拖动的方式改变其大小
解决方案 »
- mysql数据库中的内容显示在Memo控件中
- Delphi服务程序问题
- 儿童节,散分。
- 怎样将表中一个一列数据传输到listview
- 为什么线程中没有了更新数据??
- image.visable false->ture时闪烁怎么办?
- 求助各位大虾:急急急急急急急急急急急急急急!!!
- crc16的校验代码怎么对2位数据校验呢?
- 菜鸟求救:怎么把Listview中的记录前checkbox打钩的记录选出来,最好有代码
- 高分求DELPHI+SQLSERVER源代码?(WHXXR@163。COM)
- 怎么在字符串加空格 (类似回车换行 #10#13) ?
- 能把ClientDataSet中的每一行设置为新增状态吗?
AutoSize:=false;
Stretch:=true;
拖动改变大小的方法跟TEdit相同.
CanReSized : boolean;
W : integer;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Caption := Format('%d,%d',[x,y]);
with TImage(Sender) do
begin
if X = Width-1 then
begin
Cursor := crSizeWE;
W := Width;
end else CurSor := crDefault;
if CanReSized then Width := X;
end;
end;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if X = Image1.Width-1 then CanReSized := True else CanReSized := False;
end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CanReSized := False;
end;
但在运行时动态生成的TImage,我分别写了三个事件对应mousemove,mousedown,mouseup对应三个鼠标事件,可是发现mouseup事件一直没有进入,我都正确设置了鼠标事件呀
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ImageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
end;var
Form1: TForm1;implementation
uses ExtCtrls;
{$R *.dfm}var
WCanReSized, HCanReSized : boolean;
W, H : integer;procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Caption := Format('%d,%d',[x,y]);
with TImage(Sender) do
begin
if (X=Width-1) and (Y=Height-1) then
begin
Cursor := crSizeNWSE;
W := Width;
H := Height;
end else
if X = Width-1 then
begin
Cursor := crSizeWE;
W := Width;
end else
if Y=Height-1 then
begin
Cursor := crSizeNS;
H := Height;
end else CurSor := crCross;
if WCanReSized then Width := X;
if HCanReSized then Height := Y;
end;
end;procedure TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
with TImage(Sender) do
if (X=Width-1) and (Y=Height-1) then
begin
WCanReSized := True;
HCanReSized := True;
end else
if X = Width-1 then
begin
WCanReSized := True;
HCanReSized := False;
end else
if Y=Height-1 then
begin
WCanReSized := False;
HCanReSized := True;
end else
begin
WCanReSized := False;
HCanReSized := False;
end;
end;procedure TForm1.ImageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
WCanReSized := False;
HCanReSized := False;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
with TImage.Create(self) do //动态创建TImage对象
begin
Left := 50;
Top := 50;
Picture.Bitmap.LoadFromFile('C:\Test.Bmp');
Parent := self;
Show;
Cursor := crCross;
OnMouseDown := ImageMouseDown;//指定它的MouseDown\move\up事件处理过程
OnMouseUp := ImageMouseUp; //
OnMouseMove := ImageMouseMove; //
end;;
end;
image.Picture.Graphic.Width:=xx
image.Picture.Graphic.Height:=yy;
image.Picture.Graphic.Width:=xx
image.Picture.Graphic.Height:=yy;-------------------------------------你的xx, yy 怎么得来的? 那能不能把实现的代码全部写出来,看一下简化了多少? 难道说我的全部代码就只是相当于你的这两句代码?????????自己写一下试一试,不要信口说来