adrqQuery := TADOQuery.Create(nil);
  I := 0;  with adrqQuery do
  try
    SQL.Clear;
    SQL.Text := '....';
    Open;
    if not IsEmpty then
    begin
      First;      
      while not Eof do
      begin
        tmpItem := lvMainFrm.Items.Add;
        tmpItem.SubItems.Add(FieldByName('METERID').AsString);
        tmpItem.SubItems.Add(FieldByName('METERTYPE').AsString);
        tmpItem.SubItems.Add(FieldByName('USERNAME').AsString);
        tmpItem.SubItems.Add(FieldByName('ADDRESS').AsString);
        tmpItem.SubItems.Add(FieldByName('TELEPHONE').AsString);
        tmpItem.SubItems.Add(FormatFloat('#0.0', FieldByName('METERBASECOLD').AsFloat));
        tmpItem.SubItems.Add(FormatFloat('#0.0', FieldByName('METERBASEHOT').AsFloat));
        I := I + 1;
        Next;
      end;
    end;
  except
    on E:Exception do
    begin
      ShowMessage('读取用户类型数据出错,出错原因是' + #13 + #10 + E.Message);
      Exit;
    end;
  end;这段代码是在ListView中显示数据,ListView的ViewStyle是vcReport,上面SQL查找的结果是有数据的,但是不知道为什么上面语句没有出错,执行完界面上却没有什么东西显示?

解决方案 »

  1.   

    你的listview有colomun么?
    要对应显示 先添加colomun
      

  2.   

    tmpItem := lvMainFrm.Items.Add; lvMainFrm
    本来是空的? 新增一个根节点,貌似跟昨天的问题一样.根节点找不到兄弟节点
      

  3.   


    是啊,这个问题今天已经第三天了,还没解决完,郁闷死!
    主要是有6、7年没用delphi,最近刚要用,很多东西都忘了,时间又紧,所以头痛的很!
      

  4.   

    都成乞丐了还一个问题开两个帖
    tmpItem的caption属性没有设置不行吧
      

  5.   

    楼上的不好意思,我以为你是说我开这个贴开那个TreeView的贴呢,sorry!今天公司的网络好慢,可能是多发了一次所以变成二个贴了
      

  6.   

    1.先双击ListView,你需要显示多少个字段,就添加多少个栏位. 2.实现代码: var
      list :TListItem;
      i :Integer;
      adrqQuery:TADOQuery;
    begin
      adrqQuery := TADOQuery.Create(nil);   with adrqQuery do
      try
        Close;
        Connection:=TADOConnection;{注意此处,不知楼主你的数据库连接组件是什么名,请自行修改}
        SQL.Text='.....';
        Open;
        if Not IsEmpty then
        begin
          while Not Eof do
          begin
            if trim(Fields[0].AsString)<>'' then
            begin
              list :=ListView1.Items.Add;
              list.Caption :=Fields[0].AsString;
              for i :=1 to Fields.Count-1 do
                if  Fields.Fields[i].DataType in [ftFloat,ftInteger] then
                    list.SubItems.Append(FormatFloat('#0.0',Fields[i].AsFloat))
                else
                    list.SubItems.Append(Fields[i].AsString);
            end;
            Next;
          end;
        end;
      finally
        Close;
        Free;
      end;
    end;
      

  7.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      i:Integer;
      ListItem:TListItem;
    begin
      try
        ListView1.Items.Clear;
        with ListView1 do for i:=0 to 10 do begin
          ListItem:=Items.Add;
          ListItem.Caption:= IntToStr(i);
          ListItem.SubItems.Add('第 '+IntToStr(i)+' 行');
          ListItem.SubItems.Add('第三列内容');
        end;  except
        on E:Exception do
        begin
          ShowMessage('读取用户类型数据出错,出错原因是' + #13 + #10 + E.Message);
          Exit;
        end; 
      end;
    end;procedure TForm1.ListView1Click(Sender: TObject);
    var
      i:Integer;
    begin
      for i:=0 to ListView1.Items.Count-1 Do
        If ListView1.Items[i].Selected then begin
          Edit1.Text := listview1.Items[i].Caption;  //读第i行第1列
          Edit2.Text := listview1.Items[i].SubItems.strings[0];  //读第i行第2列
          Edit3.Text := listview1.Items[i].SubItems.strings[1];  //读第i行第3列
        end;
    end;我这样试了可以了
    参考资料:
    http://school.cfan.com.cn/pro/delphi/2007-10-22/1193032446d125617.shtml
      

  8.   

    谢谢楼上的朋友,问题我已经解决了,但是实际上不是代码的问题,我现在把原先的TListView删除了,再添加了一个,一样的代码结果却是正确的,我也不知道到底是那里的问题,也许是我设错了某个属性吧。