
04.04.2010, 08:46
|
Новичок
|
|
Регистрация: 25.09.2009
Сообщения: 53
Репутация: 4
|
|
Цитата:
Сообщение от Asinkrit
События OnMouseEnter, OnMouseLeave для формы можно и в 6-7 дельфях использовать, следующим образом:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.CMMouseEnter(var Message: TMessage);
begin
AlphaBlend:=false;
end;
procedure TForm1.CMMouseLeave(var Message: TMessage);
begin
AlphaBlend:=true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
AlphaBlendValue:=100;
end;
end.
Но к сожалению, работает это не так, как хотелось бы, ну а простое решение данной задачи, можно использовать таймер и проверять, не находится ли мышь над формой:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
AlphaBlendValue:=100;
Timer1.Interval:=100;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
with Mouse.CursorPos do
AlphaBlend:=not ((X>Left) and (Y>Top) and (X<Left+Width) and
(Y<Top+Height) and Active);
end;
end.
|
Спасобо огромное!!
|