如下图,这个控件如何实现???????????????????????????????????????????????????????????????????

xiaoruirui12 2012-04-09 12:18:32



如上图,这个控件,我用SPY++看的类名是 SysListView32


百度了下,有人说是Delphi的ListVieW,于是我用了下

但是还是不能弄成图片上那种效果,

单击一行,CheckBox一样划上对勾...

请教...

如果实现图片中的效果及功能
...全文
315 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
t1122 2012-04-12
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 的回复:]



sailxia
(小帆)

学习中...............
[/Quote]

同……
cntigercat 2012-04-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
Delphi(Pascal) code

implementation

{$R *.dfm}

const
aCheck = '√';
uCheck = '×';

var
EdtCol: Integer; // 记录EDIT1在Columns中的位置,1- MaxColumns;
EdtItem: Tlistitem;

procedure TForm1.FormCreat……
[/Quote]
帆哥厉害啊
一剑飘雪 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

Delphi(Pascal) code

implementation

{$R *.dfm}

const
aCheck = '√';
uCheck = '×';

var
EdtCol: Integer; // 记录EDIT1在Columns中的位置,1- MaxColumns;
EdtItem: Tlistitem;

procedure TForm1.FormCrea……
[/Quote]


+1学习了
iamduo 2012-04-11
  • 打赏
  • 举报
回复
sailxia 越来越专业了。
wzca 2012-04-11
  • 打赏
  • 举报
回复
这个可以结贴了
菜鸟学徒 2012-04-10
  • 打赏
  • 举报
回复
ListVieW完全可以实现你现在说的这图的效果
jonathanscor 2012-04-10
  • 打赏
  • 举报
回复
山东蓝鸟贵薪 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
你看到的勾,只不过是一个数学符号“ √ ”,你可以自己处理点击事件。
[/Quote]
对,就是这个事件的问题了,楼主在操作那个表,就通过事件完成即可
icewind4096 2012-04-10
  • 打赏
  • 举报
回复
listview的自画功能,在ondrawitem事件里接管就可以了
chensikk 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
你看到的勾,只不过是一个数学符号“ √ ”,你可以自己处理点击事件。
[/Quote]

这个还真不知道,学习了
nm_wyh 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
效果图:
[/Quote]
这个效果图不错,看来还是个PS高手!
我看见佛 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
Delphi(Pascal) code

implementation

{$R *.dfm}

const
aCheck = '√';
uCheck = '×';

var
EdtCol: Integer; // 记录EDIT1在Columns中的位置,1- MaxColumns;
EdtItem: Tlistitem;

procedure TFo……
[/Quote]做的不错
Frank.WU 2012-04-10
  • 打赏
  • 举报
回复

implementation

{$R *.dfm}

const
aCheck = '√';
uCheck = '×';

var
EdtCol: Integer; // 记录EDIT1在Columns中的位置,1- MaxColumns;
EdtItem: Tlistitem;

procedure TForm1.FormCreate(Sender: TObject);
begin
ListView1.ViewStyle := vsReport;
ListView1.RowSelect := True;//必须
end;

procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
R: Trect;
Pt: TPoint;
wtmp, i: Integer;
begin
try
EdtItem := ListView1.GetItemAt(X, Y); // 根据鼠标位置,得到所对应行的LISTITEM
if EdtItem <> nil then
begin
// 根据鼠标位置,计算出是哪个 Columns.
Pt := EdtItem.Position;
wtmp := Pt.X;
for i := 0 to ListView1.Columns.Count - 1 do
if (X > wtmp) and (X < (wtmp + ListView1.Column[i].Width)) then
Break // 找到对应的Columns.
else
inc(wtmp, ListView1.Column[i].Width);
// 根据I的值,取得 Columns的对应位置。
EdtCol := i;
R := EdtItem.DisplayRect(drSelectBounds);

if (EdtCol > 0) and (i < 6) then
begin
if EdtItem.SubItems[i - 1] = aCheck then
EdtItem.SubItems[i - 1] := uCheck
else
EdtItem.SubItems[i - 1] := aCheck;
end
end;
except
//
end;
end;
Frank.WU 2012-04-10
  • 打赏
  • 举报
回复
效果图:
DelphiTeacher 2012-04-09
  • 打赏
  • 举报
回复
ListView可行。。checkboxes属性即可。。
coolingxyz 2012-04-09
  • 打赏
  • 举报
回复
你看到的勾,只不过是一个数学符号“ √ ”,你可以自己处理点击事件。
山东蓝鸟贵薪 2012-04-09
  • 打赏
  • 举报
回复
好吧,我找找先
xiaoruirui12 2012-04-09
  • 打赏
  • 举报
回复
那些对勾都是可以选择或者取消的

求源码,可行结贴
山东蓝鸟贵薪 2012-04-09
  • 打赏
  • 举报
回复
DBGrid
是可以的
kaikai_kk 2012-04-09
  • 打赏
  • 举报
回复
表格控件都能实现,比如StringGrid,ListView,DBGrid
当然3方的更不用说了

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧