我需要能够根据另一个(第一个)文本框中的内容填写第二个文本框,我需要在第一个文本框失去焦点时(或第二个文本框获得焦点时)执行此操作。
我无法使用OnChange
做我需要做的事情,因为它是在每次按键后触发的,但是只有在用户完成输入后才需要评估第一个文本框的值。
我该怎么做?没有OnBlur
或OnFocus
个事件处理程序,现有的OnChange
,OnClick
,OnBack
,OnNotify
似乎不会出现做这个工作。
答案 0 :(得分:0)
我认为nsDialogs不能处理这个问题,你可能不得不使用WndSubclass plug-in:
Page Custom MyPage
Page InstFiles
!include LogicLib.nsh
!include nsDialogs.nsh
!include WinMessages.nsh
!include WndSubclass.nsh
Var EditName
Var EditNick
Var NickSubProc
Function MyPage
nsDialogs::Create 1018
Pop $0
${NSD_CreateText} 7% 0 77% 12u "Joe Sixpack"
Pop $EditName
${NSD_CreateText} 7% 14u 77% 12u ""
Pop $EditNick
${WndSubclass_Subclass} $EditNick NickSubProc $NickSubProc $NickSubProc
nsDialogs::Show
FunctionEnd
Function NickSubProc
${If} $2 = ${WM_SETFOCUS}
${If} $3 = $EditName ; $EditName lost focus?
${OrIf} $3 = 0 ; or no previous focus?
${NSD_GetText} $EditName $4
${If} $4 != ""
${NSD_SetText} $EditNick "Foo $4 Bar"
SendMessage $EditNick ${EM_SETSEL} 0 -1
${EndIf}
${EndIf}
${EndIf}
FunctionEnd
Section
SectionEnd