呼叫表單又一問... |
尚未結案
|
nick6562
一般會員 發表:26 回覆:19 積分:9 註冊:2004-07-15 發送簡訊給我 |
請教各位高手: 由使用MainMenu下拉式選擇表單樣式,我已可以順利呼叫第一項表單,但若我再進行選擇第二項表單,會有錯誤發生,以下為我的程式碼,請高手不吝幫忙,感謝! unit Main; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus; type
TCommon = class(TForm)
MainMenu1: TMainMenu;
F1: TMenuItem;
N1: TMenuItem;
AltP1: TMenuItem;
AltS1: TMenuItem;
N2: TMenuItem;
AltI1: TMenuItem;
AltO1: TMenuItem;
C1: TMenuItem;
H1: TMenuItem;
H2: TMenuItem;
AltC1: TMenuItem;
procedure N1Click(Sender: TObject);
procedure AltS1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Common: TCommon;
implementation
uses
emp; {$R *.dfm} procedure TCommon.N1Click(Sender: TObject);
var
employee : Temployee;
begin
try
employee:=Temployee.Create(Self);
employee.Show;
finally
employee.Free;
end;
end; procedure TCommon.AltS1Click(Sender: TObject);
var
Source : TResource;
begin
try
Source:=TSource end;
end; end. 出現錯誤訊息如下: [Error] Main.pas(59): Undeclared identifier: 'free'
[Fatal Error] Project1.dpr(7): Could not compile used unit 'Main.pas'
[Pascal Error] Main.pas(1): Unable to invoke Code Completion due to errors in source code 我第二項表單Form的Name為Source,則Unit為Resource
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
nick6562
一般會員 發表:26 回覆:19 積分:9 註冊:2004-07-15 發送簡訊給我 |
修改後的訊息如下: unit Main; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus; type
TCommon = class(TForm)
MainMenu1: TMainMenu;
F1: TMenuItem;
N1: TMenuItem;
AltP1: TMenuItem;
AltS1: TMenuItem;
N2: TMenuItem;
AltI1: TMenuItem;
AltO1: TMenuItem;
C1: TMenuItem;
H1: TMenuItem;
H2: TMenuItem;
AltC1: TMenuItem;
procedure N1Click(Sender: TObject);
procedure AltS1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Common: TCommon;
implementation
uses
emp; {$R *.dfm} procedure TCommon.N1Click(Sender: TObject);
var
employee : Temployee;
begin
try
employee:=Temployee.Create(Self);
employee.Show;
finally
employee.Free;
end;
end; procedure TCommon.AltS1Click(Sender: TObject);
var
Source : TSource;
begin
try
Source:=TSource.; end;
end; end. 錯誤訊息: [Fatal Error] Main.pas(35): File not found: 'emp.dcu'
[Fatal Error] Main.pas(35): File not found: 'emp.dcu'
[Pascal Error] Main.pas(1): Unable to invoke Code Completion due to errors in source code 謝謝您!
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
emp.pas 為 emp.dcu 這些檔案所在路徑為何?
如果不是跟 Project 在同一目錄下的話
那得 emp.pas / emp.dcu 檔案所在路徑加入 Library Path 中
加入方法: Delphi 選單 -> Tools -> Environment Options
選 Library Tabsheet 中的 Library Path 選項
另一方法是將 emp.pas 加入 Project 中
加入方法: Delphi 選單 -> Project -> Add To Project --
向 KTop 的弟兄們致敬!
|
nick6562
一般會員 發表:26 回覆:19 積分:9 註冊:2004-07-15 發送簡訊給我 |
引言: emp.pas 為 emp.dcu 這些檔案所在路徑為何? 如果不是跟 Project 在同一目錄下的話 那得 emp.pas / emp.dcu 檔案所在路徑加入 Library Path 中 加入方法: Delphi 選單 -> Tools -> Environment Options 選 Library Tabsheet 中的 Library Path 選項 另一方法是將 emp.pas 加入 Project 中 加入方法: Delphi 選單 -> Project -> Add To Project -- 向 KTop 的弟兄們致敬!您好; 我的emp.pas及emp.dcu所存方的位置為D:\test下,而我依照您的方式將該目錄加入至Tools -> Evironment Options -> Library -> Library Path下,仍出現以下訊息: [Fatal Error] Main.pas(35): File not found: 'emp.dcu' [Fatal Error] Main.pas(35): File not found: 'emp.dcu' [Pascal Error] Main.pas(1): Unable to invoke Code Completion due to errors in source code 再次謝謝您! |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
nick6562
一般會員 發表:26 回覆:19 積分:9 註冊:2004-07-15 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
看您描述, 這個問題小弟百思不得其解, 不曉得為什麼?
您可將 Project 上傳至會員求助區
unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus; type TCommon = class(TForm) MainMenu1: TMainMenu; F1: TMenuItem; N1: TMenuItem; AltP1: TMenuItem; AltS1: TMenuItem; N2: TMenuItem; AltI1: TMenuItem; AltO1: TMenuItem; C1: TMenuItem; H1: TMenuItem; H2: TMenuItem; AltC1: TMenuItem; procedure N1Click(Sender: TObject); procedure AltS1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Common: TCommon; implementation uses emp, Resource; // 這裏加上 Resource 這個 Unit {$R *.dfm} procedure TCommon.N1Click(Sender: TObject); var employee : Temployee; 這個變數可不用宣告, 在 emp 這個 Unit 應該有這個變數名稱了 begin employee := Temployee.Create(Self); // 這行放在 try 的外面 try employee.Show; finally employee.Free; // 這行很奇怪, employee 這個 Form 才 Show 就又把它 Free 了?employee.Show; 應該改成 employee.ShowModal 的方式吧 end; end; procedure TCommon.AltS1Click(Sender: TObject); var Source : TSource; begin try Source:=TSource.Create(nil); // finally Source.Free; Source := Nil; end; end; end.-- 向 KTop 的弟兄們致敬! |
nick6562
一般會員 發表:26 回覆:19 積分:9 註冊:2004-07-15 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |