有没有办法摆脱TListView控件中的这个绘画问题?

时间:2014-03-01 01:13:18

标签: delphi vcl tlistview

我在Windows 7 64位上使用XE5 Update 2(所有更新都是最新的)。

我有一个带有简单TListView对象的应用程序。

object lsvReceipts: TListView
  Left = 0
  Top = 0
  Width = 1382
  Height = 760
  Align = alClient
  Columns = <
    item
      Caption = 'Column 1'
      Width = 100
    end
    item
      Caption = 'Column 2'
      Width = 100
    end
    item
      Caption = 'Column 3'
      Width = 100
    end
    item
      Caption = 'Column 4'
      Width = 100
    end>
  MultiSelect = True
  OwnerData = True
  RowSelect = True
  TabOrder = 0
  ViewStyle = vsReport
  OnData = lsvReceiptsData
  ExplicitLeft = 136
  ExplicitTop = 200
  ExplicitWidth = 521
  ExplicitHeight = 321
end

以下是一些密码。它只显示来自一个firedac TFDQuery对象的数据。

procedure TForm3.lsvReceiptsData(Sender: TObject; Item: TListItem);
var index: integer;
begin

 index := Item.Index;
 receiptsQuery.RecNo := index;
 Item.Caption := dockReceiptsQueryDR_.AsString; 
 Item.SubItems.Add(receiptsQueryDOCK_RCPT_ID.AsString);
 Item.SubItems.Add(receiptsQueryRCVD_DATE.AsString);
end;

正如您在下图中所看到的,当我选择几行然后取消选择时会出现一些重新绘制问题。如果我将OwnerData设置为false并使用lsvReceipts.Items.Add方法手动将记录添加到列表中,则不会发生。

关于如何摆脱这个的任何想法?基于我在这里看到的其他消息,控件充满了问题。不幸的是,我现在必须使用它。

如果您想知道,我需要一个包含多个列的列表,用户可以在其中选择多个记录。我开始使用带有多选项选项集的DBGrid,但是,在使用它之后,选择多行的功能是有限的(例如,SHIFT + Click,SHIFT + PageUp / PageDown不起作用)。我们计划在未来升级到devexpress网格,但是现在我必须坚持使用vcl vanilla控件。

由于

enter image description here

0 个答案:

没有答案