首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

问两个简单的有关问题.

2012-03-02 
问两个简单的问题........一.OpenDialog和SaveDialog如果在打开和保存时单击的是取消按钮...要如何让程序

问两个简单的问题........
一   .OpenDialog   和   SaveDialog   如果在打开和保存时单击的是取消按钮...要如何让程序放弃以后的所有操作?好像可以用异常可不会写....
二.       ShellExecute(Handle,   nil,PChar(ChangeFileExt(TextFilePath, '.bat ')),   nil,   nil,   SW_SHOW);
      sleep(5000);     //若不延时则无法进行备份
      deletefile(ChangeFileExt(TextFilePath, '.bat '));
      Application.MessageBox( '操作成功 ', '系统提示 ',MB_OK+MB_ICONINFORMATION);

      这边是调用一个BAT文件执行InterBase   数据库的备份和还原的操作..由于数据库大小不一致,在执行CMD命令时需要的时间不确定,要怎么判断CMD已经执行完毕?否则会还在执行备份或还原操作时程序却提示操作已经完成.....
谢谢各位

[解决办法]
OpenDialog或SaveDialog的Execute方法会返回一个Boolean值, 这个值是False表示按了取消按钮
[解决办法]
1)SaveDialog1.Execute 函数有返回值的,True就执行,你可以判断

if SaveDialog1.Execute then
.....


[解决办法]
1、if not OpenDialog1.Execute then Exit;

2、
var
vProcessInfo: TProcessInformation;
vStartUpInfo: TStartupInfo;
begin
FillChar(vStartUpInfo, SizeOf(vStartUpInfo), #0);
vStartUpInfo.dwFlags := STARTF_USESHOWWINDOW;
vStartUpInfo.wShowWindow := SW_HIDE;
if CreateProcess(nil, PChar(ChangeFileExt(TextFilePath, '.bat ')), nil, nil,
False, IDLE_PRIORITY_CLASS, nil, nil, vStartUpInfo,
vProcessInfo) then
begin
WaitForSingleObject(vProcessInfo.hProcess, INFINITE);
CloseHandle(vProcessInfo.hThread);
CloseHandle(vProcessInfo.hProcess);
end;
end;

热点排行