如何在HINT窗口里画出一幅JPG的缩览图(300分)

  • 主题发起人 主题发起人 wqhatnet
  • 开始时间 开始时间
W

wqhatnet

Unregistered / Unconfirmed
GUEST, unregistred user!
以下代码只能显示文字,可是我想要显示缩览图的

function showHintMsg(msg:String):boolean;
var
h : THintWindow;
r : TRect;
p : TPoint;
begin
GetCursorPos(p);
with r do
begin
left := p.x;
top := p.y;
right := p.x+100;
bottom := p.y+100;
end;
h := THintWindow.Create(form1);
with h do
begin
Color := clInfoBk;
ActivateHint( r,msg);
//sleep(1000);
ReleaseHandle;
Free;
end;
if h.Handle<> 0 then
showMessage('ok');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
h : THintWindow;
r : TRect;
begin
with r do
begin
left := 100;
top := 50;
right := 500;
bottom := 100;
end;
h := THintWindow.Create( Self );
with h do
begin
Color := clInfoBk;
ActivateHint( r, 'hi th'+#13#10+'ere!' );
//sleep(1000);
//ReleaseHandle;
//Free;
end;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
showHintMsg(memo1.text);
end;
 
自己实现一个HintWindow:
示例如下
type
TMyHintWindow = class(THintWindow)
private
FImage: TImage;
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
end;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
HintWindowClass := TMyHintWindow;
end;

{ TMyHintWindow }

constructor TMyHintWindow.Create(AOwner: TComponent);
begin
inherited;
FImage := TImage.Create(Self);
FImage.Parent := Self;
FImage.Picture.LoadFromFile('E:/NsBioa3.ico');
FImage.Top := 20;
end;

procedure TMyHintWindow.Paint;
begin
Height := FImage.Height;
inherited;
end;
 
没有反应
 
没有反应? 应该是可以显示图片的
 
你用bmp圖片試一下
 
老大,我这里效果很好啊,你是怎么搞的?
type
TMyHintWindow = class(THintWindow)
private
FImage: TImage;
public
constructor Create(AOwner: TComponent); override;
end;


implementation

{$R *.dfm}

{ TMyHintWindow }

constructor TMyHintWindow.Create(AOwner: TComponent);
begin
inherited;
FImage := TImage.Create(Self);
FImage.Parent := Self;
FImage.AutoSize := True;
FImage.Picture.LoadFromFile('E:/setup.bmp');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TMyHintWindow.Create(Self).ActivateHint(Rect(100, 100, 640, 530), '');
end;
 
显示缩览图
 
这样,把你某个BUTTON的HINT设成是一个图片的路径,比如 E:/Setup.bmp,并且把ShowHint设为TRUE,然后运行,鼠标移上去那个BUTTON的HINT就是E:/Setup.bmp这个图片了,代码都写出来了,不会还看不到效果吧?

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
BitBtn1: TBitBtn;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

type
TMyHintWindow = class(THintWindow)
private
FImage: TImage;
public
constructor Create(AOwner: TComponent); override;
procedure ActivateHint(Rect: TRect; const AHint: string); override;
end;


implementation

uses Types;

{$R *.dfm}

{ TMyHintWindow }

procedure TMyHintWindow.ActivateHint(Rect: TRect; const AHint: string);
begin
FImage.Picture.LoadFromFile(AHint);
Rect.Right := Rect.Left + FImage.Width;
Rect.Bottom := Rect.Top + FImage.Height;
inherited ActivateHint(Rect, '');
end;

constructor TMyHintWindow.Create(AOwner: TComponent);
begin
inherited;
FImage := TImage.Create(Self);
FImage.Parent := Self;
FImage.AutoSize := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TMyHintWindow.Create(Self).ActivateHint(Rect(100, 100, 640, 530), 'E:/setup.bmp');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
HintWindowClass := TMyHintWindow;
end;

end.
 
我已经把我的DEMO放到 http://xianjun.vicp.net/temp/ImageHint.rar
相信没有其他问题了吧? [:)]
 
我試用了...很好....
 
有,我的是D.5X
 
D5也没有问题的: http://xianjun.vicp.net/temp/ImageHintD5.zip
 
多人接受答案了。
 
后退
顶部