2016-11-07 3 views
1

У меня возникли проблемы с кодом, который я пишу. У меня есть таблица, в которой перечислены детали сотрудника. Я пытаюсь копировать адрес электронной почты в буфер обмена, когда вы выбираете запись и щелкните правой кнопкой мыши. У меня есть следующий код:Если инструкция не работает AutoIT

#include <GUIConstantsEx.au3> 
#include <mssql.au3> 
#include <MsgBoxConstants.au3> 
#include <Array.au3> 
#include <WindowsConstants.au3> 
#include <AutoItConstants.au3> 
global $title = "E-Mail address lookup" 
global $name = InputBox($title,"Please type the name of the person you wish to find") 
global $sqlCon = _MSSQL_Con("server", "username", "password", "directory-plus") 
global $result = _MSSQL_GetRecord($sqlCon, "autoit_view","*", "WHERE cn LIKE '%" & StringStripWS($name,3) & "%'") 
if StringLen(StringStripWS($name,3)) < 1 then 
MsgBox(0, $title, "Name cannot be empty") 
Else 
Global $rset = UBound($result) - 1 
Global $ControlID = GUICreate($title, 500, 150) 
Global $idListview = GUICtrlCreateListView("Deparment|E-Mail Address|Name|Telephone Number", 10, 10, 480, 150) 
for $count = 1 to $rset step 1 
     GUICtrlCreateListViewItem($result[$count][0] & "|" & $result[$count][2] & "|" & $result[$count][1] & "|" & $result[$count][2], $idListview) 
     if MouseClick($MOUSE_CLICK_RIGHT)==1 Then 
      ClipPut($result[$count][2]) 
     EndIf 
Next 
GUISetState(@SW_SHOW) 
GUISetState() 

While 1 
Global $Msg = GUIGetMsg() 
Switch $Msg 
    Case -3, $ControlID 
     Exit 
EndSwitch 
WEnd 
EndIf 

Я бы подумал мой IF заявление в пределах цикла будет делать трюк, но, когда я запускаю мой код, он просто копирует все, что в электронной колонке адреса в последней строке когда это на самом деле я хочу, чтобы он копировал адрес электронной почты, когда вы щелкаете правой кнопкой мыши по определенной строке, но я не уверен, как это сделать.

ответ

1

Ваш код имеет две основные проблемы. Во-первых, MouseClick() не проверяет нажатие кнопки мыши, но вместо этого нажимает кнопку мыши. Поскольку посылка клика мыши будет успешной, MouseClick ($ MOUSE_CLICK_RIGHT) == 1 будет оценивать значение true. Для каждого созданного вами элемента списка вы помещаете адрес электронной почты в буфер обмена.

Вторая проблема заключается в том, что инструкция if находится в неправильном месте. Он выполняется сразу после создания каждого элемента списка.

Вместо изменить While заявление следующим

While 1 
Global $Msg = GUIGetMsg() 
Switch $Msg 
    Case -3, $ControlID 
    Exit 
    case $GUI_EVENT_SECONDARYDOWN 
    $selecteditem=StringSplit(GUICtrlRead(GUICtrlRead($idListview)),"|") 
    if @error=0 and $selecteditem[0]>1 Then 
    ClipPut($selecteditem[2]) 
    EndIf 
EndSwitch 
WEnd 

 Смежные вопросы

  • Нет связанных вопросов^_^