在DELPHI编程时,会自动的弹出一个窗口,显示当前输入内容的有关信息。
本人在开发时,也需要做和上述一样的功能。功能已经大部分得到了实现,但是窗体显示时有个问题无法解决。那就是如何让那个提示窗口一直位于用户输入窗口之上,并且不会干扰用户窗口的输入工作。
我在程序中使用了这段代码:
DataList.ParentWindow := Self.Handle //DataList为提示窗口
可以完成我前述功能,但是可恶的是,因为指定了父窗口,程序运行时会在提示窗口上加个父窗口的标题栏(提示窗口在创建时就已经去掉了标题栏)。然后,我试着又加了一条SetWindowsLong API函数,去掉标题栏。现在,标题栏是没有了,可是在输入窗口每输入一个字符(我在change事件中写了查询代码),都会让用户窗口失去焦点,而提示窗口得到焦点。并且提示窗口的内容也不会随着用户窗口的输入内容而自动改变了。我认为最理想的解决方法,就是不让DataList有了用户父窗口的标题栏,但是不知道该如何去做,希望大家给个提示。或者如果大家有做过这个类似的功能,有更好的方法或建议。在线关注。。
本人在开发时,也需要做和上述一样的功能。功能已经大部分得到了实现,但是窗体显示时有个问题无法解决。那就是如何让那个提示窗口一直位于用户输入窗口之上,并且不会干扰用户窗口的输入工作。
我在程序中使用了这段代码:
DataList.ParentWindow := Self.Handle //DataList为提示窗口
可以完成我前述功能,但是可恶的是,因为指定了父窗口,程序运行时会在提示窗口上加个父窗口的标题栏(提示窗口在创建时就已经去掉了标题栏)。然后,我试着又加了一条SetWindowsLong API函数,去掉标题栏。现在,标题栏是没有了,可是在输入窗口每输入一个字符(我在change事件中写了查询代码),都会让用户窗口失去焦点,而提示窗口得到焦点。并且提示窗口的内容也不会随着用户窗口的输入内容而自动改变了。我认为最理想的解决方法,就是不让DataList有了用户父窗口的标题栏,但是不知道该如何去做,希望大家给个提示。或者如果大家有做过这个类似的功能,有更好的方法或建议。在线关注。。
当我将提示窗口再次SetWindowLong后,在输入窗口中,每次输入一个字符时,用户窗口均会失去焦点,而焦点已经跳到提示窗口的第一记录上,如果想继续输入内容,则不得不用鼠标将输入窗口激活。
大家看看DELPHI写代码时的那个提示窗口,那个窗口不会干扰用户的输入的,并且,如果那个提示是用窗口来实现的话,居然代码窗口和提示窗口均有焦点,并且互不干扰。如果我不用SetWindowsLong,就可以得到这个效果。但是如果我不用SetWindowLong,提示窗口那个标题栏又去不掉,唉,真是郁闷。
var
str: string;
begin
// SendKey(edit2.Handle, Key);
if key=#13 then //enter
key:=#0;
if key=#8 then //backspace
begin
form2.Caption := copy(form2.caption,0,length(form2.Caption)-1);
end
else
form2.Caption := form2.Caption+key;end;form2.formstyle := fsStayontop
str: string;
begin
// SendKey(edit2.Handle, Key);
if key=#13 then
key:=#0;
if key=#8 then
begin
form2.Memo1.Text := copy(form2.Memo1.Text,0,length(form2.Memo1.Text)-1);
end
else
form2.Memo1.Text := form2.Memo1.Text+key;和上面的没有区别
form1 onshow
form2.show;