请教各位了:(50分)

  • 主题发起人 主题发起人 netbug
  • 开始时间 开始时间
N

netbug

Unregistered / Unconfirmed
GUEST, unregistred user!
一:请看下例:
type
TForm1 = class(TForm)
Button1: TButton;
private
procedure MouseEnter(var msg:TMessage);message CM_MouseEnter;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
procedure TForm1.MouseEnter(var msg:TMessage);
begin
inherited;
showmessage('hello');
end;
我原本的意思是:当鼠标移到Button按纽时,显示'hello'信息,可现在
当鼠标一移到窗体时就显示'hello'信息,我该如何解决此问题?
另外:我想当鼠标移出Button按纽时就让信息消失,这又该如何做呢?

二:请看:
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
s:='hello';
writeln(s);
end;
编译能通过,但在运行时出错,我想问:writeln语句难道在Delphi中
不能用吗?谢谢。
 
应用HINT特性。或用MOUSEMOVE();
Writeln()是控制台命令,在WINDOWS下没有用过。要输出信息,可用ShowMessage();
 
当然要错了,你要移入button,干吗写给form1呀,不错才怪。
象这种情况,自己写一个button 的子类,处理 你需要的消息。
或者 用 OnMouseOver, 不过不如 CM_MOUSEENTER.

writeln 是原来pascal 下的输出语句,delphi中不能用于编windows 程序。
dos 可以。
 
2:

procedure TForm1.Button1Click(Sender: TObject);
var
F:TextFile;
begin
AssignFile(F,'C:/shenqw.Txt');
rewrite(F);
writeln(F,'Test,Test,Test');
closeFile(F);
end;
 
1:

procedure TForm1.Button1MouseMove(Sender: TObject
Shift: TShiftState
X,
Y: Integer);
const Captured:boolean=False;
var
pt:TPoint;
begin
if not Captured then
begin
SetCapture(Button1.Handle);
Button1.Caption:='Mouse in';
Captured:=True;
end else begin
pt.x:=x;
pt.y:=y;
if not PtInRect(Button1.ClientRect,pt) then
begin
ReleaseCapture;
Button1.Caption:='Mouse out';
Captured:=False;
end;
end;
end;
 
用hint就可以了,没有必要那么麻烦
 
type
MyButton = class(TButton)
private
procedure OnMouseEnter(var message: TMessage);
message CM_MOUSEENTER;
end;

TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
MyButton1: MyButton;
Button2: TButton;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
procedure MyButton.OnMouseEnter(var message: TMessage);
begin
ShowHint:=true;
Hint:='Hello';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
MyButton1:=MyButton.Create(Self);
MyButton1.Parent:=Form1;
end;

 
接受答案了.
 
后退
顶部