GridEdit是一个Edit控件,我的目的是当用户选择一行的时候,Subitem的地方出现一个edit编辑框,用来实现子条目编辑。procedure TFbasic_setup.ListView1DrawItem(Sender: TCustomListView;
Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
if (odSelected in State) then
begin
GridEdit.Left:=rect.Left + ListView1.Left;
GridEdit.Top:=Rect.Top + ListView1.Top;
GridEdit.Width:=Rect.Right-Rect.Left;
GridEdit.Height:=Rect.Bottom-Rect.Top;
GridEdit.Visible:=true;
end;
end;这样的结果是edit框出来了,但是占据了整行,我只要从subitem的left到这个subitem的末尾即可。
而且,原来listview列表里的数据怎么都看不见了?是不是因为onOwnDraw属性打开了?大家拷贝代码到机子上看一下,谢谢。
Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
if (odSelected in State) then
begin
GridEdit.Left:=rect.Left + ListView1.Left;
GridEdit.Top:=Rect.Top + ListView1.Top;
GridEdit.Width:=Rect.Right-Rect.Left;
GridEdit.Height:=Rect.Bottom-Rect.Top;
GridEdit.Visible:=true;
end;
end;这样的结果是edit框出来了,但是占据了整行,我只要从subitem的left到这个subitem的末尾即可。
而且,原来listview列表里的数据怎么都看不见了?是不是因为onOwnDraw属性打开了?大家拷贝代码到机子上看一下,谢谢。
procedure TForm1.Button1Click(Sender: TObject);
begin
GridEdit.Parent := ListView1;
GridEdit.BoundsRect := ListView1.Selected.DisplayRect(drBounds);
GridEdit.Left := ListView1.Columns[0].Width + ListView1.Columns[1].Width;
GridEdit.Width := ListView1.Columns[2].Width;
end;