Delphi使用键在视图列表中导航

时间:2013-10-17 08:51:55

标签: delphi

你好再次程序员我原谅最后一个问题。糟糕的信息给出了错误的答案:)我将尝试用更好的例子来解释。我在Delphi XE3中使用了TListview(我知道这对于这个用途并不好),而且下面的代码是关键的。

但首先我在列表视图中填入数据:

procedure TForm1.FormCreate(Sender: TObject);
Var
I,C : Integer;
  Item : TListItem;
begin
for C := 0 to 8 do
begin
   ListView1.Columns[C].caption := 'Ip Address '+ IntToStr(C);

    Item:=ListView1.Items.Add;
  Item.Caption:=Format('%d.%d',[i,1]);
  Item.SubItems.Add(Format('%d.%d',[i,2]));
  Item.SubItems.Add(Format('%d.%d',[i,3]));
  Item.SubItems.Add(Format('%d.%d',[i,4]));
  Item.SubItems.Add(Format('%d.%d',[i,5]));
  Item.SubItems.Add(Format('%d.%d',[i,6]));
  Item.SubItems.Add(Format('%d.%d',[i,7]));
  Item.SubItems.Add(Format('%d.%d',[i,8]));

end;
end;

//然后在keydown上

procedure TForm1.ListView1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
Var LItem: TListItem;
begin
if Key = VK_RETURN  then
if Assigned(ListView1.Selected) then
ListView1.Selected.EditCaption;

到目前为止一切顺利。现在在结束编辑单元格之后,我需要使用左箭头和右箭头导航到子项目中所选单元格的左侧或右侧。当我导航时(我喜欢excel),我需要Listview在单元格周围阴影或绘制一个框架。 Listview应处于报告视图模式,但仍显示所选单元格周围的框架。另外我需要设置一下,例如,只有col 3,5和6应该可以使用键。

我尝试了一些代码,但它不起作用。 以下是我的开始。

if Key in [VK_LEFT,VK_RIGHT] then

case Key  of
VK_LEFT:   if ListView1.Selected.Index < ListView1.Columns.Count +1 then
             begin

               end;

VK_RIGHT:  if ListView1.Selected.Index > ListView1.Selected.Index -1 then  

 Begin 

        end;
end;

任何帮助都会很棒...... 先感谢您。 PS我已经测试了其他增强的Listviews,并且它没有问题。但是我使用标准Listview构建的系统非常复杂,所以我现在想要使用该标准......

最诚挚的问候......

2 个答案:

答案 0 :(得分:2)

使用TStringGrid组件。有了它,可以使用箭头键切换列。

答案 1 :(得分:0)

使用TListView控件是不可能的,它是Windows列表视图控件SysListView32的包装器。好吧,我希望如果你自己画控件那么它就有可能,但我会假设你不想这样做。

您有两个影响选择的主要属性。第一个由RowSelect属性控制。如果是False,则可以突出显示并仅选择第一列。如果RowSelectTrue,则您可以突出显示并选择整行。第二个开关是MultiSelect属性,它控制是否可以选择多行。

我怀疑您需要切换到不同的控件才能实现目标。我希望可以说服Mike Lischke的Virtual Tree View控件按照你想要的方式运行。