有关HINT的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 pangzhenguang
  • 开始时间 开始时间
P

pangzhenguang

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

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

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

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
Form2:=TForm2.Create(Self);
Windows.SetParent(Form2.Handle,self.Handle);
Form2.Show;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form2.Free;
end;

end.





unit Unit2;

interface

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

type
TForm2 = class(TForm)
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

end.

//******************************************************
为什么我的第二个窗体的Edit1的Hint不能显示出来,把Form2的Parent设成Form1,为何Form2失去焦点时Form2上的控件的HINT就可以显示出来,Form2得到焦点时Form2上的控件的HINT就显示不出来
//******************************************************
 
unit Unit1;

interface

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

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

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
Form2:=TForm2.Create(Self);
Windows.SetParent(Form2.Handle,self.Handle);
Form2.Show;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form2.Free;
end;

end.





unit Unit2;

interface

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

type
TForm2 = class(TForm)
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

end.

//******************************************************
为什么我的第二个窗体的Edit1的Hint不能显示出来,把Form2的Parent设成Form1,为何Form2失去焦点时Form2上的控件的HINT就可以显示出来,Form2得到焦点时Form2上的控件的HINT就显示不出来
//******************************************************
 
请大家帮帮忙
 
http://www.delphibbs.com/keylife/iblog_show.asp?xid=2438
也许对你有用
 
用这个试试吧:

Form1.Parent := Self.Panel1;
 
谢谢hongxing_dl的热心,正在看
 
Hint的问题(未解决),还是没有解决的问题
 
我觉得实现起来很困难。
1、操作系统要求当前只能有一个真正意义上Active窗口。
2、Form1和Form2不可能同时激活。
3、Delphi程序有一个毛病是:只有激活窗口下的控件的Hint才能被激活显示。
4、ShowHint属性的强迫继承性。

当Form1作为Form2的父时,就形成了一个非常矛盾的局面:
FORM2激活时,作为父的FORM1必然成了不激活窗口(尽管有方法可以使Form1标题栏看上去也像是处于激活状态),这样FORM2下的子控件都变成不显示HINT了;如果FORM1激活,但FORM2又不激活了,虽然这样FORM2内的控件的Hint能显示出来,但EDIT类的控件却不能得到焦点,如果EDit控件得到了焦点,FORM1又变成不激活了。。。。。
 
TO YuZi 果真没有办法了吗?
 
我很菜的, 请高手帮你吧。。。。
1、Form2和Form1是MDIChild/MDIForm的关系就不会现这种情况了。
2、自己写Hint窗口控件,修改或不要继承THintWindow类,像QQ一样窗口没被激活,只要鼠标停留也能显示Hint;
 
showModal试试
 
我都说了,你还不信, 真是笨的够可以的啊

你以为我骗你的啊?
 
YuZi,分析的很有道理,可惜不对啊, 试试我的方法吧
 
ShowHint設置沒有
 
lich 大侠果然说得没错!
加在Panel,Form2的Edit能得到焦点,但Form2却处于不激活状态,这样Form1永远处于激活状态,其内的Hint就可以显示了,真有些想不通这是为什么。。。

顺便借贴问一下lich, SpeedButton建在偶数层的Panel里,字体会变成系统某一粗体(设置无效)。而在奇数层里却不会。也就是说在Panel1里再放一个Panel2,然后在Panel2里放一个SpeedButton,这个SpeedButton设置Font属性无效,即便ParentFont设置为True或False都一样,SpeedButton一到运行期就不理会我们的设置了。而如果在Panel2里再放一个Panel3,然后再放一个SpeedButton就不会发生这种情况了,不知道为什么呀?

谢谢!
 
一个Form嵌入其它窗体后,本身是作为一个TWinControl的,
你不要再把它看作是一个Form了,倒可以看作是一个Frame

你问的第二个问题,我并没有发现过,我试了一下,也没有出现,
可能是你的操作系统的问题,你换台机子试一下看看

也可能是你使用的什么控件更改了一些对象的字体属性了
你可以跟踪一下,看是什么时候,那个过程导致字体变化了
 
谢谢lich的热心,但这样FORM2得不到焦点
 
谢谢lich!
忘了说了,我有加了TXPManifest 控件,没加不会,
可以肯定问题就出在这个XP风格控件上,你可以试试,但不知道怎么解决?

昨天给自己的问题忙晕头了,lich的的确可以,但要这样实现:
Form2 := TForm2.Create(Self);
Form2.Parent := Self.Panel1;
Form2.Show;
Form2.Edit1.SetFocus

Edit1可以得到焦点,但失去焦点后,就无法正常得到了,可以在Edit1的OnClick中加入
Edit1.SetFocus;
间接得到;

;
 
老大,又在胡说了,

我的form2很好啊,可以正常得到焦点,tab跳转顺序都正常
 
是指EDIT,BUTTON当然是可以直接点的,
新发现:
EDIT点左键不能得到焦点,但奇怪点右键却可以,真是莫名其妙?

ps:我向来感觉自己做事中规中矩,怎么会胡说 呢?
 
后退
顶部