 
			
				21.06.2009, 18:05
			
			
			
		  
	 | 
	
		
		
		
			
			| 
			
				
				
				 Активный 
				
				
			 | 
			  | 
			
				
				
					Регистрация: 29.03.2009 
					
					
					Сообщения: 300
 
				
					Репутация: 94 
					    
				 
				
			 | 
		 
		 
		
	 | 
	
	
	
		
			
			
				 
				
			 
			 
			
		
		
		
		Процедура нажатия кнопки <Enter> на пункте с индексом N объекта класса SysListView32: 
	Код: 
	procedure SelectAndEnterItemN(LVHandle: HWND; N: Integer);
var
  hProcess: THandle;
  dwProcessID: DWORD;
  dwBytesWriten: DWORD;
  plviRemoteLVItem: PLVItem;
  lviRemoteLVItem: LV_ITEM;
begin
  if LVHandle = 0 then Exit;
  dwProcessID := 0;
  GetWindowThreadProcessId(LVHandle, @dwProcessID);
  if dwProcessID = 0 then Exit;
  hProcess := OpenProcess(PROCESS_ALL_ACCESS, True, dwProcessID);
  if hProcess = 0 then Exit;
  plviRemoteLVItem := VirtualAllocEx(hProcess, nil, SizeOf(LV_ITEM),
                                     MEM_COMMIT or MEM_TOP_DOWN, PAGE_READWRITE);
  if GetLastError <> 0 then Exit;
  ZeroMemory(@lviRemoteLVItem, SizeOf(LV_ITEM));
  with lviRemoteLVItem do
  begin
    mask := LVIF_STATE;
    iItem := N;
    state := LVIS_FOCUSED or LVIS_SELECTED;
    stateMask := LVIS_FOCUSED or LVIS_SELECTED;
  end;
  if not WriteProcessMemory(hProcess, plviRemoteLVItem, @lviRemoteLVItem,
                            SizeOf(LV_ITEM), dwBytesWriten) then Exit;
  SendMessage(LVHandle, LVM_SETITEM, 0, Integer(plviRemoteLVItem));
  PostMessage(LVHandle, WM_KEYDOWN, VK_RETURN, 0);
  VirtualFreeEx(hProcess, plviRemoteLVItem, 0, MEM_RELEASE);
  CloseHandle(hProcess);
end; 
 
В вашем случае вызов этой процедуры должен выглядеть так:
 
	Код: 
	SelectAndEnterItemN(h, StrToInt(sg.Cells[0, pos]));  
  
		
	
		
		
		
		
		
	
		
			
			
			
			
				 
			
			
			
			
		 
		
	
	
	 |