如何选中ListView中的一项 阿......... 已经知道项的编号,如何将其选中加亮? 谢谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ListView.SetFocus;ListView.ItemIndex := ?; 伴水老大的代码://参考如下代码~~//原理:可以通过消息LVM_SETITEMSTATE设置各项的状态,lparam参数是一个局部指针,所以需要把数据填写在该进程空间里~~uses CommCtrl;procedure SetListViewIndex(mHandle: THandle; mIndex: Integer);var vProcessId: DWORD; vProcess: THandle; vPointer: Pointer; vNumberOfBytesRead: Cardinal; vItem: TLVItem;begin GetWindowThreadProcessId(mHandle, @vProcessId); vProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE, False, vProcessId); vPointer := VirtualAllocEx(vProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE); try vItem.stateMask := LVIS_FOCUSED; vItem.state := LVIS_FOCUSED; WriteProcessMemory(vProcess, vPointer, @vItem, SizeOf(TLVItem), vNumberOfBytesRead); SendMessage(mHandle, LVM_SETITEMSTATE, mIndex, lparam(vPointer)); vItem.stateMask := LVIS_SELECTED; vItem.state := LVIS_SELECTED; WriteProcessMemory(vProcess, vPointer, @vItem, SizeOf(TLVItem), vNumberOfBytesRead); SendMessage(mHandle, LVM_SETITEMSTATE, mIndex, lparam(vPointer)); finally VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE); CloseHandle(vProcess); end;end; { SetListViewIndex }procedure TForm1.SpeedButton1Click(Sender: TObject);begin SetListViewIndex(ListView1.Handle, 0);end; 加亮把LVIS_FOCUSED; 改为 LVIS_DROPHILITED就行,对外部程序的ListView同样有效 楼上搞的太复杂了吧,^0^var iIndx: integer;begin iIndx := 3; //你想选中项的索引 ListView1.ItemIndex := iIndx; ListView1.SetFocus;end; 如何将其选中加亮???是失去焦点还知道选中的是哪个节点吗?如果是这样的话,ListView有一个属性叫HideSelection。当它为False时,失去焦点,还会知道选中的是谁! delphi有无宏替换 老子用最后 72 分抗议 jzcdelphi 散分骂人 鄙视 接分者 delphi2007安装后进入时需要注册码 安慰风三火那颗脆弱的心,散分...... delphi编写的程序如何与java编写的程序通信? 什么是编程思想??在线!! 请问:如何从query或table中查到对应表的某个字段的字段类型,谢谢 一个菜鸟问题:)(关于数据库里字符查找问题) 请推荐一下~~~ 一个关于DLL的问题,急!!!!!!!! 有没有谁能回答一个问题 怎样向https文件提交数据
ListView.ItemIndex := ?;
//参考如下代码~~
//原理:可以通过消息LVM_SETITEMSTATE设置各项的状态,lparam参数是一个局部指针,所以需要把数据填写在该进程空间里~~
uses CommCtrl;procedure SetListViewIndex(mHandle: THandle; mIndex: Integer);
var
vProcessId: DWORD;
vProcess: THandle;
vPointer: Pointer;
vNumberOfBytesRead: Cardinal;
vItem: TLVItem;
begin
GetWindowThreadProcessId(mHandle, @vProcessId);
vProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or
PROCESS_VM_WRITE, False, vProcessId);
vPointer := VirtualAllocEx(vProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT,
PAGE_READWRITE);
try
vItem.stateMask := LVIS_FOCUSED;
vItem.state := LVIS_FOCUSED;
WriteProcessMemory(vProcess, vPointer, @vItem,
SizeOf(TLVItem), vNumberOfBytesRead);
SendMessage(mHandle, LVM_SETITEMSTATE, mIndex, lparam(vPointer)); vItem.stateMask := LVIS_SELECTED;
vItem.state := LVIS_SELECTED;
WriteProcessMemory(vProcess, vPointer, @vItem,
SizeOf(TLVItem), vNumberOfBytesRead);
SendMessage(mHandle, LVM_SETITEMSTATE, mIndex, lparam(vPointer));
finally
VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
CloseHandle(vProcess);
end;
end; { SetListViewIndex }procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
SetListViewIndex(ListView1.Handle, 0);
end;
iIndx: integer;
begin
iIndx := 3; //你想选中项的索引
ListView1.ItemIndex := iIndx;
ListView1.SetFocus;
end;
是失去焦点还知道选中的是哪个节点吗?
如果是这样的话,ListView有一个属性叫HideSelection。
当它为False时,失去焦点,还会知道选中的是谁!