精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>图形界面和窗体>>窗体控制相关通用函数

主题:窗体控制相关通用函数
发信人: plenilune88(望月)
整理人: soaringbird(2002-02-02 09:05:27), 站内信件
procedure nextTab(Form:TForm);
begin  //跳到下一个输入焦点
  Form.Perform(WM_NEXTDLGCTL,0,0);
end;

procedure dragWin(Form:TForm);
begin  //拖动窗体(用于无标题栏窗体)
  ReleaseCapture;
  Form.Perform(WM_SYSCOMMAND,$f012,0);
end;

function existsForm(FormClass:TFormClass):boolean;
var i:integer;
begin  //判断程序窗体是否存在
  Result:=true;
  for i:=0 to Screen.FormCount-1 do
    if Screen.Forms[i] is FormClass then exit;
  Result:=false;
end;

function existsWin(Form,Caption:string):boolean;
begin  //判断Window窗体是否存在
  if FindWindow(PChar(Form),PChar(Caption))=0
     then Result:=false
     else Result:=true;
end;

procedure focusWin(Form:TForm);
begin  //使窗体获得焦点
  if Form.WindowState = wsMinimized then Form.WindowState:=wsNormal;
  Form.show;
  Form.BringToFront;
end;

function existsMDIChildWin(MainForm:TForm;FormClass:TFormClass):boolean;
var i:integer;
begin  //判断MDI子窗体是否存在
  Result:=True;
  for I:=0 to MainForm.MDIChildCount-1 do
    if MainForm.MDIChildren[I] is FormClass then exit;
  Result:=false;
end;

procedure focusMDIChildWin(MainForm,Form:TForm);
begin  //使MDI子窗体获得焦点
  SendMessage(MainForm.ClientHandle,WM_MDIACTIVATE,Form.Handle,0);
  if Form.WindowState = wsMinimized then Form.WindowState:=wsNormal;
end;

function CloseNowMDIChildWin(Form:TForm):boolean;
begin  //关闭当前MDI子窗体
  Result:=true;
  if Form.MDIChildCount>0
    then
      Form.ActiveMDIChild.Close
    else
      Result:=false;  
end;

function CloseAllMDIChildWin(Form:TForm):boolean;
var i:integer;
begin  //关闭所有MDI子窗体
  Result:=true;
  try
    for i:=0 to Form.MDIChildCount-1 do
      Form.MDIChildren[i].Close;
  except
    Result:=false;
  end;     
end;

function FindAndShowWinForm(FormClassName,FormCaption:string):boolean;
var PreWin:HWND;
begin  //查找并显示Windows中已存在窗体
  PreWin:=FindWindow(PChar(FormClassName),PChar(FormCaption));
  if PreWin<>0 then
    begin
      SetForeGroundWindow(PreWin);
      Result:=true;
    end
  else
    Result:=false;
end;

procedure ExploerWeb(handle:HWND;URL:string);
var Returnvalue : integer;
begin //浏览Web
  ReturnValue := ShellExecute(handle, 'open', PChar(URL), nil, nil, SW_SHOWNORMAL);
  if ReturnValue<=32 then
case Returnvalue of
0 : Raise Exception.Create('内存不足!');
ERROR_FILE_NOT_FOUND: Raise Exception.Create('没有找到文件!');
ERROR_PATH_NOT_FOUND: Raise Exception.Create('路径不对!');
ERROR_BAD_FORMAT : Raise Exception.Create('文件格式不对!');
else
Raise Exception.Create('错误:'+IntToStr(Returnvalue)+'!');
end;
end;

function ShowSingleMDIForm(MainForm,Form:TForm;FormClass:TFormClass):TForm;
begin //显示单一MDI子窗体
if existsMDIChildWin(MainForm as TForm,FormClass) then
focusMDIChildWin(MainForm as TForm,Form)
else begin
Form:=FormClass.Create(MainForm);
try
Form.Show;
except
FreeAndNil(Form);
end;
end;
Result:=Form;
end;

procedure ShowAllChildForm(Form:TForm);
var i:integer;
begin //显示当前窗体的所有子窗体
for i:=0 to Form.ComponentCount-1 do
if Form.Components[i].ClassParent=TForm then
(Form.Components[i] as TForm).Show;
end;

procedure HideAllChildForm(Form:TForm);
var i:integer;
begin //隐藏当前窗体的所有子窗体
for i:=0 to Form.ComponentCount-1 do
if Form.Components[i].ClassParent=TForm then
(Form.Components[i] as TForm).Hide;
end;

//中大方略版权所有
//www.cnflag.net


----
.-'''''-.
.' `.
: :
: :
: _/| :
: =/_/ :
`._/ | .'
( / ,|...-'
\_/^\/||__
_/~ `""~`"` \_
__/ -'/ `-._ `\_\__
/ /-'` `\ \ \-.\

孤意望月 血泪无痕

http://plenilune.top263.net
http://www.cnflag.net  

[关闭][返回]