SetBkColor怎么不起作用?在线等候(50分)

  • 主题发起人 主题发起人 hthugm
  • 开始时间 开始时间
H

hthugm

Unregistered / Unconfirmed
GUEST, unregistred user!
SetBkColor(GetDC(edit1.handle),RGB(255,125,0))
结果执行这条语句后,EDIT的背景色没变为什么?
BUTTON能用这条语句吗?
 
if SetBkColor(GetDC(edit1.handle),RGB(255,125,0))=CLR_INVALID then
ShowMessage('SetBkColor failed');
没有报failed,但颜色未变。我想可能是Edit重画的缘故。
TEdit的背景色直接改属性就行了。
TButton改颜色,www.playccq.com上有个例子。
 
SetBkColor 要和 文本输出结合使用,表示从此开始输出的文本的背景色.
在 Tedit 要设置背景色,可如下:
Edit1.Color:=$0000FF
 
to zw84611:
我实际是要弄清SETBKCOLOR函数是怎么用的,Borland的COLOR属性是怎么实现的
我看源代码找不到。它应该也是调用API函数的。希望高手指教一下。
TO JSXJD:
SetBkColor 要和 文本输出结合使用,表示从此开始输出的文本的背景色.
你的意思是是执行上面语句后再在EDIT1中输入字符它就变色,是不是?可还是不行
希望继续指教。
 
jsxjd说得是对的。
Kingron (2001-4-10 15:03:12)
----------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure SetCaption(AButton: TButton;
ACaption1,ACaption2: string;color:TColor);
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.SetCaption(AButton: TButton;
ACaption1,
ACaption2: string;color:TColor);
var
dc:Hdc;
info:tagsize;
begin

AButton.Caption:='';
dc:=GetDC(AButton.Handle);
SetBKColor(dc,Color);
//SetBkMode(dc, TRANSPARENT);
GetTextExtentPoint32(dc,pchar(ACaption1),length(ACaption1),info);
Textout(dc,AButton.Width div 2-info.cx div 2,AButton.Height div 2-info.cy,pchar(ACaption1),length(ACaption1));
GetTextExtentPoint32(dc,pchar(ACaption2),length(ACaption2),info);
TextOut(dc,AButton.width div 2-info.cx div 2,AButton.Height div 2,pchar(ACaption2),length(ACaption2));
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
SetCaption(button1,'First Line','Second Line',clred);
end;

end.
 
多人接受答案了。
 
后退
顶部