回答楼上的,我是这样做的,不行。procedure TFormMain.ListViewPaybackChanging(Sender: TObject; Item: TListItem; Change: TItemChange; var AllowChange: Boolean); begin if Item = nil then Exit; if Item.Checked and (Item.SubItems[4] <> '') then AllowChange := Application.MessageBox('该卡号已有记录,是否使用新数据更新?', '确认', MB_YESNO) = ID_YES; end;
procedure TmainForm.TreeView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var ht : THitTests; begin ht := treeview1.GetHitTestInfoAt(x,y); if htOnStateIcon in ht then treeview1.GetNodeAt(x,y); end;
还有一些增强型的ListView允许按行选择是否显示CheckBox,好像RZ的就可以
实在不行还可以自己画CheckBox贴上去
弄2个勾,没勾的图片。
Item: TListItem; Change: TItemChange; var AllowChange: Boolean);
begin
if Item = nil then Exit;
if Item.Checked and (Item.SubItems[4] <> '') then
AllowChange := Application.MessageBox('该卡号已有记录,是否使用新数据更新?', '确认',
MB_YESNO) = ID_YES;
end;
1.ListView的checkbox属性是True,我用report的显示方式,每行都有checkbox的;
2.往ListView中添加记录时,每行记录的checkbox状态都事先设置好的;
3.现在的想法是,不管是用鼠标点击checkbox来改变其选中状态,还是通过键盘上下键配合空格键来改变某行的
checkbox的选中状态。当选中状态改变时我需要判断一下决定是否弹出对话框提醒一下用户!!ListView的好多事件好像都没有涉及到checkbox的状态改变的,onchange(ing)里面的状态改变好像也只是三种状态的?TItemChange = (ctText, ctImage, ctState);?
2.处理键盘事件,调用函数ChangeItemSelectStatus
3.处理鼠标点击事件,调用函数ChangeItemSelectStatus
当我们点击某个Item前面的CheckBox时,怎么才能获得当前这个Item啊?不然怎么去获取Item.SubItems[4]等信息呢?
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
ht : THitTests;
begin
ht := treeview1.GetHitTestInfoAt(x,y);
if htOnStateIcon in ht then
treeview1.GetNodeAt(x,y);
end;
结贴了,希望帮上忙没有帮上忙的朋友继续保持热心!呵呵