listview中不確定的多個變量傳遞用什麽方法? |
答題得分者是:change.jian
|
gxxc2008
一般會員 發表:4 回覆:4 積分:1 註冊:2008-06-13 發送簡訊給我 |
在form1中有listview1,從資料庫中讀出内容到listview1。客戶選擇多個項目后,需要將選到的項目的
某項内容(比如id)傳遞到模态窗体form2中去。在form2修改保存關閉后,form1中的listview1自動刷新 成最新的结果。 像這種不確定的多個變量傳遞用什麽方法呢? 單元的循環引用,似乎很多地方都不推薦。 全局變量呢?怎麽做? 很多規則裏也不推薦全局變量,如果不用全局變量,那用動態數組嗎?動態數組怎麽傳遞的? 還請指教。最好能關鍵的地方寫幾行關鍵代碼參考。小弟剛學不久。 多謝。 |
shunaaron
高階會員 發表:13 回覆:94 積分:106 註冊:2006-10-06 發送簡訊給我 |
呼叫from2時
[code delphi] ttStr := TStringList.Create if from2 = nil then from2 = Tfrom2.Create(Application); fro ttI := 0 to listview1.count-1 do if listview1.item[ttI].Checked then ttStr.Add(listview1.item[ttI].Caption); from2.init(ttStr); from2.ShowModel; [/code] 在From2的 public procedure Init(ppStr:TstringList); From2傳回From1反之 以上 ===================引 用 gxxc2008 文 章=================== 在form1中有listview1,從資料庫中讀出内容到listview1。客戶選擇多個項目后,需要將選到的項目的 某項内容(比如id)傳遞到模态窗体form2中去。在form2修改保存關閉后,form1中的listview1自動刷新 成最新的结果。 像這種不確定的多個變量傳遞用什麽方法呢? 單元的循環引用,似乎很多地方都不推薦。 全局變量呢?怎麽做? 很多規則裏也不推薦全局變量,如果不用全局變量,那用動態數組嗎?動態數組怎麽傳遞的? 還請指教。最好能關鍵的地方寫幾行關鍵代碼參考。小弟剛學不久。 多謝。
------
程式沒有這麼難 只是還沒打通其中要絕
編輯記錄
shunaaron 重新編輯於 2008-06-17 00:26:30, 註解 無‧
|
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
不用那麼麻煩,擅用 OO 的觀念,其實很容易解決;只需要在 form 2 接受外部輸入一個 TLstView 的 property 即可
Unit1 / Form1 的 code [code delphi] var Form1: TForm1; implementation uses Unit2; //把 form 2所在 unit 參考進來 {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject); begin Form2:=TForm2.Create(Self); try Form2.ListView:=Self.ListView1; //把自己的 ListView 給 form2 Form2.ShowModal; finally Form2.Free; end; end; [/code] 而 Form 2 只要這樣寫即可 [code delphi] type TForm2 = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); private FListView: TListView; { Private declarations } public { Public declarations } property ListView:TListView read FListView write FListView; //定義一個 property 供外部給值 end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.BitBtn1Click(Sender: TObject); begin ModalResult:=mrOK; end; //這裡即是針對外部所 assign 的 ListView 去處理的 code procedure TForm2.BitBtn2Click(Sender: TObject); var i:Integer; begin if not Assigned(FListView) then raise Exception.Create('property ListView not assign.'); for i:=0 to FListView.Items.Count-1 do begin if FListView.Items[i].Checked then begin //do something... end; end; end; end. [/code] |
gxxc2008
一般會員 發表:4 回覆:4 積分:1 註冊:2008-06-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |