Show方法帶出的Form若Release之後會清除此Form操作過的資料 |
答題得分者是:小傑克
|
douglas
初階會員 ![]() ![]() 發表:24 回覆:42 積分:38 註冊:2008-03-05 發送簡訊給我 |
|
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
zhouying82
高階會員 ![]() ![]() ![]() ![]() 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
douglas
初階會員 ![]() ![]() 發表:24 回覆:42 積分:38 註冊:2008-03-05 發送簡訊給我 |
上述的問題還沒發展到跟資料庫互動的階段
單純是程式自身的操作而已 FormB我在設計階段就放在Available Forms 使用以下方法呼叫: if Application.FindComponent('FormB')=Nil then Application.CreateForm(TFormB, FormB); FormB.Show; FormB.Update; 在FromB底下的操作如下: FormA.StringGrid.Cells[Cols, Rows] := FormB.ADOQuery.FieldByName('FieldName').AsString; 當FormB使用了FromB.Release之後 FromA的StringGrid.Cells裡面的資料就被清空了 FormB的呼叫方式我改用: if Application.FindComponent('FormB')=Nil then Application.CreateForm(TFormB, FormB); FormB.ShowModal; 關閉改用: FormB.Close; 就又能夠正常操作了. |
zhouying82
高階會員 ![]() ![]() ![]() ![]() 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
douglas
初階會員 ![]() ![]() 發表:24 回覆:42 積分:38 註冊:2008-03-05 發送簡訊給我 |
情況一樣, 仍舊因為 Show 搭配 Release 發生問題
改用ShowModal 搭配 Close 就可以正常使用 我程式能正常運作 只是單純想知道為何會有這樣的情況 ?_? ===================引 用 zhouying82 文 章=================== [code delphi] if Application.FindComponent('FormB')=Nil then // 改为:if form2=nil then Application.CreateForm(TFormB, FormB);// 改为: form2:=TForm2.create(nil) [/code] 试试呢? |
小傑克
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:5 回覆:209 積分:357 註冊:2009-02-16 發送簡訊給我 |
我測試了一下,應該是不會這樣,你發生的狀況應該有別的原因,可能你有再另外處理FormB的close事件
這是我測試的程式,Form1很單純的點grid 開啟form2 procedure TForm1.Button1Click(Sender: TObject); var i,j:integer; begin for i := 0 to 3 do begin for j := 0 to 3 do begin StringGrid1.Cells[i,j]:= IntToStr(i j); end; end; end; procedure TForm1.StringGrid1Click(Sender: TObject); begin if Application.FindComponent('Form2')=Nil then Application.CreateForm(TForm2, Form2); Form2.Show; Form2.iRow := StringGrid1.Row; Form2.iCol := StringGrid1.Col; end; //然後Form2只有一個按鈕和TadoQuery uses unit1; procedure TForm2.Button1Click(Sender: TObject); begin ADOQuery1.Close; ADOQuery1.SQL.Text := 'SELECT TOP 1 * FROM 股票資料'; ADOQuery1.Open; Form1.StringGrid1.Cells[iCol,iRow] := ADOQuery1.FieldByName('證券代號').AsString; ADOQuery1.Close; ADOQuery1.Free; Form2.Release; end; 當form2 結束關閉後 資料有正確顯示到Form1的Grid上面
------
額有朝天骨,眼中有靈光 |
douglas
初階會員 ![]() ![]() 發表:24 回覆:42 積分:38 註冊:2008-03-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |