Set Focus to a Control: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
m (Small spelling fix.)
m (FF: use <highlight-nsis> instead of a list. Added "Page author" line.)
Line 1: Line 1:
== Description ==
== Description ==
 
'''Required:''' [[InstallOptions]] or [[InstallOptionsEx]] and [[System]] plugins.
'''Required:''' [[InstallOptions]] and [[System]] plugins.


This function sets focus to a control using InstallOptions.
This function sets focus to a control using InstallOptions.


== Function Call ==
== Function Call ==
 
<highlight-nsis>
*'''Push''' ''"Page.ini"'' ;Page .ini file where the field can be found.
Push "Page.ini" ;Page .ini file where the field can be found.
*'''Push''' ''"Handle"'' ;Page handle you got when reserving the page.
Push "Handle" ;Page handle you got when reserving the page.
*'''Push''' ''"Number"'' ;Field number to set focus.
Push "Number" ;Field number to set focus.
*'''Call''' ''SetFocus''
Call SetFocus
</highlight-nsis>


== Function Code ==
== Function Code ==
 
<highlight-nsis>
<highlight-nsis>;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
; Title            : Set focus to a control
; Title            : Set focus to a control
; Short Name        : SetFocus
; Short Name        : SetFocus
Line 83: Line 83:
   Pop $3
   Pop $3


FunctionEnd</highlight-nsis>
FunctionEnd
</highlight-nsis>
 
Page author: [[User:deguix|deguix]]

Revision as of 20:10, 29 April 2005

Description

Required: InstallOptions or InstallOptionsEx and System plugins.

This function sets focus to a control using InstallOptions.

Function Call

Push "Page.ini" ;Page .ini file where the field can be found.
Push "Handle" ;Page handle you got when reserving the page.
Push "Number" ;Field number to set focus.
Call SetFocus

Function Code

;----------------------------------------------------------------------------
; Title             : Set focus to a control
; Short Name        : SetFocus
; Last Changed      : 22/Feb/2005
; Code Type         : Function
; Code Sub-Type     : One-way Input
;----------------------------------------------------------------------------
; Required          : InstallOptions and System plugins.
; Description       : Sets focus to a control using InstallOptions.
;----------------------------------------------------------------------------
; Function Call     : Push "Page.ini"
;                       Page .ini file where the field can be found.
;
;                     Push "Handle"
;                       Page handle you got when reserving the page.
;
;                     Push "Number"
;                       Field number to set focus.
;
;                     Call SetFocus
;----------------------------------------------------------------------------
; Author            : Diego Pedroso
; Author Reg. Name  : deguix
;----------------------------------------------------------------------------
 
Function SetFocus
 
  Exch $0 ; Control Number
  Exch
  Exch $2 ; Page Handle
  Exch
  Exch 2
  Exch $3 ; Page INI File
  Exch 2
  Push $1
  Push $R0
  Push $R1
  Push $R2
  Push $R3
  Push $R4
  Push $R5
 
  IntOp $1 $0 + 1199
  GetDlgItem $1 $2 $1
 
  # Send WM_SETFOCUS message
  System::Call "user32::SetFocus(i r1, i 0x0007, i,i)i"
 
  ReadINIStr $R0 "$3" "Field $0" "Left"
  ReadINIStr $R1 "$3" "Field $0" "Right"
  ReadINIStr $R3 "$3" "Field $0" "Top"
  ReadINIStr $R4 "$3" "Field $0" "Bottom"
  IntOp $R2 $R1 - $R0
  IntOp $R5 $R4 - $R3
 
  System::Call "user32::CreateCaret(i r0, i, i R2, i R5)i"
  System::Call "user32::ShowCaret(i r0)i"
 
  Pop $R5
  Pop $R4
  Pop $R3
  Pop $R2
  Pop $R1
  Pop $R0
  Pop $1
  Pop $0
  Pop $2
  Pop $3
 
FunctionEnd

Page author: deguix