Application.MessageBox('11','22',MB_OK );???(50分)

  • 主题发起人 主题发起人 muyixin
  • 开始时间 开始时间
M

muyixin

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

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

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

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.MessageBox('11','22',MB_OK );//////////////////////////
end;

end.

我想弄不明白
messagebox和messagedlg有什么区别 为什么messagebox前要加Application. 而messagedlg却不用,application什么意思,是否我所有用messagedlg写的弹出的对话框都可以用application.messagebox来代替??
 
Application就是你的主程序,这个建议你去看一下有关Pascal语法的书籍
 
application.messagebox实际是调用的winapi的messagebox
前面加application是因为此函数是application的成员
你也可以直接调用API,messagebox(handle,'text','caption',MB_OK)
因为messagebox API是系统的东西,所以显示的是本地化的,即中文操作系统上会显示"确实",英文系统上会显示"OK",而messagedlg是delphi的东西,如果你没有把它的资源汉化,它只会显示英文的"OK"
 
是否我所有用messagedlg写的弹出的对话框都可以用application.messagebox来代替??
因为我也发现 我做的是中文版的 弹出来的 总是 ok cancel 等

另外我用Windows.messagebox(handle,'11','22',MB_OK); 好象 也可以 windows.messagebox和application.messagebox的又有什么区别?
 
羊说的不错,呵呵,习惯用MessageBox,中文显示看起来比较爽。
 
可以替代,没有问题。
例:Message(handle, PChar('内容'), PChar('标题'), MB_OK or MB_ICONINFORMATION);
 
可以替换!
APPLICATION这个对象帮你封装了api中的messagebox,API的MESSAGEBOX中的HANDLE等于你的程序的HANDLE
 
就是说messagebox(handle,'11','22',MB_OK);和
application.messagebox(,'11','22',MB_OK); 是相同的;

那我在点击按钮事件中写messagebox(handle,'11','22',MB_OK); handle就是这个按钮
我在点击form事件中写messagebox(handle,'11','22',MB_OK); handle就是这个form
是这样么?
 
羊说的不错
补充:
Tapplication是一个全局的类
Application.MessageBox('11','22',MB_OK );
等同于MessageBox(Application.handle,'11','22',MB_OK );
 
有两种写法
一种 Application.messagebox()这个只有三个参数
另一种是MessageBox()这个有四个参数,它是winapi,应用这个时,要uses windows
至于messagedlg,它非winapi
 
最后总结
其实messageDlg和messageBox 并不能完全代替
比如
var
s:String
begin
S:='11111111111111';
MessageDlg(S,mtConfirmation,[mbYes,mbNo],0);
end; 是可以运行的
但是Application.MessageBox(s,'22',MB_OK );////////////////////////// 是会出错的
在帮助文件中 我看其第一个参数是widestring 但是在实际编程 我按ctrl+space 看到参数的类型是指针类型的
所以如果参数中没有字符表达式 是可以代替的 但是如果有表达式的化 就不可以了
可以这样解决
Application.MessageBox(@s,'22',MB_OK );

如果有说的不对的地方 请大侠指正
 
已經講的很清楚了
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
673
import
I
I
回复
0
查看
686
import
I
I
回复
0
查看
740
import
I
I
回复
0
查看
763
import
I
S
回复
0
查看
830
SUNSTONE的Delphi笔记
S
后退
顶部