同一 AP 中重覆 Create 一個 Form 發生的問題 |
答題得分者是:william
|
crlin
一般會員 發表:47 回覆:57 積分:20 註冊:2002-07-23 發送簡訊給我 |
|||
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
引言:請問如何讓同一個 Form 可以重覆 Create 而不會出現 error 呢 ?Change the "Name" of the form after its creation to a unique name. BTW, a form should be able to be created as many times as you want. Maybe you are using TFrame? Frame should be unique in the application. |
||
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 在程式中若 user 忘了己開啓過 Form1 且尚未 Close Form1 的情況下又 Create 一次 Form1 則會出現 Name not unique in this context 請問如何讓同一個 Form 可以重覆 Create 而不會出現 error 呢 ?試試Application.CreateForm。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
crlin
一般會員 發表:47 回覆:57 積分:20 註冊:2002-07-23 發送簡訊給我 |
我試過了, 用 Application.CreateForm(TForm1, Form1);
結果還是一樣 我原來的寫法是直接呼叫 Form1:=TForm1.Create(Application);
Form1.Show; 若要利用
begin
Hwnd := FindWindow(nil, PCHAR(''ABC''));
if Hwnd = 0 then
begin
WinExec(PChar(SEND), 1);
end
else
begin
BringWindowToTop(Hwnd);
end;
end; 這個方式, 是否該再加入
Form1:=TForm1.Create(Application);
Form1.Show;
這兩行呢 ?
要加在哪兒呢 ? thanks !
|
||
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
假設你有Form1,Form2...
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
// Application.CreateForm(TForm2, Form2);<--這一行要拿掉
Application.Run;
end.
試了一下應該改成這樣
procedure TForm1.Button1Click(Sender: TObject);
var
Hwnd: THandle;
begin
Hwnd :=FindWindow(nil, PCHAR('ABC'));
if Form2 = nil then
begin
Application.CreateForm(TForm2, Form2);
Form2.Show;
end
else
BringWindowToTop(Hwnd);
end;
試試看吧...應該可以...
|
||
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
Form本來就可以重複Create的. Design Time設計了Form只是完成了一個類別設計, 用此類別當然可重複Create Instance 你會有問題, 主要是用了Global參數
當 Design完Form時, Delphi自動宣告了一個Global參數
var Form1:TForm1; //Form1只是個變數你重複Create, 變數均用一樣, 當然有問題 在你要Create 此Form之procedure內用local變數就沒問題了 例: procedure TMainForm.xxxClick(Sender: TObject); var f:TForm1; begin f:=TForm1.create(self); f.show; end;[NOTE] 將所有Form之Global參數刪除,且不要auto create, 要create form時自己宣吞變數, 你可以更快了解Delphi |
||
crlin
一般會員 發表:47 回覆:57 積分:20 註冊:2002-07-23 發送簡訊給我 |
|||
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|||
crlin
一般會員 發表:47 回覆:57 積分:20 註冊:2002-07-23 發送簡訊給我 |
|||
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|||
crlin
一般會員 發表:47 回覆:57 積分:20 註冊:2002-07-23 發送簡訊給我 |
|||
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
After some research on the web and I found that "name not unique in this context" is a BDE error. It raises because you are having 2 TDatabase component using the same Databasename. Is is truth that you are putting TDatabase on the form? I would recommend using a separate database module and share the connection (since every TDatabase need its own connection to the DB).
|
||
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|||
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|||
crlin
一般會員 發表:47 回覆:57 積分:20 註冊:2002-07-23 發送簡訊給我 |
>題外話...
>想請問一下這樣的設計原理是作何使用...
>因為我們一般Form如果連接資料庫...
>你又讓user同時開二個Form..
>那資料的異動會不會有問題ㄋ??
>滿好奇的..
>thanks... >當然有問題,而且問題多多,細節部分你可以隨便拿一本討論 Database 的>書,查閱其中關於 MultiUser 的部分。 有時同一 Client 端的同一 user 會不小心又重開了一次 Form
然後就發現跑出一個奇怪的 error !
若是有很多個 Client 端, 每個 Client 端的 user 還是有可能在同一時間點
Access 到同一個 Table 啊 !
若是這種情況發生, 總該要有一個保護機制吧 ?
只是不知 Delphi PostgreSQL 要如何做 ??
有網友知道嗎 ? 教教我吧, thanks !
|
||
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|||
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
我想你的問題跟做法應該是要改為..
按了按鈕後...如果Form尚未開啟..就將Form開啟..
如果已經開啟..就將Form帶到最上層..
這樣子你的Form單獨控制程式資料異動的部分會比較單純...
引言: 有時同一 Client 端的同一 user 會不小心又重開了一次 Form 然後就發現跑出一個奇怪的 error ! 若是有很多個 Client 端, 每個 Client 端的 user 還是有可能在同一時間點 Access 到同一個 Table 啊 ! 若是這種情況發生, 總該要有一個保護機制吧 ? 只是不知 Delphi PostgreSQL 要如何做 ?? 有網友知道嗎 ? 教教我吧, thanks ! |
||
yhk
一般會員 發表:11 回覆:7 積分:3 註冊:2002-10-29 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |