全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1332
推到 Plurk!
推到 Facebook!

listview中不確定的多個變量傳遞用什麽方法?

答題得分者是:change.jian
gxxc2008
一般會員


發表:4
回覆:4
積分:1
註冊:2008-06-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-06-13 17:30:36 IP:222.46.xxx.xxx 訂閱
在form1中有listview1,從資料庫中讀出内容到listview1。客戶選擇多個項目后,需要將選到的項目的

某項内容(比如id)傳遞到模态窗体form2中去。在form2修改保存關閉后,form1中的listview1自動刷新

成最新的结果。
像這種不確定的多個變量傳遞用什麽方法呢?
單元的循環引用,似乎很多地方都不推薦。
全局變量呢?怎麽做?
很多規則裏也不推薦全局變量,如果不用全局變量,那用動態數組嗎?動態數組怎麽傳遞的?
還請指教。最好能關鍵的地方寫幾行關鍵代碼參考。小弟剛學不久。
多謝。
shunaaron
高階會員


發表:13
回覆:94
積分:106
註冊:2006-10-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-06-17 00:25:20 IP:220.134.xxx.xxx 訂閱
呼叫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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-06-17 13:50:52 IP:211.23.xxx.xxx 訂閱
不用那麼麻煩,擅用 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-06-18 13:33:16 IP:116.204.xxx.xxx 訂閱
 多謝兩位高人。
不勝感激。
爲什麽答題結案只能選擇一個人啊?
系統時間:2024-04-25 23:35:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!