全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:7202
推到 Plurk!
推到 Facebook!
[<<] [1] [2] [>>]

DBGRid欄位驗證,使用Validate,整列的資料都會變?

答題得分者是:leveon
aftcast
站務副站長


發表:81
回覆:1482
積分:1762
註冊:2002-11-21

發送簡訊給我
#32 引用回覆 回覆 發表時間:2012-11-19 18:40:47 IP:114.32.xxx.xxx 訂閱
寫法怪怪的,感覺free了二次。

我想,你「瞭解」這button click應該是叫close這個方法吧? 這樣做不太"正統",應該只要在click事件上寫
ModalResult := mrOK; //mrXX都可以,隨你愛選, 因為你的程式沒用到這個判斷
這一行就可以讓modal form自己"關起來"(正確講是hide起來)

所以,不要在form close事件上寫任何程式,也就是說不要使用close事件!

此外建議:

function MSG_RTN(AA1,BB1 : ARRAY OF STRING):INTEGER ;
BEGIN
Application.CreateForm(TF_CTL_MESSAGE, F_CTL_MESSAGE);
try
F_CTL_MESSAGE.ShowModal;
finally
F_CTL_MESSAGE.FREE;

RESULT:=MSG_AA;
END;

procedure TF_CTL_MESSAGE.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ACTION := CAFREE ;
end;

先改一下,但我不確定這裡修正了後,病就除了。但至少正確的寫法要有!
如果levon大他有時間,他來幫你解接下來的應該很容易,他delphi極熟吧…哈哈。若這編文搞定後,無論如何把分數給他喔!






------



蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
chris681016
中階會員


發表:64
回覆:117
積分:96
註冊:2006-10-12

發送簡訊給我
#33 引用回覆 回覆 發表時間:2012-11-19 21:19:35 IP:61.64.xxx.xxx 訂閱
嘿丫levon大大也超幫忙在找答案的^__^
跟據大大的寫法結論是「不行」.............
至於那個「瞭解」button click是如下
procedure TF_CTL_MESSAGE.sBitBtn1Click(Sender: TObject);
begin
MSG_AA:=1;
CLOSE;
//ModalResult := mrOK; 換成這個結果也一樣
end;

procedure TF_CTL_MESSAGE.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ACTION := CAFREE ; 關了
end;


===================引 用 aftcast 文 章===================
寫法怪怪的,感覺free了二次。

我想,你「瞭解」這button click應該是叫close這個方法吧? 這樣做不太"正統",應該只要在click事件上寫
ModalResult := mrOK; //mrXX都可以,隨你愛選, 因為你的程式沒用到這個判斷
這一行就可以讓modal form自己"關起來"(正確講是hide起來)

所以,不要在form close事件上寫任何程式,也就是說不要使用close事件!

此外建議:

function MSG_RTN(AA1,BB1 : ARRAY OF STRING):INTEGER ;
BEGIN
Application.CreateForm(TF_CTL_MESSAGE, F_CTL_MESSAGE);
try
F_CTL_MESSAGE.ShowModal;
finally
F_CTL_MESSAGE.FREE;

RESULT:=MSG_AA;
END;

procedure TF_CTL_MESSAGE.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ACTION := CAFREE ;
end;

先改一下,但我不確定這裡修正了後,病就除了。但至少正確的寫法要有!
如果levon大他有時間,他來幫你解接下來的應該很容易,他delphi極熟吧…哈哈。若這編文搞定後,無論如何把分數給他喔!






leveon
資深會員


發表:29
回覆:386
積分:303
註冊:2012-02-12

發送簡訊給我
#34 引用回覆 回覆 發表時間:2012-11-20 11:34:04 IP:118.165.xxx.xxx 訂閱
Postmessage因為非同步 沒停下來 觸發兩次MSG_RTN
所以會 Cannot make a visible window modal
在CreateForm 前 先檢查一下有沒有開過 可能可以 試試看囉
function MSG_RTN(AA1,BB1 : ARRAY OF STRING):INTEGER ;
begin
if Application.FindComponent('F_CTL_MESSAGE')<> nil then begin
Application.CreateForm(TF_CTL_MESSAGE, F_CTL_MESSAGE);
......
end;
end;
===================引 用 aftcast 文 章===================
寫法怪怪的,感覺free了二次。

我想,你「瞭解」這button click應該是叫close這個方法吧? 這樣做不太"正統",應該只要在click事件上寫
ModalResult := mrOK; //mrXX都可以,隨你愛選, 因為你的程式沒用到這個判斷
這一行就可以讓modal form自己"關起來"(正確講是hide起來)

所以,不要在form close事件上寫任何程式,也就是說不要使用close事件!

此外建議:

function MSG_RTN(AA1,BB1 : ARRAY OF STRING):INTEGER ;
BEGIN
Application.CreateForm(TF_CTL_MESSAGE, F_CTL_MESSAGE);
try
F_CTL_MESSAGE.ShowModal;
finally
F_CTL_MESSAGE.FREE;

RESULT:=MSG_AA;
END;

procedure TF_CTL_MESSAGE.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ACTION := CAFREE ;
end;

先改一下,但我不確定這裡修正了後,病就除了。但至少正確的寫法要有!
如果levon大他有時間,他來幫你解接下來的應該很容易,他delphi極熟吧…哈哈。若這編文搞定後,無論如何把分數給他喔!






chris681016
中階會員


發表:64
回覆:117
積分:96
註冊:2006-10-12

發送簡訊給我
#35 引用回覆 回覆 發表時間:2012-11-20 15:04:16 IP:211.75.xxx.xxx 訂閱
又是亂湊的,不過也多虧leveon大大的提示,還有各位回應的大大們,結案了^___________^,希望不要發生另外問題...........

if Assigned(F_CTL_MESSAGE) then
BEGIN
Application.CreateForm(TF_CTL_MESSAGE, F_CTL_MESSAGE);
F_CTL_MESSAGE.ShowModal;
RESULT:=MSG_AA;
END
ELSE
BEGIN
Application.CreateForm(TF_CTL_MESSAGE, F_CTL_MESSAGE);
F_CTL_MESSAGE.ShowModal;
F_CTL_MESSAGE.FREE;
RESULT:=MSG_AA;
END;
leveon
資深會員


發表:29
回覆:386
積分:303
註冊:2012-02-12

發送簡訊給我
#36 引用回覆 回覆 發表時間:2012-11-20 15:37:29 IP:118.165.xxx.xxx 訂閱
終於搞定了~ 恭喜~~
不過照這樣發展下去
日後接手程式的人一定會很頭大

===================引 用 chris681016 文 章===================
又是亂湊的,不過也多虧leveon大大的提示,還有各位回應的大大們,結案了^___________^,希望不要發生另外問題...........

if Assigned(F_CTL_MESSAGE) then
BEGIN
Application.CreateForm(TF_CTL_MESSAGE, F_CTL_MESSAGE);
F_CTL_MESSAGE.ShowModal;
RESULT:=MSG_AA;
END
ELSE
BEGIN
Application.CreateForm(TF_CTL_MESSAGE, F_CTL_MESSAGE);
F_CTL_MESSAGE.ShowModal;
F_CTL_MESSAGE.FREE;
RESULT:=MSG_AA;
END;
[<<] [1] [2] [>>]
系統時間:2017-10-19 2:38:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!