請各位delphi前輩將如下這段BCB防重開同一窗口的代碼轉成delphi,我試了好久都不成功,對delphi認識太少,多謝了。 Delphi / Windows SDK/APIhttp://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的区别在于不需要通过类实例访问。
建议你买或者网上当一本入门书看看。
多謝,結貼。
分有點少了,各位大哥笑納。