我有一个窗体是透明的,上面有一个LABEL,BUTTON,当我按BUTTON时,LABEL中的内容改变,但我发现结果却有所不同,当要显示的字节少于原来的字节时只替换前面的几个.
程序如下:
procedure TForm1.createparams(var params:tcreateparams);
begin
inherited createparams(params);
params.exstyle:=WS_EX_TRANSPARENT;
end;procedure TForm1.FormCreate(Sender: TObject);begin
//透明的窗体
Form1.brush.style:=bsclear;
Form1.borderstyle:=bsnone;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
h : HDC;
begin
Label1.Caption :='dd';
h :=getwindowdc(HANDLE);
PostMessage(HANDLE,WM_ERASEBKGND,integer(h),0);
end;LABEL中原内容是123456789
此时显示的是dd34567890但实际他是DD,
这是为什么????是窗体没有刷新吗???
程序如下:
procedure TForm1.createparams(var params:tcreateparams);
begin
inherited createparams(params);
params.exstyle:=WS_EX_TRANSPARENT;
end;procedure TForm1.FormCreate(Sender: TObject);begin
//透明的窗体
Form1.brush.style:=bsclear;
Form1.borderstyle:=bsnone;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
h : HDC;
begin
Label1.Caption :='dd';
h :=getwindowdc(HANDLE);
PostMessage(HANDLE,WM_ERASEBKGND,integer(h),0);
end;LABEL中原内容是123456789
此时显示的是dd34567890但实际他是DD,
这是为什么????是窗体没有刷新吗???
解决方案 »
- 在c/s客户端取服务器上音频文件播放的问题,请有这方面设计经验的兄弟指点一下!!(项目中!)
- 关于系统服务
- VB的代码谁会写成DELPHI的DLL(源代码)
- 请问如何设置 BDE 连接 Microsoft Visual FoxPro 6.0 的.dbf 文件
- 如何提高查询速度?
- 我用ADO连接数据库,编以后的程序在win98下提示非法操作,何故?
- 再求解Socket图片传送?
- 有关delphi中进制转换和非10进制使用的问题,30分哦~
- 本人正在开发一套音频控件,有没有成套的音频控件,像mmtools
- BatchMove问题,请高手指教!
- 关闭主窗口?
- 555~不活了!怎么对大学生也要求那么苛刻啊。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure CreateParams(var Params:TCreateParams);override;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Exstyle:=Params.ExStyle or WS_EX_TRANSPARENT;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.brush.style:=bsClear;
Form1.borderstyle:=bsNone;
end;procedure TForm1.Button1Click(Sender: TObject);
var
h : HDC;
begin
Label1.Caption :='dd';
h :=Label1.Canvas.Handle;
SendMessage(HANDLE ,WM_ERASEBKGND, Integer(H), 0);
end;end.
搞定
这样做方便啊!
如果设ALPHABLEND,ALPHABLENDVALUE那窗体的都看不见了
简单的办法:
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption := 'dd';
form1.hide;
form1.Show;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
h : HDC;
begin
Label1.Caption :='dd';
Self.RecreateWnd;
end;有时第一次按BUTTON可以显示正常,有时要按几次,这是为什么???
请各位指教
按理他是一个重画的过程,但我在赋值后发消息重画但却不行,这又是为什么?firetoucher(风焱),不行我要这个窗体不能HIDE,不能最大最小化,
procedure TForm1.createparams(var params:tcreateparams);
begin
inherited createparams(params);
params.exstyle:=WS_EX_TRANSPARENT;
end;
是做什么的procedure TForm1.Button1Click(Sender: TObject);
var
h : HDC;
begin
Label1.Caption :='dd';
h :=getwindowdc(HANDLE); //得到的是label的句柄吗??怎么会
PostMessage(HANDLE,WM_ERASEBKGND,integer(h),0);
end;单独试了一下上面的代码,label改为dd了..
设置FORM的ALPHABLEND和ALPHABLENDVALUE来达到透明的效果.
怎么做的??
改变label的CAPTION后
在98下怎么设都可以自动的,正常根据字的多少来调整大小。
但2K下,老比预期的要小一些,有几个字显示不出来。
jun_01((张军)(<--这人是个傻瓜!))
将autosize设成false
{ 在窗体中添加 button,然后加入以下代码:} procedure TForm1.FormCreate(Sender: TObject);
var
FullRgn, ClientRgn, ButtonRgn: THandle;
Margin, X, Y: Integer;
begin
Margin := (Width - ClientWidth) div 2;
FullRgn := CreateRectRgn(0, 0, Width, Height);
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight);
CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF);
X := X + Button1.Left;
Y := Y + Button1.Top;
ButtonRgn := CreateRectRgn(X, Y, X + Button1.Width, Y + Button1.Height);
CombineRgn(FullRgn, FullRgn, ButtonRgn, RGN_OR);
SetWindowRgn(Handle, FullRgn, True);
end;