Delphi提示信息框的颜色如何改变?如:MessageBox,他的默认颜色是灰色,如何能改了? ( 积分: 300 )

  • 主题发起人 主题发起人 delphi__friend
  • 开始时间 开始时间
D

delphi__friend

Unregistered / Unconfirmed
GUEST, unregistred user!
自己定制一个通用信息提示框,设一个颜色参数不就可以了?
 
自己做MESSAGEBOX!
 
用第三方控件SUIPack可以试验下,背景样式通过改变UIStyle来改变.MessageDlg应该也行的,我找了半天,没找到那个类,就没做,
SUIPack你给我邮箱,我可以发给你,
function ShowMsg(const AValue:String;Buttons:byte=1):TModalResult;
begin
with TsuiMessageDialog.Create(nil) do
begin
UIStyle:=BlueGlass;
Font.Name:='宋体';
Font.Size:=9;
CaptionFont.Name:='宋体';
CaptionFont.Size:=9;
Button1Caption:='确定';
Button1ModalResult:= mrOK;
Button2Caption:='取消';
Button2ModalResult:= mrCancel;
ButtonCount:=Buttons;
if Buttons=2 then
begin
Icontype:=suiHelp;
Caption :='询问';
end
else
begin
Icontype:=suiInformation;
Caption :='提示';
end;
Text:= AValue;
Beep;
Result:=ShowModal;
end;
end;
 
To:Q_Sand
谢谢你,但是我不想用第三方控件来实现,因为第三方控件大多数不开源,而且也不稳定.
所以不打算使用.
 
自己做个窗体 在写个调用函数
 
通过处理WM_CTLCOLORSTATIC消息,必需注意以下几点:

1、 MFC没有使用WM_CTLCOLORSTATIC消息,而是使用WM_CTLCOLOR消息;

2、 必须返回一个背景刷子,即使你不改变背景颜色;如果STATIC的背景色要与父窗口背景色相同,可以用GetStockObject(NULL_BRUSH) 返回空画刷;

4、 不要每次处理都创建一个刷子,应该用一个成员变量来保存刷子(全局变量也可),并要释放它,如果是由GetStockObject返回的刷子,就不用那么麻烦;
 
http://www.itwenku.com/program/1/64034.htm 还有这遍文章写的比较清楚,对你的问题有比较好的解答
 
帮你顶,我要混分
 
将窗口类当过程使用~~自己定做提示框.要做成什么样都可以~~

procedure IShowmessage(msg :string ) ;


implementation

{$R *.dfm}

procedure IShowmessage(msg :string ) ;
var
Frm : TForm2 ;
begin
Frm := TForm2.Create(nil);
try
Frm.Label1.Caption := msg ;
Frm.ShowModal ;
finally
Frm.Free ;
end;
end;
 
打开Dialog的单元文件,找到他创建窗体的程序,修改下,加个颜色就好了,下面是测试的
代码。
unit Unit1;

interface

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

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

var
Form1: TForm1;

implementation

{$R *.dfm}

function MyMessage(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
const HelpFileName: string): Integer;
begin
with CreateMessageDialog(Msg, DlgType, Buttons) do
try
Color := ClRed; //修改颜色.
HelpContext := HelpCtx;
HelpFile := HelpFileName;
if X >= 0 then Left := X;
if Y >= 0 then Top := Y;
if (Y < 0) and (X < 0) then Position := poScreenCenter;
Result := ShowModal;
finally
Free;
end;
end;

function MyMsg(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
begin
Result := MyMessage(Msg, DlgType, Buttons, HelpCtx, -1, -1, '');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
MyMsg('11111111',mtError,[mbOk],0);
end;

end.
 
这样就看见窗体是红色的了,给分。
 
各位兄弟,我现在程序已经做完了,所有的提示用的都是MessageBox,而美化界面的时候发现MessageBox没办法处理了,所以出现了现在这个问题
 
找个SKIN控件美化.................
 
我着有例子不知道符合不符合!
邮箱?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3767839
看我的贴吧,用SHOWHINT代替你的MessageBox
效果不好
 
最好,就下个VCLSKin,使用后,
我用的是4.11
使用后,提示信息框的颜色
一起改变了
 

Similar threads

后退
顶部