te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>listview - How to add Images to a TListView item in FMX? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

listview - How to add Images to a TListView item in FMX? - Stack Overflow

programmeradmin3浏览0评论

I already connected the ListView to my ImageList, but I don't know what I am doing wrong.

Here is my code:

var
  Item: TListViewItem;
begin
  UniQuery1.SQL.Text := 'SELECT * FROM Clients WHERE Problem IS NOT NULL';
  UniQuery1.Open;
  ListView1.Items.Clear;
  if not UniQuery1.IsEmpty then
  begin
    ListView1.Images := ImageList1;
    while not UniQuery1.Eof do
    begin
      Item := ListView1.Items.Add;
      Item.Text := 'Name: ' + UniQuery1.FieldByName('Name').AsString;
      Item.Detail := 'Number: ' + UniQuery1.FieldByName('Number').AsString +
                     ' | Problem: ' + UniQuery1.FieldByName('Problem').AsString;

      Item.ImageIndex := 0;
      UniQuery1.Next;
    end;
  end;
  UniQuery1.Close;
end;

I already connected the ListView to my ImageList, but I don't know what I am doing wrong.

Here is my code:

var
  Item: TListViewItem;
begin
  UniQuery1.SQL.Text := 'SELECT * FROM Clients WHERE Problem IS NOT NULL';
  UniQuery1.Open;
  ListView1.Items.Clear;
  if not UniQuery1.IsEmpty then
  begin
    ListView1.Images := ImageList1;
    while not UniQuery1.Eof do
    begin
      Item := ListView1.Items.Add;
      Item.Text := 'Name: ' + UniQuery1.FieldByName('Name').AsString;
      Item.Detail := 'Number: ' + UniQuery1.FieldByName('Number').AsString +
                     ' | Problem: ' + UniQuery1.FieldByName('Problem').AsString;

      Item.ImageIndex := 0;
      UniQuery1.Next;
    end;
  end;
  UniQuery1.Close;
end;
Share Improve this question edited Feb 17 at 21:34 Remy Lebeau 597k36 gold badges500 silver badges844 bronze badges asked Feb 17 at 18:53 ARTHUR LEMESARTHUR LEMES 33 bronze badges New contributor ARTHUR LEMES is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
Add a comment  | 

2 Answers 2

Reset to default 1

The visual appearance of items in an FMX TListView is controlled by its ItemAppearance settings - in this case its similar named sub-property ItemAppearence, which defaults to ListItem. Changing this to ImageListItem should solve your problem.

Still problems:

My short response, use the OnUpdateObjects event:

procedure TMain.ListView1UpdateObjects(const Sender: TObject;
  const AItem: TListViewItem);
begin
  AItem.ImageIndex:=0;
end;

Long response : I should suggest another approach, "no loop code" solution, involving LiveBindings.

Change your query (and optimize, this SELECT * is a "bad" habit):

SELECT number,name,problem,0 as index FROM Clients WHERE Problem IS NOT NULL

Then you can use field 'index' linked with Item.ImageIndex:

Ok, if you are not familiar with LiveBindings CustomFormat property, my response don't apply to your Text and Detail format. Easy way, change your SQL:

SELECT 'Name : '||name fname,
       'Number: '||Number||' | Problem: '||problem detail,
       0 as Index FROM Clients WHERE Problem IS NOT NULL

Just one inconvenient, the DataSet has to stay open.

Question : is the TListView component mandatory? A TListBox should be sufficient, if you draw an ItemStyle.

More info in my French blog or tutorials site.

发布评论

评论列表(0)

  1. 暂无评论