線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1123
推到 Plurk!
推到 Facebook!

TListView的問題

尚未結案
SuperLowB
初階會員


發表:96
回覆:77
積分:34
註冊:2003-06-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-05 16:39:49 IP:203.198.xxx.xxx 未訂閱
請問TListView 裏的 TListItem.data 怎樣用? 它是可以指向任何type 是pointer 的東西....但我怎可拿裏面的值 例如:
type
  TUserInfo=record
    age:integer;
    remark:String;
  end;    ......    procedure TForm1.Button1Click(Sender: TObject);
var
  LstItem:TListItem;
  PUserInfo:^TUserInfo;
  UserInfo:array [0..1] of TUserInfo;
  UserOne:=TUserInfo;    begin
  PUserInfo:=@lUserInfo;
  Lstvw.ViewStyle:=vsReport;
  LstVw.Columns[0].Caption:='First Name';
  LstVw.Columns[1].Caption:='Last Name';
  LstVw.Columns[2].Caption:='Full Name';
  LstItem:=LstVw.Items.Add;
  LstItem.Caption:='Tom';
  LstItem.SubItems.Add('Chan');
  LstItem.SubItems.Add('Tom Chan');
  UserInfo[0].age:=21;
  UserInfo[0].remark :='He is a Man';
  LstItem.Data:=PUserInfo;
  Showmessage(LstItem.Data);
  //問題在此,我怎可透過LstItem.Data拿裏的remark值      LstItem:=LstVw.Items.Add;
  LstItem.Caption:='Mary';
  LstItem.SubItems.Add('Lam');
  LstItem.SubItems.Add('Mary Lam');
end;
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-05 20:00:28 IP:218.1.xxx.xxx 未訂閱
强制类型转换 Showmessage(PUserInfo(LstItem.Data)^.ReMark);     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-05 20:24:10 IP:211.20.xxx.xxx 未訂閱
type
  PUserInfo=^TUserInfo;
  TUserInfo=record
    age:integer;
    remark:String;
  end;    procedure TForm1.Button3Click(Sender: TObject);
var
  LstItem  :TListItem;
  PUserOne :PUserInfo ;
begin
  Lstvw.ViewStyle:=vsReport;
  LstVw.Columns[0].Caption:='First Name';
  LstVw.Columns[1].Caption:='Last Name';
  LstVw.Columns[2].Caption:='Full Name';
  LstItem:=LstVw.Items.Add;
  LstItem.Caption:='Tom';
  LstItem.SubItems.Add('Chan');
  LstItem.SubItems.Add('Tom Chan');      PUserOne := New(PUserInfo);
  PUserOne.age:=21;
  PUserOne.remark :='He is a Man';
  LstItem.Data:=PUserOne;
  Showmessage(PUserInfo(LstItem.Data).Remark);
  //問題在此,我怎可透過LstItem.Data拿裏的remark值      LstItem:=LstVw.Items.Add;
  LstItem.Caption:='Mary';
  LstItem.SubItems.Add('Lam');
  LstItem.SubItems.Add('Mary Lam');
  PUserOne := New(PUserInfo);
  PUserOne.age:=24;
  PUserOne.remark :='He is a FeMan';
  LstItem.Data:=PUserOne;
end; 
SuperLowB
初階會員


發表:96
回覆:77
積分:34
註冊:2003-06-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-06 10:39:15 IP:203.198.xxx.xxx 未訂閱
type
  TUserInfo=record
    age:integer;
    remark:String;
  end;    ......    procedure TForm1.Button1Click(Sender: TObject);
var
  LstItem:TListItem;
  PUserInfo:^TUserInfo;
  UserInfo:array [0..1] of TUserInfo;
  UserOne:=TUserInfo;    begin
  PUserInfo:=@UserInfo;
  Lstvw.ViewStyle:=vsReport;
  LstVw.Columns[0].Caption:='First Name';
  LstVw.Columns[1].Caption:='Last Name';
  LstVw.Columns[2].Caption:='Full Name';
  LstItem:=LstVw.Items.Add;
  LstItem.Caption:='Tom';
  LstItem.SubItems.Add('Chan');
  LstItem.SubItems.Add('Tom Chan');
  UserInfo[0].age:=21;
  UserInfo[0].remark :='He is a Man';
  LstItem.Data:=PUserInfo;
  Showmessage(LstItem.Data);
  //問題在此,我怎可透過LstItem.Data拿裏的remark值      LstItem:=LstVw.Items.Add;
  LstItem.Caption:='Mary';
  LstItem.SubItems.Add('Lam');
  LstItem.SubItems.Add('Mary Lam');
  UserInfo[1].age:=18;
  UserInfo[1].remark :='She is a Woman';    end;    
多謝Chance36 和 mustapha.wang。Chance36 你的coding正確,可拿到pointer裏的值,但我的意思是這樣的: 我原本的意思是想當如果選取ListView裏的第一個item時,就可取到array UserInfo[0].remark裏的值('He is a Man'),選取ListView裏的第二個item時,就可取到array UserInfo[1].remark裏的值('She is a Woman')...如此類推... 所以我才用listItem.Data的pointer去指住UserInfo... 我的問題就是問,如何拿到pointer所指住的array[1....n]的remark 值 發表人 - superlowb 於 2004/03/06 12:21:29
系統時間:2024-06-24 4:05:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!