打开一个对话框,选中文件夹的ico,bmp等图标,将图标加入到窗体上,并可拖动。 ( 积分: 100 )

  • 主题发起人 主题发起人 skyjacker
  • 开始时间 开始时间
S

skyjacker

Unregistered / Unconfirmed
GUEST, unregistred user!
请问以下功能如何实现啊?
在程序中通过打开一个对话框,选中磁盘文件夹中的ico,bmp等图标,将图标加入到窗体上,并可在窗体上拖动。
给点提示也行。谢谢!
 
请问以下功能如何实现啊?
在程序中通过打开一个对话框,选中磁盘文件夹中的ico,bmp等图标,将图标加入到窗体上,并可在窗体上拖动。
给点提示也行。谢谢!
 
你是说选择中的文件是图标文件,还是要提取任何文件中的图标显示在窗体上?
 
动态创建一些TImage不就行了?响应他们的鼠标事件
 
乖乖兔:文件夹中的文件是图标文件。

兄弟们,给点代码吧
 
在窗体上加一个 TImage
然后在你选择文件的过程中加一句
Image.Picture.LoadFromFile('你选择中的全路径文件名');
这样不就可以了。

至于拖动这个 Image,
在 Image 所在的 Form 的 OnDragOver 事件写入
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := True;
end;

再把Image的 DragMode 属性设成 dmAutomatic,在 Imgae.OnEndDrag 事件中写入代码如下
procedure TForm1.Image1EndDrag(Sender, Target: TObject; X, Y: Integer);
var aPoint: TPoint;
begin
aPoint.X := X;
aPoint.Y := Y;
ScreenToClient(aPoint);
Image1.Left := aPoint.X;
Image1.top := aPoint.Y;
end;

就可以了。
 
谢谢乖乖兔。

我想对图像操作更灵活点,打算在一个TPanel上放一个TImage。
我建了一个类。有以下问题:
怎样设置Panel容器的大小?
怎样设置FImage的大小与Panel的大小相同?
怎样设置Fimage.parent为Panel?

type
TFreeImage = class(TPanel)
private
FImage: TImage;
..........
constructor TFreeImage.Create(AOwner: TComponent);
begin
inherited;
FImage:=TImage.Create(self);
FImage.Parent:=self;
FImage.Stretch:=true;
...
end;
 
TO:skyjacker 提个建议:不要用TImage,用TBitMap;我已前写的一个PANEL控件

type
TBeerPanel = class(TCustomPanel)
private
FTime:TTimer;
FBitmap:TBitMap;
FFlashMap:TBitmap;
FFlash:boolean;
FFlashBitmap: TBitmap;
procedure BitmapChanged(Sender: TObject);
procedure SetBitmap(Value: TBitmap);
procedure SetFlashBitmap(Value: TBitmap);
procedure SetFlash(Value: Boolean);
procedure FlashPanel(Sender: TObject);
procedure Paint; override;
……
 
多人接受答案了。
 
后退
顶部