請各位delphi前輩將如下這段BCB防重開同一窗口的代碼轉成delphi,我試了好久都不成功,對delphi認識太少,多謝了。 Delphi / Windows SDK/API http://www.delphi2007.net/DelphiDB/html/delphi_20061218170853237.html
//防重開窗口 bool OpenForm(TForm *WForm) { int i; bool FormExist; if (WForm==NULL) return false; FormExist=false; for (i=0;i<Screen->FormCount;i++) if (Screen->Forms[i]->ClassType()==WForm->ClassType()) { FormExist=true; break; } if (FormExist==false) return FormExist; if (WForm->WindowState==wsMinimized) ShowWindow(WForm->Handle,SW_SHOWNA); if (!WForm->Visible) WForm->Visible=true; WForm->BringToFront() ; WForm->SetFocus(); return true; }
function OpenForm(WForm: TForm): Boolean; var i: Integer; begin Result := False; if WForm = nil then Exit; for i := 0 to Screen.FormCount - 1 do if Screen.Forms[i].ClassType = WForm.ClassType then begin Result := True; Break; end; if not Result then Exit; if WForm.WindowState = wsMinimized then ShowWindow(WForm.Handle, SW_SHOWNA); if not WForm.Visible then WForm.Visible := True; WForm.BringToFront; WForm.SetFocus; Result := True; end;
非常感謝,我把這段代碼寫在 private 下,編譯不通過,為什么???
非常感謝,我把這段代碼寫在 private 下,編譯不通過,為什么??? ================================================================================= 要把函数加在TForm1的private,必须改上面代码为 function TForm1.OpenForm(WForm: TForm): Boolean;
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } function OpenForm(WForm: TForm): Boolean; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 } function TForm1.OpenForm(WForm: TForm): Boolean; var i: Integer; begin Result := False; if WForm = nil then Exit; for i := 0 to Screen.FormCount - 1 do if Screen.Forms[i].ClassType = WForm.ClassType then begin Result := True; Break; end; if not Result then Exit; if WForm.WindowState = wsMinimized then ShowWindow(WForm.Handle, SW_SHOWNA); if not WForm.Visible then WForm.Visible := True; WForm.BringToFront; WForm.SetFocus; Result := True; end; end.
這種情況在函數在delphi里聲明在 private 、public 或 直接和 procedure 寫一起有什么區別??
private私有的,只能类自己或者同单元的其他类使用 public公有的,都可。。。 这种函数直接和procedure写一起,大家都可用,和public的区别在于不需要通过类实例访问。
建议你买或者网上当一本入门书看看。
多謝,結貼。 分有點少了,各位大哥笑納。
|
请发表评论