如何在listview可编辑里实现可编辑状态

4568人阅读
1.添加CommCtrl;
2.ListView点击事件
procedure TForm1.ListView1Click(Sender: TObject);
& W, X, nCount: I
& Rect: TR
& ColSet:set of 0..3;//屏蔽列段
& ColSet:=[0..3];
& if Assigned(ListView1.Selected) then//判断双击的区域是否为有效区域
&&&&& Pos := ListView1.ScreenToClient(Mouse.CursorPos);//
&&&&& nCount := ListView1.Columns.C
&&&&& X := -GetScrollPos(ListView1.Handle, SB_HORZ);
&&&&& for nCol := 0 to nCount - 1 do
&&&&& begin
&&&&&&& W := ListView_GetColumnWidth(ListView1.Handle, nCol);
&&&&&&& if Pos.X &= X + W then
&&&&&&& begin
&&&&&&&&& B
&&&&&&& X := X + W;
&&&&& nCurIndex := nC
&&&&& if nCol = nCount then
&&&&& begin
&&&&& if (nCol in ColSet) then
&&&&& begin
&&&&&&& E //第1,2,3,4列不允许编辑,nCol&&&& 就是选定哪一列
&&&&& if X & 0 then
&&&&& begin
&&&&&&& W := W + X;
&&&&&&& X := 0;
&&&&& Rect := ListView1.Selected.DisplayRect(drBounds);
&&&&& Pos.X := X-ListView1.L
&&&&& Pos.Y := Rect.T
&&&&& MapWindowPoints(ListView1.Handle, Handle, Pos, 1);
&&&&& edtListview.SetBounds(Pos.X, Pos.Y, W, Rect.Bottom- Rect.Top + 3);
&&&&& edtListview.Parent := ListView1;
&&&&& edtListview.Top := ListView1.Selected.T
&&&&& edtListview.Text := ListView1.Selected.SubItems[nCurIndex-1];
&&&&& edtListview.Visible := T
&&&&& edtListview.SetF
3.Edit编辑框的改变事件 及 失去焦点事件
procedure TForm1.edtListviewChange(Sender: TObject);
& ListView1.Selected.SubItems[nCurIndex - 1] := edtListview.T
procedure TForm1.edtListviewExit(Sender: TObject);
& if edtListview.Text && '' then
&&&&& ListView1.Selected.SubItems[nCurIndex-1] := edtListview.T
& edtListview.Visible := F
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:280735次
积分:3251
积分:3251
排名:第9097名
原创:16篇
转载:192篇
评论:29条
(5)(1)(2)(1)(4)(2)(15)(12)(3)(1)(18)(20)(16)(6)(2)(16)(11)(12)(15)(33)(1)(8)(1)(3)本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 listview多布局的实现 的文章

 

随机推荐