DELPHI TEXTOUT输出问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 19:07:14
如果窗体上有很多button按钮

输出的文字会被按钮挡住 如何能够让输出的文字显示在按钮上面

同时不影响按钮使用

或者用ShowHint的话 如何能控制hint文本的颜色 不是整体 而是每行的颜色都不同
经测试确实为系统问题,在XP系统上测试无闪烁问题,我用的是64位VISTA系统,运行同样的程序,会先看到原窗体,接着才会透明,尽管只是一瞬间。但也很难看了

另外做一个透明窗体,在窗体上显示文字,点击窗体时,吧鼠标事件模拟到下面的窗体中。

测试了一下,比想象中简单,效果没问题,建立一个窗体2,里面放LABEL以显示文字,窗体几个属性改成下面这样的:
Borderstyle:=bsNone;
BorderWidth:=0;
Color:=clGreen;
FormStyle:=fsStayOnTop;
TransparentColor:=True;
TransparentColorValue:=clGreen;
在使用窗体1的时候,就用Form2.show,把它显示出来覆盖在上面就搞掂了。由于是透明窗,完全不会影响窗体1的操作。

闪动是因为焦点转移到FORM2去了,可以用以下方法把焦点转移回来
在form1里面定义一个变量
b:boolean;
用于纪录form2是否已经显示。然后:
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not b then
begin
SendMessage(Handle,WM_SETREDRAW,Ord(false),0);//不可以刷新
b:=true;
Form2.Show;
Form1.Show;
SendMessage(Handle,WM_SETREDRAW,Ord(true),0);//可以刷新
RedrawWindow(Handle, nil, 0, RDW_INVALIDATE + RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);
end;
end;
测试效果正常。

显示原窗?我这里测试没有这种现象,你传的程序由于缺少TXDRAW控件文件,也不能运行,会不会是因为你的程序里面有什么特殊情况,或者跟你所使用的3D控件有关?

我下