标签: tlistview

TListView:如果添加列,VCL将丢失列的顺序

我正在尝试在TListView中的现有列之间添加一列.因此,我在最后添加新列,并通过将其索引设置为指定值来移动它.这有效,直到添加另一个新列.

我做了什么:在最后位置添加列(Columns.Add)并在最后位置(Subitems.Add)添加子项.然后我通过将列的索引设置为正确的位置来移动列.只要只添加一列,这样就可以正常工作.添加第二个新列时,子项目会被搞砸.第一列的新子项移动到最后一个位置,例如:

0        |  1          |  new A       |  new B      | 3
Caption  |  old sub 1  |  old sub 3   |  new Sub B  | new sub A
Run Code Online (Sandbox Code Playgroud)

如果有人可以提供帮助,我会很高兴!

例如,是否可能有一个命令或消息我可以发送到ListView,所以它刷新或保存它的Column - > Subitem映射,我可以在添加第一个新列及其子项后使用,以便我可以处理第二个新列和第一个一样.

或者这只是TListViews列的一个错误 - >子项处理或TListColumns ......?

vcl表单应用程序的示例代码(指定Form1.OnCreate事件):

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    listview: TListView;
    initButton: TButton;
    addColumn: TButton;
    editColumn: TEdit;
    subItemCount: Integer;
    procedure OnInitClick(Sender: TObject);
    procedure OnAddClick(Sender: TObject);
  public …
Run Code Online (Sandbox Code Playgroud)

delphi dynamic tlistview subitem

6
推荐指数
1
解决办法
5376
查看次数

Delphi - 获取TListView中所选项目的当前索引

我在表单中有一个TListView,我想知道所选项目的索引.我试图找到我的TListView的方法或属性,它提供了该信息,但我发现的唯一的东西是lvClients.Selected它并没有给出这个项目的索引.

有人可以帮我找到如何在TListView中获取所选项目的索引吗?谢谢.

delphi tlistview

6
推荐指数
2
解决办法
1万
查看次数

Delphi 2010:在vsReport ViewStyle中组合TListView项

首先这可能吗?

我有两个问题 - 第一个问题是,在运行时创建时,我无法让组出现在TListView中.我正在使用以下代码:

lg := lvResults.Groups.Add;
lg.Header := 'New Starters';
lg.GroupID := 0;
Run Code Online (Sandbox Code Playgroud)

第二个是即使我在设计时创建组 - 我可以在表单设计器中看到它们 - 它们在运行时不存在 - 甚至在我刷新数据以添加我自己的项目之前...

附加:我已经确认以下答案适用于处女项目.但是在我想要使用它的项目中失败了!我已经用调色板中的新TListView取代了我的TListView,没有任何乐趣.列表视图位于tpagecontrol上

delphi tlistview delphi-2010

5
推荐指数
1
解决办法
6116
查看次数

如何使用OwnerData true处理TListView中的默认列自动调整大小

我有一个TListView(在报告模式下),我在虚拟模式下使用(OwnerData:= True).除了我知道的自动自动调整列的两种情况之外,一切都很好.他们是:

  1. 双击标题列分隔符以自动调整单个列
  2. Ctrl-KeypadPlus键可自动调整所有列.

在虚拟模式下这些事件的默认处理并不真正起作用(它似乎在第一行数据上自动调整.)我想挂钩行为并自己进行列自动调整.有谁知道这是怎么做到的吗?或许我错过了一些明显的东西?我正在使用Delphi XE.谢谢你的任何建议.

delphi tlistview

5
推荐指数
1
解决办法
804
查看次数

调整TListView列大小后的事件

我正在尝试在TListView设置为ViewStyle = vsReport的列中调整大小后触发事件.

具体来说,我有两个ListViews,我想保持列宽度相同.只有一个listView具有列标题,因此需要将事件链接到这些列.

在TListViews的可用程序中,似乎没有相关选项......

有帮助吗?

delphi tlistview delphi-2010

5
推荐指数
1
解决办法
1642
查看次数

如何在TListView中检测CheckBox上的单击

所以基本上当用户点击复选框时,我想在我的列表中添加该项,我尝试使用OnChange事件,但这对我不起作用,因为即使没有点击Checkbox也会被触发.

我的代码简单明了

procedure LvUserChange(Sender: TObject; Item: TListItem;Change: TItemChange);
 var
 objUser : TUsers;
begin
   if not assigned(objListOfChangedUsers) then
   objListOfChangedUsers := TObjectList.Create;

   objUser := Item.Data;
   objListOfChangedUsers.Add(objUser);
end;
Run Code Online (Sandbox Code Playgroud)

我希望只有在ListView中单击复选框时才会触发此代码

delphi delphi-2007 tlistview

5
推荐指数
1
解决办法
1628
查看次数

在Delphi中,如何强制tListView始终显示所选行,即使没有聚焦也是如此.

tListView的选定行显示为蓝色,但仅在控件具有焦点时才显示.我希望始终显示所选行,无论控件是否具有焦点.

delphi tlistview

4
推荐指数
1
解决办法
4052
查看次数

简单的TListView OwnerDraw文本字体大小和颜色示例?

我试图让所有者在报告模式下使用4列绘制列表视图控件OnCustomDrawItem.

当我尝试更改Canvas.font.color时,我就是这样,我没有问题.

如果我设置canvas.font.size,我发现控件绘制的文本大小没有变化.

如果我试图从OnCustomDrawItem中接管文本的绘画,我发现我做不到.我知道如何使用OnCustomDraw在背景区域绘制,但我想自定义绘制listview ITEM,以便我可以设置文本的颜色和字体名称以及字体大小.

我知道在ListView所有者绘制的上下文中使用Canvas存在一些问题,以及在ListView中可以执行的操作的一些限制.

procedure TForm1.MyListViewCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
    Sender.Canvas.Font.Size := 13; // NO effect.
    Sender.Canvas.Font.Color := clRed; // WORKS.
    Sender.Canvas.Font.Style  :=Sender.Canvas.Font.Style + [fsBold]; // WORKS!
end;
Run Code Online (Sandbox Code Playgroud)

delphi ownerdrawn tlistview

4
推荐指数
1
解决办法
4821
查看次数

使用VCL样式时,TListview标头中没有图像

在vsReport ViewStyle中使用TListview并激活任何VCL样式时,标题中的图像不会显示.取消经典的Windows风格,图像出现.(显示我使用的图像的方法是将TImageList分配给ListView的SmallImages属性,然后在各列的Columns属性中选择图像索引).如何在启用了VCL样式的TListView的标题中显示图像?

delphi tlistview vcl-styles

4
推荐指数
1
解决办法
306
查看次数

清除和重新加载组和项目后,TListView组和项目不会出现

Delphi XE4 Update 1和Windows 8.

当我将组和项添加到列表视图时,它们会正确显示.当我然后清除项目和组,并再次添加它们时,什么都没有出现.当然这不是预期的行为?

来自DFM:

object lv: TListView
  Left = 24
  Top = 20
  Width = 250
  Height = 225
  Columns = <
    item
      Caption = 'Model'
      Width = 180
    end>
  GroupView = True
  ReadOnly = True
  RowSelect = True
  TabOrder = 0
  ViewStyle = vsReport
end
Run Code Online (Sandbox Code Playgroud)

代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  LListGroup: TListGroup;
  LListItem: TListItem;
begin
  lv.Items.Clear;
  lv.Groups.Clear;

  LListGroup := lv.Groups.Add;
  LListGroup.Header := 'Ford';

  LListItem := lv.Items.Add;
  LListItem.Caption := 'Escape';
  LListItem.GroupID := LListGroup.ID;

  LListItem := lv.Items.Add;
  LListItem.Caption …
Run Code Online (Sandbox Code Playgroud)

delphi tlistview

4
推荐指数
1
解决办法
733
查看次数