作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 TListView
的 vsReport
样式,组可见。组按创建顺序显示。但我想制作两个按钮(向上和向下)并将所选组移动到另一个位置(在运行时)。可能吗?
最佳答案
您可以通过更改组项的 Index
属性来实现。以下代码演示了用法:
procedure TForm1.btnMoveUpClick(Sender: TObject);
var
itm: TListItem;
i: Integer;
begin
itm := ListView1.Selected;
if Assigned(itm) then
for i := 0 to ListView1.Groups.Count - 1 do
if ListView1.Groups[i].GroupID = itm.GroupID then
begin
if ListView1.Groups[i].Index > 0 then
ListView1.Groups[i].Index := ListView1.Groups[i].Index - 1;
break;
end;
end;
procedure TForm1.btnMoveDownClick(Sender: TObject);
var
itm: TListItem;
i: Integer;
begin
itm := ListView1.Selected;
if Assigned(itm) then
for i := 0 to ListView1.Groups.Count - 1 do
if ListView1.Groups[i].GroupID = itm.GroupID then
begin
if ListView1.Groups[i].Index < ListView1.Groups.Count - 1 then
ListView1.Groups[i].Index := ListView1.Groups[i].Index + 1;
break;
end;
end;
脚注:当然,这可以(应该)这样重构:
function GetGroupFromGroupID(AListView: TListView; AGroupID: integer): TListGroup;
var
i: Integer;
begin
for i := 0 to AListView.Groups.Count - 1 do
if AListView.Groups[i].GroupID = AGroupID then
Exit(AListView.Groups[i]);
result := nil;
end;
procedure TForm1.btnMoveUpClick(Sender: TObject);
var
itm: TListItem;
grp: TListGroup;
begin
itm := ListView1.Selected;
if Assigned(itm) then
begin
grp := GetGroupFromGroupID(ListView1, itm.GroupID);
if Assigned(grp) and (grp.Index > 0) then
grp.Index := grp.Index - 1;
end;
end;
procedure TForm1.btnMoveDownClick(Sender: TObject);
var
itm: TListItem;
grp: TListGroup;
begin
itm := ListView1.Selected;
if Assigned(itm) then
begin
grp := GetGroupFromGroupID(ListView1, itm.GroupID);
if Assigned(grp) and (grp.Index < ListView1.Groups.Count - 1) then
grp.Index := grp.Index + 1;
end;
end;
关于listview - 如何更改 TListGroups 中的组顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50219494/
我有一个 TListView 的 vsReport 样式,组可见。组按创建顺序显示。但我想制作两个按钮(向上和向下)并将所选组移动到另一个位置(在运行时)。可能吗? 最佳答案 您可以通过更改组项的 I
我已经使用 Delphi XE4 一周了,我刚刚发现了新的 TListGroups 功能。可以轻松设置 TlistItem 的 GroupID 以便轻松在组之间切换/移动。现在,我想要一个在 TLis
我是一名优秀的程序员,十分优秀!