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

幫忙listview怎麽不顯示東西

答題得分者是:Chance36
stockdisk
一般會員


發表:9
回覆:14
積分:4
註冊:2003-06-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-14 10:56:39 IP:220.202.xxx.xxx 未訂閱
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, SUIListView; type PSiteItem = ^TSiteItem; TSiteItem = record Site : string; Special : boolean; end; TForm1 = class(TForm) OpenDialog1: TOpenDialog; Button1: TButton; lstSite: TListView; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; sitelist:tlist; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var F : TextFile; SiteItem: PSiteItem; strSite : string; I : integer; begin Sitelist:=tlist.Create; opendialog1.Execute; if OpenDialog1.FileName = '' then Exit; I := 0; lstSite.Items.BeginUpdate; AssignFile (F, OpenDialog1.FileName); Reset (F); while not Eof (F) do begin Readln (F, strSite); if Trim (strSite) <> '' then begin SiteItem := New (PSiteItem); SiteItem.Site := strSite; SiteItem.Special := False; sitelist.Add(SiteItem); end; end; CloseFile (F); with lstsite do begin Items.Count := sitelist.Count; Items.EndUpdate; Repaint; end; end; end. 不知道程式錯在那裏。什麽也顯示不出來。
Chance36
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-14 15:58:00 IP:211.20.xxx.xxx 未訂閱
stockdisk 你好
修改如下段    if Trim (strSite) <> '' then
begin
  SiteItem := New (PSiteItem);
  SiteItem.Site := strSite;
  SiteItem.Special := False;
  sitelist.Add(SiteItem.Site);
  // OR 處理顯示文字部份 及其Record 資料
  //sitelist.AddObject(SiteItem.Site,SiteItem);
end;    
_______________________________________ 深藍的魚,祝您好運..........連.連
stockdisk
一般會員


發表:9
回覆:14
積分:4
註冊:2003-06-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-14 18:59:40 IP:61.235.xxx.xxx 未訂閱
[Error] Unit1.pas(57): Incompatible types: 'String' and 'Pointer' 兄弟不行呀。类型不对。
Chance36
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-14 19:13:32 IP:211.20.xxx.xxx 未訂閱
 
Var
  SiteItem: PSiteItem;
  Li : TListItem ;    if Trim (strSite) <> '' then
begin
  SiteItem := New (PSiteItem);
  SiteItem.Site := strSite;
  SiteItem.Special := False;
  Li:=sitelist.Items.Add;
  Li.Caption:=SiteItem.Site ;// 設定Caption
  Li.Data :=SiteItem ;       // 儲存Data
end;    
發表人 - chance36 於 2004/07/14 19:32:53
stockdisk
一般會員


發表:9
回覆:14
積分:4
註冊:2003-06-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-14 19:58:13 IP:61.235.xxx.xxx 未訂閱
兄弟我用的是DELPHI6.0 不知道爲什麽運行不了。 你說的代碼運行不了。也許你用的是DELPHI7吧。
Chance36
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-14 20:06:04 IP:211.20.xxx.xxx 未訂閱
我用D5 有什麼狀況呢?
順帶一提    with lstsite do
begin
  //  Items.Count := sitelist.Count;  <==== 這行不需要
  Items.EndUpdate;
  // Repaint;   <==== 這行也不需要
end;
啊!抱歉我看錯了,原來你還有一個lstSite: TListView; 還有sitelist:tlist; 這兩個我搞混了! _______________________________________ 深藍的魚,祝您好運..........連.連 發表人 - chance36 於 2004/07/14 20:15:05 發表人 - chance36 於 2004/07/14 20:18:18
Chance36
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-07-14 20:25:19 IP:211.20.xxx.xxx 未訂閱
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, SUIListView;    type
  PSiteItem = ^TSiteItem;
  TSiteItem = record
    Site : string;
    Special : boolean;
  end;      TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    Button1: TButton;
    lstSite: TListView;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;
  sitelist:tlist; // 有何作用我不知道  以下程式碼沒用到    implementation    {$R *.dfm}    procedure TForm1.Button1Click(Sender: TObject);
var F : TextFile;
  SiteItem: PSiteItem;
  strSite : string;
  I , j: integer;
begin
//   Sitelist:=tlist.Create;  // 應該不用
  opendialog1.Execute;
  if OpenDialog1.FileName = '' then
    Exit;
  I := 0;
  lstSite.Items.BeginUpdate;
  AssignFile (F, OpenDialog1.FileName);
  Reset (F);
  // 清除現有內容
  For j := 0 To lstSite.Items.Count-1 Do Begin
    Dispose(PSiteItem(lstSite.Items[j].Data));
  End;
  lstSite.Items.Clear;      while not Eof (F) do
  begin
    Readln (F, strSite);
    if Trim (strSite) <> '' then
    begin
      SiteItem := New (PSiteItem);
      SiteItem.Site := strSite;
      SiteItem.Special := False;
      Li:=lstSite.Items.Add;
      Li.Caption:=SiteItem.Site ;// 設定Caption
      Li.Data :=SiteItem ;       // 儲存Data
    end;
  end;
  CloseFile (F);
  with lstSite do
  begin
    //Items.Count := sitelist.Count;
    Items.EndUpdate;
    //Repaint;
  end;
end;    end.     目前 Sitelist : TList  沒用到
_______________________________________ 深藍的魚,祝您好運..........連.連 發表人 - chance36 於 2004/07/14 20:29:13
stockdisk
一般會員


發表:9
回覆:14
積分:4
註冊:2003-06-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-07-14 20:34:16 IP:61.235.xxx.xxx 未訂閱
這時有tlist的例子。 http://www.yesky.com/20000809/104308.shtml 用你的現在的程式問題已經解決,兄弟這裏先謝了,我在研究一下tlistkc ,但tlist應當好用才對,但不知道原因。
Chance36
版主


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-07-14 20:39:43 IP:211.20.xxx.xxx 未訂閱
TList 只是單純的資料儲存及管理而已,並沒視覺化的的功能 而且TList的item是指標而不是String    以你的例子  Sitelist:=tlist.Create; SiteList.Data := SiteItem; // 這樣可以 SiteList.Add(SiteItem); // 這樣可以 SiteList.Data := SiteItem.Site; // 這樣不可以    _______________________________________ 深藍的魚,祝您好運..........連.連
stockdisk
一般會員


發表:9
回覆:14
積分:4
註冊:2003-06-06

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-07-14 22:21:58 IP:61.235.xxx.xxx 未訂閱
Items.Count := sitelist.Count; 這句話難道不是把那個指標轉給lstsite嗎?
stockdisk
一般會員


發表:9
回覆:14
積分:4
註冊:2003-06-06

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-07-14 23:32:53 IP:61.235.xxx.xxx 未訂閱
這裏有詳細的TLIST的解釋。不錯的。 http://www.shecn.com/jof/jof03/dellist8.htm Items.Count := sitelist.Count;只把記數負過來了,其他值沒有過來所以他可以沒有顯示出來。還需要再仔細看一看
系統時間:2024-05-17 16:25:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!