Что нового

Фокус GUICtrlCreateInput

kuller

Новичок
Сообщения
5
Репутация
0
Как сделать при клике по полю пропадание текста
 

veselroger

Новичок
Сообщения
16
Репутация
3
Отлавливать активный элемент через
Код:
GUIGetMsg()

Если активен этот элемент делать обработку такого события. В нём писать что-то вроде
Код:
GUICtrlSetData ( controlid, "")
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
kuller [?]
при клике по полю пропадание текста
Код:
#include <GuiConstantsEx.au3>

GUICreate("", 220, 70)
$inp1 = GUICtrlCreateInput("",  5, 10, 100, 20)
$inp2 = GUICtrlCreateInput("", 15, 35, 200, 25)
GUISetState()

Do
  $msg = GUIGetMsg(1)
  Select
    Case $msg[0] = $GUI_EVENT_CLOSE
      Exit
    Case $msg[0] = $GUI_EVENT_PRIMARYDOWN
      If $msg[3] >  5 And $msg[3] < 100 And $msg[4] > 10 And $msg[4] < 10 + 20 Then GUICtrlSetData($inp1, "")
      If $msg[3] > 15 And $msg[3] < 200 And $msg[4] > 35 And $msg[4] < 35 + 25 Then GUICtrlSetData($inp2, "")
  EndSelect
Until 0
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
еще вариант:
Код:
#include <GuiConstantsEx.au3>

GUICreate("", 220, 70)
$inp1 = GUICtrlCreateInput("", 5, 10, 100, 20)
$inp2 = GUICtrlCreateInput("", 15, 35, 200, 25)
GUISetState()

Do
	$msg = GUIGetMsg(1)
	Select
		Case $msg[0] = $GUI_EVENT_CLOSE
			Exit
		Case $msg[0] = $GUI_EVENT_PRIMARYDOWN
			$id = GUIGetCursorInfo()[4]
			If $id = $inp1 Then GUICtrlSetData($inp1, "")
			If $id = $inp2 Then GUICtrlSetData($inp2, "")
	EndSelect
Until 0
 

inx

Знающий
Сообщения
43
Репутация
12
Что-то в таком духе:
Код:
#include <GUIConstantsEx.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>

Global $OldText = "Если нажать сюда, то текст пропадет",$j = 10
Global $NewText = "Текст пропал"
GUICreate("Test", 300, 300)
GUISetState(@SW_SHOW)

For $i=1 To 6
    Assign('Input'&$i, GUICtrlCreateInput($OldText, 10, $j, 200, 20))
    $j += 30
Next

GUIRegisterMsg($WM_COMMAND, "F_WM_COMMAND")

Func F_WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
	#forceref $hWnd, $iMsg
	Local $iCode = BitShift($wParam, 16)
	For $i = 1 To 6
		Local $cntrl = "Input" & $i
		If $lParam = GUICtrlGetHandle(Eval($cntrl)) Then
			If $iCode = $EN_SETFOCUS Then
				GUICtrlSetData(Eval($cntrl), $NewText)
			ElseIf $iCode = $EN_KILLFOCUS Then
				GUICtrlSetData(Eval($cntrl), $OldText)
			EndIf
		EndIf
	Next
	Return $GUI_RUNDEFMSG
EndFunc

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd


В принципе можно использовать как подсказки/описания для полей ввода при клике в них, надо только подумать на предмет сохранения введенного пользователем.
 
Верх