Delphi 如何从ListView项目填充滚动框

Delphi 如何从ListView项目填充滚动框,delphi,vcl,Delphi,Vcl,我有一个列表视图,里面有许多字段 另一方面,我有一个滚动框,我想用ListView中的数据填充它 这是通过创建一个动态面板来完成的,该面板包含一组表示面板上数据的标签 面板构造良好,但我不知道如何使用ListView中的项设置标签标题 请帮我更正我的代码。您似乎在寻找LV.Items[i]。标题和LV.Items[i]。子项[j] 标题是最左侧单元格中的文本 子项[0],子项[1],…,子项[LV.Columns.Count-2]生成剩余单元格中的文本 因此,在您的情况下,给定行i LV

我有一个列表视图,里面有许多字段

另一方面,我有一个滚动框,我想用ListView中的数据填充它

这是通过创建一个动态面板来完成的,该面板包含一组表示面板上数据的标签

面板构造良好,但我不知道如何使用ListView中的项设置标签标题


请帮我更正我的代码。

您似乎在寻找
LV.Items[i]。标题
LV.Items[i]。子项[j]

  • 标题
    是最左侧单元格中的文本
  • 子项[0]
    子项[1]
    ,…,
    子项[LV.Columns.Count-2]
    生成剩余单元格中的文本
因此,在您的情况下,给定行
i

  • LV.Items[i]。标题是“RN”列中的值
  • LV.Items[i]。子项[0]
    是“RC”列中的值
  • LV.Items[i]。子项[1]
    是“RFD”列中的值
  • LV.Items[i]。子项[2]
    是“RUR”列中的值
  • LV.Items[i]。子项[3]
    是“RID”列中的值
  • LV.Items[i]。子项[4]
    是“isV”列中的值

您似乎在寻找
LV.Items[i]。标题
LV.Items[i]。子项[j]

  • 标题
    是最左侧单元格中的文本
  • 子项[0]
    子项[1]
    ,…,
    子项[LV.Columns.Count-2]
    生成剩余单元格中的文本
因此,在您的情况下,给定行
i

  • LV.Items[i]。标题是“RN”列中的值
  • LV.Items[i]。子项[0]
    是“RC”列中的值
  • LV.Items[i]。子项[1]
    是“RFD”列中的值
  • LV.Items[i]。子项[2]
    是“RUR”列中的值
  • LV.Items[i]。子项[3]
    是“RID”列中的值
  • LV.Items[i]。子项[4]
    是“isV”列中的值

一般提示:如果您不想编辑标题,请不要忘记将
ReadOnly
设置为
True
,如果您不想实施基于列单击的排序,请将
column单击设置为
False
。就我个人而言,我也喜欢将
RowSelect
设置为
True
。另外,我还想为将来的堆栈溢出问题提供一些提示。请注意,您的问题实际上与滚动框无关。相反,它是关于如何访问列表视图行中的各种单元格(列)。你应该特别问一下。甚至不需要提及滚动框。最后,
Pnl
LabName
LabId
确实应该是局部变量,
I
应该是真的
整数。也不需要制作
posX
posY
SmallInt
。使用
Integer
。不要忘记在滚动框中启用拇指跟踪:将
vertsollbar.tracking
设置为
True
(水平滚动条也是如此)。否则就回到80年代。一般提示:如果您不想编辑标题,请不要忘记将
ReadOnly
设置为
True
,如果您不想实现基于列单击的排序,请将
ColumnClick
设置为
False
。就我个人而言,我也喜欢将
RowSelect
设置为
True
。另外,我还想为将来的堆栈溢出问题提供一些提示。请注意,您的问题实际上与滚动框无关。相反,它是关于如何访问列表视图行中的各种单元格(列)。你应该特别问一下。甚至不需要提及滚动框。最后,
Pnl
LabName
LabId
确实应该是局部变量,
I
应该是真的
整数。也不需要制作
posX
posY
SmallInt
。使用
Integer
。不要忘记在滚动框中启用拇指跟踪:将
vertsollbar.tracking
设置为
True
(水平滚动条也是如此)。否则就要回到80年代了。
unit Unit3;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,
  PngImageList, Vcl.Menus,
  Vcl.ComCtrls, siComp, Registry, System.ImageList, Vcl.ImgList,
  Vcl.Imaging.pngimage, rkGlassButton;

type
  TForm3 = class(TForm)
    ScrollBox1: TScrollBox;
    LV: TListView;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;
  Pnl : TPanel;
 LabName : TLabel;
 LabId : TLabel;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var
 posX,posY : SmallInt;

  I: Byte;
  Item: TListItem;

begin

   posX := 0;
   posY := 0;
   for I := 0 to LV.Items.Count -1 do
    begin
      Pnl := TPanel.Create(ScrollBox1);
      Pnl.Parent           := ScrollBox1;
      Pnl.Left             := posX  -1;
      Pnl.Top              := posY  -1;
      Pnl.Width            := ScrollBox1.Width;
      Pnl.Height           := 40;
      Pnl.BorderStyle      := bsNone;
      Pnl.BevelInner       := bvNone;
      Pnl.BevelKind        := bkNone;
      Pnl.BevelOuter       := bvNone;
      Pnl.ParentBackground := false;
      Pnl.Color            := clWhite;
      Pnl.Anchors          := [akTop, akRight,akLeft];
      posY := posY + Pnl.Height;
     //-------------------
        LabName := TLabel.Create(Pnl);
        LabName.Parent := Pnl;
        LabName.Top := 10;
        LabName.Left := 40;;
        LabName.Font.Size := 11;
        LabName.Caption :=LV.Items; // ??? ListView  (RN)
    //--------------------
        LabId := TLabel.Create(Pnl);
        LabId.Parent := Pnl;
        LabId.Top := 10;
        LabId.Left := 100;;
        LabId.Font.Size := 11;
        Item := LV.Items;
        LabId.Caption := LV.Items;; // ???  ListView  (RC)
    end;
end;

end.