1434 lines
44 KiB
Plaintext
1434 lines
44 KiB
Plaintext
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
|
||
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
*< FOXBIN2PRG: Version="1.21" SourceFile="ctl32_balloontip.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
|
||
*
|
||
*
|
||
DEFINE CLASS ctl32_balloontip AS container
|
||
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
|
||
|
||
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
||
*< OBJECTDATA: ObjPath="tmrHide" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="lblname" UniqueID="" Timestamp="" />
|
||
*< OBJECTDATA: ObjPath="tmrShow" UniqueID="" Timestamp="" />
|
||
|
||
#INCLUDE "ctl32.h"
|
||
*<DefinedPropArrayMethod>
|
||
*m: ctl32_addproperties
|
||
*m: ctl32_bindevents
|
||
*m: ctl32_create
|
||
*m: ctl32_declaredlls
|
||
*m: ctl32_seticonandtitle
|
||
*m: ctl32_setlangstrings
|
||
*m: ctlactive_assign
|
||
*m: ctlcapslockstyle_assign
|
||
*m: ctlclosebutton_assign
|
||
*m: ctlfadein_assign
|
||
*m: ctlfadeout_assign
|
||
*m: ctlhide
|
||
*m: ctlhidedelay_assign
|
||
*m: ctlhwnd_access
|
||
*m: ctlhwnd_assign
|
||
*m: ctliconlarge_assign
|
||
*m: ctlicon_assign
|
||
*m: ctllangid_assign
|
||
*m: ctllink_access
|
||
*m: ctlmargin_assign
|
||
*m: ctlmaxwidth_assign
|
||
*m: ctlopenlink
|
||
*m: ctlstyle_assign
|
||
*m: ctltext_assign
|
||
*m: ctltitle_assign
|
||
*m: ctlvisible_assign
|
||
*m: evthandler_form_moved
|
||
*m: evthandler_form_resize
|
||
*m: evthandler_form_wm_keydown
|
||
*m: evthandler_host_wm_lbuttondown
|
||
*m: evthandler_host_wm_notify
|
||
*m: evthandler_screen_moved
|
||
*p: ctlabout
|
||
*p: ctlactive
|
||
*p: ctlcapslockstyle
|
||
*p: ctlclosebutton
|
||
*p: ctlcontrol
|
||
*p: ctlfadein
|
||
*p: ctlfadeout
|
||
*p: ctlhidedelay
|
||
*p: ctlhwnd && Specifies the Window handle of the Window.
|
||
*p: ctlicon
|
||
*p: ctliconlarge
|
||
*p: ctllangid
|
||
*p: ctlleft
|
||
*p: ctllink
|
||
*p: ctllinklabel
|
||
*p: ctllinkurl
|
||
*p: ctlmargin && Sets the top, left, bottom, and right margins for a ToolTip window. A margin is the distance, in pixels, between the ToolTip window border and the text contained within the ToolTip window.
|
||
*p: ctlmaxwidth && Sets the maximum width for a ToolTip window.
|
||
*p: ctlpositionstyle
|
||
*p: ctlstyle && 0 = Balloon; 1 = Rectangular; 2 = Rectangular with no borders
|
||
*p: ctltext
|
||
*p: ctltitle
|
||
*p: ctltop
|
||
*p: ctlversion
|
||
*p: ctlvisible
|
||
*p: _memberdata && XML Metadata for customizable properties
|
||
*</DefinedPropArrayMethod>
|
||
|
||
*<PropValue>
|
||
BackColor = 140,200,200
|
||
ctlabout = ctl32_scontainer - Carlos Alloatti.
|
||
ctlactive = .T.
|
||
ctlcapslockstyle = .F.
|
||
ctlclosebutton = .F.
|
||
ctlcontrol =
|
||
ctlfadein = .F.
|
||
ctlfadeout = .F.
|
||
ctlhidedelay = 5000
|
||
ctlhwnd = 0
|
||
ctlicon = 0
|
||
ctliconlarge = .F.
|
||
ctllangid = 0
|
||
ctlleft = 0
|
||
ctllink =
|
||
ctllinklabel =
|
||
ctllinkurl =
|
||
ctlmargin = 0
|
||
ctlmaxwidth = 256
|
||
ctlpositionstyle = 1
|
||
ctlstyle = 1
|
||
ctltext = BalloonTip text
|
||
ctltitle = BalloonTip title
|
||
ctltop = 0
|
||
ctlversion = 20061010
|
||
ctlvisible = .F.
|
||
ForeColor = 255,0,245
|
||
Height = 48
|
||
Name = "ctl32_balloontip"
|
||
Visible = .F.
|
||
Width = 120
|
||
*</PropValue>
|
||
|
||
ADD OBJECT 'lblname' AS label WITH ;
|
||
AutoSize = .T., ;
|
||
BackStyle = 0, ;
|
||
Caption = "ctl32_balloontip", ;
|
||
FontName = "Tahoma", ;
|
||
FontSize = 8, ;
|
||
ForeColor = 0,0,128, ;
|
||
Height = 15, ;
|
||
Left = 6, ;
|
||
Name = "lblname", ;
|
||
Top = 3, ;
|
||
Width = 77
|
||
*< END OBJECT: BaseClass="label" />
|
||
|
||
ADD OBJECT 'tmrHide' AS timer WITH ;
|
||
Enabled = .F., ;
|
||
Height = 23, ;
|
||
Interval = 0, ;
|
||
Left = 120, ;
|
||
Name = "tmrHide", ;
|
||
Top = 0, ;
|
||
Width = 23
|
||
*< END OBJECT: BaseClass="timer" />
|
||
|
||
ADD OBJECT 'tmrShow' AS ctl32_balloontip_show WITH ;
|
||
Enabled = .F., ;
|
||
Interval = 200, ;
|
||
Left = 192, ;
|
||
Name = "tmrShow"
|
||
*< END OBJECT: ClassLib="ctl32_balloontip.vcx" BaseClass="timer" />
|
||
|
||
HIDDEN PROCEDURE ctl32_addproperties
|
||
*!* Here we add properties to the class that will be used internally
|
||
|
||
*!* This will hold an object reference to a custom icon to display in balloontip
|
||
This.AddProperty([oIcon], Null)
|
||
|
||
*!* Add oToolInfo property with TOOLINFO structure value
|
||
This.AddProperty([oToolInfo], Newobject([_ToolInfo], [ctl32_structs.vcx]))
|
||
|
||
This.AddProperty([oRect], Newobject([_Rect], [ctl32_structs.vcx]))
|
||
|
||
*!* Add Macros object
|
||
This.AddProperty([oMacros], Newobject([_Macros], [ctl32_structs.vcx]))
|
||
|
||
*!* Used by evtHandler_WM_NOTIFY
|
||
This.Addproperty([loNmhdr],Newobject([_Nmhdr], [ctl32_structs.vcx]))
|
||
|
||
*!* Stores the hWnd of the host window
|
||
This.AddProperty([nHosthWnd], This.oUtil._HostHWnd())
|
||
|
||
*!* Indicates we are in the creation stage
|
||
This.AddProperty([lCreating], FALSE)
|
||
|
||
*!* Stores the value of VFP window procedure
|
||
This.Addproperty([nVFPWndProc], This.oUtil._VFPWndProc())
|
||
|
||
*!* Stores hWnd of Windows common control created by the class
|
||
This.AddProperty([nCtlHwnd], 0)
|
||
|
||
*!* These 2 properties hold the title and text for the capslock balloontip
|
||
This.AddProperty([cLangTitle], [])
|
||
This.AddProperty([cLangText], [])
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctl32_bindevents
|
||
|
||
Bindevent(Thisform, [RESIZE], This, [EvtHandler_Form_Resize], 1)
|
||
Bindevent(Thisform, [MOVED], This, [EvtHandler_Form_Moved], 1)
|
||
Bindevent(_Screen, [MOVED], This, [EvtHandler_Screen_Moved], 1)
|
||
|
||
Bindevent(Thisform.HWnd, WM_KEYDOWN, This, [EvtHandler_Form_WM_KEYDOWN], 1)
|
||
Bindevent(This.nHosthWnd, WM_LBUTTONDOWN, This, [EvtHandler_Host_WM_LBUTTONDOWN], 1)
|
||
|
||
*!* Catch clicks in links
|
||
Bindevent(This.nHosthWnd, WM_NOTIFY, This, [EvtHandler_Host_WM_NOTIFY], 1)
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctl32_create
|
||
*!* This procedure creates the Window common control and sets its initial properties
|
||
|
||
With This
|
||
|
||
*!* Destroy current tooltip window if present
|
||
If .nCtlHwnd <> 0 Then
|
||
DestroyWindow(.nCtlHwnd)
|
||
.nCtlHwnd = 0
|
||
Endif
|
||
|
||
.lCreating = TRUE
|
||
|
||
*!* Set CreateWindowEx parameters
|
||
m.dwExStyle = 0
|
||
m.lpClassName = TOOLTIPS_CLASSA
|
||
m.lpWindowName = []
|
||
|
||
m.dwStyle = Bitor(WS_POPUP, TTS_NOANIMATE)
|
||
|
||
If .ctlStyle = CON_STYLE_BALLOON
|
||
m.dwStyle = Bitor(m.dwStyle, TTS_BALLOON)
|
||
Endif
|
||
|
||
If .ctlCloseButton = TRUE Then
|
||
m.dwStyle = Bitor(m.dwStyle, TTS_CLOSE)
|
||
Endif
|
||
|
||
If .ctlFadeIn = FALSE Then
|
||
m.dwStyle = Bitor(m.dwStyle, TTS_NOFADE)
|
||
Endif
|
||
|
||
m.hWndParent = 0
|
||
|
||
m.hMenu = 0
|
||
m.hInstance = This.oUtil._HInstance()
|
||
m.lpParam = 0
|
||
|
||
.nCtlHwnd = CreateWindowEx( ;
|
||
m.dwExStyle, ;
|
||
m.lpClassName, ;
|
||
m.lpWindowName, ;
|
||
m.dwStyle, ;
|
||
CW_USEDEFAULT, ;
|
||
CW_USEDEFAULT, ;
|
||
CW_USEDEFAULT, ;
|
||
CW_USEDEFAULT, ;
|
||
m.hWndParent, ;
|
||
m.hMenu, ;
|
||
m.hInstance, ;
|
||
m.lpParam)
|
||
|
||
*!* Add TOOL
|
||
.oToolInfo._uFlags = Bitor(TTF_IDISHWND, TTF_TRACK, TTF_TRANSPARENT, TTF_PARSELINKS, TTF_BITMAP)
|
||
|
||
If .ctlStyle <> CON_STYLE_BALLOON Then && Not balloon style
|
||
.oToolInfo._uFlags = Bitor(.oToolInfo._uFlags, TTF_ABSOLUTE)
|
||
Endif
|
||
|
||
.oToolInfo._hWnd = This.nHosthWnd
|
||
.oToolInfo._hInst = 0
|
||
.oToolInfo._uId = This.nHosthWnd
|
||
.oToolInfo._Left = 0
|
||
.oToolInfo._Top = 0
|
||
.oToolInfo._Right = 0
|
||
.oToolInfo._Bottom = 0
|
||
|
||
.oToolInfo._lpszTextString = 0h00
|
||
.oToolInfo._lParam = 0
|
||
|
||
m.lcToolInfo = .oToolInfo._Struct
|
||
|
||
SendMessageC(.nCtlHwnd, TTM_ADDTOOLA, 0, @m.lcToolInfo)
|
||
|
||
This.ctlIcon = This.ctlIcon && also assigns _tiptitle
|
||
This.ctlText = This.ctlText
|
||
This.ctlHideDelay = This.ctlHideDelay
|
||
This.ctlMaxWidth = This.ctlMaxWidth
|
||
This.ctlMargin = This.ctlMargin
|
||
|
||
If .ctlStyle = CON_STYLE_NOBORDER Then
|
||
*!* Borders have no effect on Vista
|
||
If This.oUtil._OSVersion() < CON_OS_WINVISTA Then
|
||
m.dwStyle = GetWindowLong(.ctlHWnd, GWL_EXSTYLE)
|
||
|
||
m.dwStyle = Bitclear(m.dwStyle, CON_BIT_WS_BORDER)
|
||
|
||
*!* Have to remove TTS_CLOSE button:
|
||
If .ctlCloseButton = FALSE Then
|
||
m.dwStyle = Bitclear(m.dwStyle, CON_BIT_TTS_CLOSE)
|
||
Endif
|
||
|
||
SetWindowLong(.ctlHWnd, GWL_STYLE, m.dwStyle)
|
||
|
||
*!* This makes the window "refresh"
|
||
SetWindowPos(.ctlHWnd, ;
|
||
0, ;
|
||
0, ;
|
||
0, ;
|
||
0, ;
|
||
0, ;
|
||
BITOR(SWP_NOMOVE, SWP_NOSIZE, SWP_NOZORDER, SWP_NOACTIVATE, SWP_FRAMECHANGED))
|
||
Endif
|
||
Endif
|
||
|
||
.lCreating = FALSE
|
||
Endwith
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctl32_declaredlls
|
||
*!* This procedure registers the Windows API functions used by the class
|
||
*!* An array of existing declared API functions is created and checked to
|
||
*!* prevent re-declaration of API functions.
|
||
*!* When a function is used with an ALIAS, it is first declared with an ALIAS
|
||
*!* equal to the original name, and then declared again with the desired alias.
|
||
*!* This is because of a bug in VFP:
|
||
|
||
*!* If you declare an API function with an alias, and later declare the same api
|
||
*!* function without an alias, the first aliased declaration dissapears.
|
||
|
||
*!* We create an empty array first because if there are no API declarations
|
||
*!* adlls will not create the array and ascan will fail
|
||
|
||
Local Array laDeclaredDlls(1,3)
|
||
Local lnLen
|
||
m.lnLen = Adlls(m.laDeclaredDlls)
|
||
|
||
*!* win32api is used instead of the library name, check these:
|
||
*!* blogs.msdn.com/calvin_hsia/archive/2006/04/27/585305.aspx
|
||
*!* blogs.msdn.com/calvin_hsia/archive/2006/04/24/582479.aspx
|
||
*!* "User32.dll, Gdi32.dll, Kernel32.dll , Advapi32.dll and Mpr.dll are searched (in that order)"
|
||
|
||
If Ascan(m.laDeclaredDlls, [CallWindowProc], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer CallWindowProc In win32api ;
|
||
Integer lpPrevWndFunc,;
|
||
Integer HWnd,;
|
||
Integer msg,;
|
||
Integer wParam,;
|
||
Integer Lparam
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [ClientToScreen], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer ClientToScreen In win32api ;
|
||
Integer HWnd, ;
|
||
String @ lpPoint
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [CreateWindowEx], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer CreateWindowEx In win32api As CreateWindowEx ;
|
||
Integer dwExStyle,;
|
||
String lpClassName,;
|
||
String lpWindowName,;
|
||
Integer dwStyle,;
|
||
Integer x,;
|
||
Integer Y,;
|
||
Integer nWidth,;
|
||
Integer nHeight,;
|
||
Integer hWndParent,;
|
||
Integer hMenu,;
|
||
Integer hInstance,;
|
||
Integer lpParam
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [DestroyWindow], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer DestroyWindow In win32api As DestroyWindow ;
|
||
Integer HWnd
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [GetCaretPos], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer GetCaretPos In win32api ;
|
||
String @ lpPoint
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [GetCursorPos], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer GetCursorPos In win32api ;
|
||
String @ lpPoint
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [GetKeyState], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer GetKeyState In win32api ;
|
||
Integer nVirtKey
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [GetLocaleInfo], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer GetLocaleInfo In win32api ;
|
||
Integer Locale, ;
|
||
Integer LCType, ;
|
||
String lpLCData, ;
|
||
Integer cchData
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, "GetSysColor", 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer GetSysColor In win32api ;
|
||
Integer nIndex
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [GetWindowLong], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer GetWindowLong In win32api As GetWindowLong;
|
||
Integer HWnd, ;
|
||
Integer nIndex
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [GetWindowRect], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer GetWindowRect In win32api ;
|
||
integer HWnd,;
|
||
string @ lcRect
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [ScreenToClient], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer ScreenToClient In win32api ;
|
||
Integer HWnd,;
|
||
string @ lpPoint
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [SendMessage], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer SendMessage In win32api As SendMessage ;
|
||
Integer HWnd,;
|
||
Integer Msg,;
|
||
Integer wParam,;
|
||
Integer Lparam
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [SendMessageC], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer SendMessage In win32api As SendMessageC ;
|
||
Integer HWnd,;
|
||
Integer Msg,;
|
||
Integer wParam,;
|
||
String @ Lparam
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [SendMessageN], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer SendMessage In win32api As SendMessageN ;
|
||
Integer HWnd,;
|
||
Integer Msg,;
|
||
Integer wParam,;
|
||
Integer Lparam
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [SetWindowLong], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer SetWindowLong In win32api ;
|
||
Integer HWnd,;
|
||
Integer nIndex,;
|
||
Integer dwNewLong
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [SetWindowPos], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer SetWindowPos In win32api As SetWindowPos;
|
||
Integer HWnd,;
|
||
Integer hWndInsertAfter,;
|
||
Integer x,;
|
||
Integer Y,;
|
||
Integer cx,;
|
||
Integer cy,;
|
||
Integer wFlags
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [ShellExecute], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer ShellExecute In shell32 ;
|
||
Integer HWnd,;
|
||
String @ lpOperation,;
|
||
String @ lpFile,;
|
||
String @ lpParameters,;
|
||
String @ lpDirectory,;
|
||
Integer nShowCmd
|
||
Endif
|
||
|
||
*!* We must prevent Beautify from changing the case of "ShowWindow" since its also a VFP keyword
|
||
*#beautify keyword_nochange
|
||
If Ascan(m.laDeclaredDlls, [ShowWindow], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer ShowWindow In win32api As ShowWindow ;
|
||
Integer HWnd,;
|
||
Integer nCmdShow
|
||
Endif
|
||
|
||
If Ascan(m.laDeclaredDlls, [_ShowWindow], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer ShowWindow In win32api As _ShowWindow ;
|
||
Integer HWnd,;
|
||
Integer nCmdShow
|
||
Endif
|
||
*#beautify
|
||
|
||
If Ascan(m.laDeclaredDlls, [WindowFromPoint], 1, m.lnLen , 2, 15) = 0
|
||
Declare Integer WindowFromPoint In win32api;
|
||
Integer xPoint,;
|
||
Integer yPoint
|
||
Endif
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctl32_seticonandtitle
|
||
Local lnIcon, lcText
|
||
|
||
m.lnIcon = This.ctlIcon
|
||
|
||
*!* Check if a large icon is desired
|
||
If This.oUtil._OSVersion() >= CON_OS_WINVISTA And This.ctlIconLarge = TRUE Then
|
||
If Between(m.lnIcon, 1, 3) Then
|
||
m.lnIcon = m.lnIcon + 3
|
||
Endif
|
||
Endif
|
||
|
||
m.lctitle = Alltrim(Transform(This.ctlTitle, [@T]))
|
||
|
||
If Empty(m.lctitle) And This.ctlIcon > 0 Then
|
||
m.lctitle = [ ]
|
||
Endif
|
||
|
||
m.lctitle = m.lctitle + 0h00
|
||
|
||
SendMessageC(This.nCtlHwnd, TTM_SETTITLEA, m.lnIcon, @m.lctitle)
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctl32_setlangstrings
|
||
*!* http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_34rz.asp
|
||
*!* http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_8xo3.asp
|
||
*!* http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_61df.asp
|
||
*!* Sets the value of strings that are language dependant.
|
||
|
||
Local lcLocaleInfo As Character, ;
|
||
lnCharsRet As Number, ;
|
||
lcTitle As Character ;
|
||
lcText As Character, ;
|
||
lnLangID As Number, ;
|
||
lnPrimaryLangID As Number, ;
|
||
lnSubLangID As Number
|
||
|
||
|
||
If This.ctlLangID = 0x0 Then
|
||
m.lcLocaleInfo = Replicate(Chr(0), 5)
|
||
m.lnCharsRet = GetLocaleInfo(LOCALE_SYSTEM_DEFAULT , LOCALE_ILANGUAGE, @m.lcLocaleInfo, Len(m.lcLocaleInfo))
|
||
m.lcLocaleInfo = Left(m.lcLocaleInfo, m.lnCharsRet -1) && remove ending chr(0)
|
||
m.lnLangID = Evaluate([0x] + m.lcLocaleInfo)
|
||
Else
|
||
*!* If ctlLangID is <> 0 then it overrides the system locale language
|
||
m.lnLangID = This.ctlLangID
|
||
Endif
|
||
|
||
|
||
m.lnPrimaryLangID = This.oMacros._PRIMARYLANGID(m.lnLangID)
|
||
m.lnSubLangID = This.oMacros._SUBLANGID(m.lnLangID)
|
||
*!* m.lnLangID = This.oMacros._MAKELANGID(m.lnPrimaryLangID, m.lnSubLangID)
|
||
*!* ?Transform(lnPrimaryLangID, [@0]), Transform(m.lnSubLangID, [@0]), Transform(m.lnLangID, [@0])
|
||
|
||
Do Case
|
||
Case m.lnPrimaryLangID = LANG_BASQUE && 0x2d
|
||
m.lcTitle = "Blok Maius piztuta dago"
|
||
m.lcText = "Blok Maius piztuta edukiz gero, zure pasahitza behar ez den bezala sar dezakezu.\r\n\r\nSakatu Blok Maius piztuta egon ez dadila zure pasahitza sartu baino lehen."
|
||
|
||
Case m.lnPrimaryLangID = LANG_CATALAN && 0x03
|
||
m.lcTitle = "La tecla Bloq Maj est<73> activada"
|
||
m.lcText = "Si teniu la tecla Bloq Maj activada, podr<64>eu introduir la contrasenya incorrectament.\r\n\r\nHaur<75>eu de pr<70>mer Bloq Maj per desactivar-la abans d'escriure la vostra contrasenya."
|
||
|
||
Case m.lnPrimaryLangID = LANG_CROATIAN And m.lnSubLangID = SUBLANG_CROATIAN_CROATIA && 0x1a 0x01
|
||
m.lcTitle = "Caps Lock je ukljucen"
|
||
m.lcText = "Ako je ukljucen Caps Lock mo<6D>e se dogoditi da upi<70>ete krivu lozinku.\r\n\r\nTrebate pritisnuti Caps Lock kako biste ga iskljucili prije unosa lozinke."
|
||
|
||
Case m.lnPrimaryLangID = LANG_CZECH && 0x05
|
||
m.lcTitle = "Re<52>im Caps Lock je aktivn<76>"
|
||
m.lcText = "Zapnut<75> re<72>imu Caps Lock mu<6D>e zpusobit nespr<70>vn<76> zad<61>n<EFBFBD> hesla.\r\n\r\nPred zad<61>n<EFBFBD>m hesla vypnete re<72>im Caps Lock stisknut<75>m kl<6B>vesy Caps Lock."
|
||
|
||
Case m.lnPrimaryLangID = LANG_DANISH && 0x06
|
||
m.lcTitle = "Caps Lock er sl<73>et til"
|
||
m.lcText = "Hvis Caps Lock er sl<73>et til, kan det det medf<64>re, at adgangskoden bliver skrevet forkert.\r\n\r\nDu b<>r trykke p<> Caps Lock for at sl<73> den fra, f<>r du skriver adgangskoden."
|
||
|
||
Case m.lnPrimaryLangID = LANG_DUTCH && 0x13
|
||
m.lcTitle = "De toets CapsLock staat aan"
|
||
m.lcText = "Als de toets CapsLock is ingeschakeld, wordt het wachtwoord mogelijk onjuist ingevoerd.\r\n\r\nDruk op CapsLock alvorens het wachtwoord in te voeren."
|
||
|
||
Case m.lnPrimaryLangID = LANG_ENGLISH && 0x09
|
||
m.lcTitle = "Caps Lock is On"
|
||
m.lcText = "Having Caps Lock on may cause you to enter your password incorrectly.\r\n\r\nYou should press Caps Lock to turn it off before entering your password."
|
||
|
||
Case m.lnPrimaryLangID = LANG_ESTONIAN && 0x25
|
||
m.lcTitle = "Suurt<72>helukk on sisse l<>litatud"
|
||
m.lcText = "Sissel<65>litatud suurt<72>helukk v<>ib p<>hjustada teie parooli vale sisestamise.\r\n\r\nEnne parooli sisestamist peaksite suurt<72>heluku klahvi Caps Lock vajutamisega v<>lja l<>litama."
|
||
|
||
Case m.lnPrimaryLangID = LANG_FINNISH && 0x0b
|
||
m.lcTitle = "Caps Lock on p<><70>ll<6C>"
|
||
m.lcText = "Jos Caps Lock on p<><70>ll<6C> salasanan isot ja pienet kirjaimet saattavat vaihtua.\r\n\r\nOta Caps Lock pois p<><70>lt<6C> ennen salasanan kirjoittamista."
|
||
|
||
Case m.lnPrimaryLangID = LANG_FRENCH && 0x0c
|
||
m.lcTitle = "La touche Verr. Maj. est active"
|
||
m.lcText = "La touche Verr. Maj. est enfonc<6E>e, ce qui peut fausser la saisie de votre mot de passe.\r\n\r\nAppuyez sur Verr. Maj. pour la d<>sactiver, puis entrez votre mot de passe."
|
||
|
||
Case m.lnPrimaryLangID = LANG_GALICIAN && 0x56
|
||
m.lcTitle = "A tecla Bloq Mai<61>s est<73> activada"
|
||
m.lcText = "Coa tecla Bloq Mai<61>s activada <20> prob<6F>bel que introduza o seu contrasinal de forma incorrecta.\r\n\r\nPr<50>maa para a desactivar antes de introducir o seu contrasinal."
|
||
|
||
Case m.lnPrimaryLangID = LANG_GERMAN && 0x07
|
||
m.lcTitle = "Feststelltaste ist aktiviert"
|
||
m.lcText = "Das Kennwort wird eventuell falsch eingegeben, wenn die Feststelltaste aktiviert ist.\r\n\r\nSie sollten die Feststelltaste deaktivieren, bevor Sie ein Kennwort eingeben."
|
||
|
||
Case m.lnPrimaryLangID = LANG_HUNGARIAN && 0x0e
|
||
m.lcTitle = "A Caps Lock be van kapcsolva"
|
||
m.lcText = "Ha be van kapcsolva a Caps Lock, elofordulhat, hogy hib<69>san adja meg a jelsz<73>t.\r\n\r\nA jelsz<73> be<62>r<EFBFBD>sa elott <20>rdemes kikapcsolnia a Caps Lock billentyu megnyom<6F>s<EFBFBD>val."
|
||
|
||
Case m.lnPrimaryLangID = LANG_ICELANDIC && 0x0f
|
||
m.lcTitle = "Stafal<61>s er virkur"
|
||
m.lcText = "Ef stafal<61>s er virkur g<>ti a<>gangsor<6F> veri<72> f<>rt inn <20> rangan h<>tt.\r\n\r\nSty<74>ja <20>tti <20> stafal<61>s til a<> gera hann <20>virkan <20><>ur en a<>gangsor<6F>i<EFBFBD> er f<>rt inn."
|
||
|
||
Case m.lnPrimaryLangID = LANG_INDONESIAN && 0x21
|
||
m.lcTitle = "Caps Lock dalam posisi On"
|
||
m.lcText = "Bila Caps Lock dalam posisi ON, ada kemungkinan Anda keliru memasukkan sandi.\r\n\r\nAnda harus menekan Caps Lock untuk mematikannya sebelum memasukkan sandi."
|
||
|
||
Case m.lnPrimaryLangID = LANG_ITALIAN && 0x10
|
||
m.lcTitle = "BLOC MAIUSC - Attivato"
|
||
m.lcText = "Se il tasto BLOC MAIUSC <20> attivo pu<70> accadere di digitare la password in modo errato.\r\n\r\nPremere il tasto BLOC MAIUSC per disattivarlo prima di digitare la password."
|
||
|
||
Case m.lnPrimaryLangID = LANG_LATVIAN && 0x26
|
||
m.lcTitle = "Ir ieslegts taustin<69> Caps Lock"
|
||
m.lcText = "Ja ir ieslegts taustin<69> Caps Lock, parole, iespejams, tiks ievadita nepareizi.\r\n\r\nLai to izslegtu, pirms paroles ievadi<64>anas taustin<69> Caps Lock janospie<69>."
|
||
|
||
Case m.lnPrimaryLangID = LANG_LITHUANIAN && 0x27
|
||
m.lcTitle = "Ijungtas mygtukas Caps Lock"
|
||
m.lcText = "Jei mygtukas Caps Lock yra ijungtas, del to galite neteisingai ivesti slapta<74>odi.\r\n\r\nPrie<69> ivesdami slapta<74>odi spustelekite mygtuka Caps Lock, kad ji i<>jungtumete."
|
||
|
||
Case m.lnPrimaryLangID = LANG_MALAY && 0x3e
|
||
m.lcTitle = "Caps Lock Dipasang"
|
||
m.lcText = "Penggunaan Caps Lock mungkin akan menyebabkan anda memasukkan kata laluan yang salah.\r\n\r\nAnda sepatutnya menekan Caps Lock untuk mematikannya sebelum memasukkan kata laluan."
|
||
|
||
Case m.lnPrimaryLangID = LANG_NORWEGIAN && 0x14
|
||
m.lcTitle = "Caps Lock er p<>"
|
||
m.lcText = "Hvis Caps Lock er p<>, kan det f<>re til at passord skrives inn feil.\r\n\r\nPass p<> at Caps Lock er sl<73>tt av f<>r du skriver inn passordet."
|
||
|
||
Case m.lnPrimaryLangID = LANG_POLISH && 0x15
|
||
m.lcTitle = "Klawisz Caps Lock jest wlaczony"
|
||
m.lcText = "Wpisywanie przy wlaczonym klawiszu Caps Lock moze spowodowac niepoprawne wprowadzenie hasla.\r\n\r\nPrzed wprowadzeniem hasla nacisnij klawisz Caps Lock, aby go wylaczyc."
|
||
|
||
Case m.lnPrimaryLangID = LANG_PORTUGUESE And m.lnSubLangID = SUBLANG_PORTUGUESE_BRAZILIAN && 0x16 0x01
|
||
m.lcTitle = "Caps Lock est<73> ativada"
|
||
m.lcText = "Se Caps Lock estiver ativado, isso pode fazer com que voc<6F> digite a senha incorretamente.\r\n\r\nVoc<6F> deve pressionar a tecla Caps Lock para desativ<69>-la antes de digitar a senha."
|
||
|
||
Case m.lnPrimaryLangID = LANG_PORTUGUESE And m.lnSubLangID = SUBLANG_PORTUGUESE_PORTUGAL && 0x16 0x02
|
||
m.lcTitle = "Caps Lock est<73> ligado"
|
||
m.lcText = "Ter Caps Lock ligado pode fazer com que introduza incorrectamente a palavra-passe.\r\n\r\nDeve premir Caps Lock para desactivar antes de introduzir a sua palavra-passe."
|
||
|
||
Case m.lnPrimaryLangID = LANG_ROMANIAN && 0x18
|
||
m.lcTitle = "Tasta Caps Lock este activata"
|
||
m.lcText = "Daca tasta Caps Lock este activata exista posibilitatea sa introduceti parola incorect.\r\n\r\nApasati tasta Caps Lock pentru a o dezactiva <20>nainte de a introduce parola."
|
||
|
||
Case m.lnPrimaryLangID = LANG_SERBIAN And m.lnSubLangID = SUBLANG_SERBIAN_LATIN && 0x1a 0x02
|
||
m.lcTitle = "Taster Caps Lock je ukljucen"
|
||
m.lcText = "Ako je ukljucen taster Caps Lock, mo<6D>e se desiti da unesete pogre<72>nu lozinku.\r\n\r\nTrebalo bi da pritisnete taster Caps Lock da biste ga iskljucili pre uno<6E>enja lozinke."
|
||
|
||
Case m.lnPrimaryLangID = LANG_SLOVAK && 0x1b
|
||
m.lcTitle = "Kl<4B>ves Caps Lock je zapnut<75>"
|
||
m.lcText = "Ak je zapnut<75> kl<6B>ves Caps Lock, heslo m<><6D>e byt zadan<61> nespr<70>vne.\r\n\r\nPred zadan<61>m hesla vypnite kl<6B>ves Caps Lock."
|
||
|
||
Case m.lnPrimaryLangID = LANG_SLOVENIAN && 0x24
|
||
m.lcTitle = "Tipka Caps Lock je vkljucena"
|
||
m.lcText = "Ce je vkljucena tipka Caps Lock, se lahko zgodi, da boste nepravilno vnesli svoje geslo.\r\n\r\nPreden vnesete geslo, pritisnite tipko Caps Lock, da izklopite funkcijo."
|
||
|
||
Case m.lnPrimaryLangID = LANG_SPANISH && 0x0a
|
||
m.lcTitle = "Bloq May<61>s activado"
|
||
m.lcText = "Si tiene activada la tecla Bloq May<61>s es posible que escriba incorrectamente su contrase<73>a.\r\n\r\nPresione la tecla Bloq May<61>s para desactivarla antes de escribir su contrase<73>a."
|
||
|
||
Case m.lnPrimaryLangID = LANG_SWEDISH && 0x1d
|
||
m.lcTitle = "Caps Lock <20>r aktiverat"
|
||
m.lcText = "Om Caps Lock <20>r aktiverat kanske du skriver in ditt l<>senord felaktigt.\r\n\r\nInaktivera Caps Lock innan du anger ditt l<>senord."
|
||
|
||
Case m.lnPrimaryLangID = LANG_TURKISH && 0x1f
|
||
m.lcTitle = "Caps Lock A<>ik"
|
||
m.lcText = "A<>ik Caps Lock parolanizi yanlis girmenize sebep olabilir.\r\n\r\nParolanizi girmeden <20>nce kapatmak i<>in Caps Lock tusuna basmalisiniz."
|
||
|
||
Otherwise
|
||
m.lcTitle = "Caps Lock is On"
|
||
m.lcText = "Having Caps Lock on may cause you to enter your password incorrectly.\r\n\r\nYou should press Caps Lock to turn it off before entering your password."
|
||
|
||
Endcase
|
||
|
||
This.cLangTitle = m.lcTitle
|
||
This.cLangText = Strtran(m.lcText, [\r\n], CRLF)
|
||
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlactive_assign
|
||
Lparameters vNewVal
|
||
|
||
If Type([m.vNewVal]) = T_NUMERIC Then
|
||
If m.vNewVal = 0 Then
|
||
m.vNewVal = FALSE
|
||
Else
|
||
m.vNewVal = TRUE
|
||
Endif
|
||
Endif
|
||
|
||
This.ctlActive = m.vNewVal
|
||
|
||
If This.nCtlHwnd = 0 Then
|
||
Return
|
||
Endif
|
||
|
||
If This.ctlCapsLockStyle And This.ctlActive And Capslock() Then
|
||
This.ctlVisible = TRUE
|
||
Endif
|
||
|
||
*!* Hide if not Active
|
||
If This.ctlActive = FALSE Then
|
||
This.ctlVisible = FALSE
|
||
Else
|
||
SendMessage(This.nCtlHwnd, TTM_ACTIVATE, 1, 0)
|
||
Endif
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlcapslockstyle_assign
|
||
Lparameters vNewVal
|
||
|
||
If Type([m.vNewVal]) = T_NUMERIC Then
|
||
If m.vNewVal = 0 Then
|
||
m.vNewVal = FALSE
|
||
Else
|
||
m.vNewVal = TRUE
|
||
Endif
|
||
Endif
|
||
|
||
This.ctlCapsLockStyle = m.vNewVal
|
||
|
||
If This.ctlCapsLockStyle Then
|
||
This.ctlVisible = FALSE
|
||
*!* Set HideDelay
|
||
This.ctlHideDelay = 5000
|
||
|
||
*!* Set TipPositionStyle to CARET
|
||
This.ctlPositionStyle = CON_BTPOS_CARET
|
||
|
||
*!* Set Icon
|
||
This.ctlIcon = TTI_WARNING
|
||
|
||
*!* Set title and text
|
||
This.ctlTitle = This.cLangTitle
|
||
This.ctlText = This.cLangText
|
||
Else
|
||
This.ctlVisible = FALSE
|
||
Endif
|
||
|
||
If This.ctlCapsLockStyle And This.ctlActive And Capslock() Then
|
||
This.ctlVisible = TRUE
|
||
Endif
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlclosebutton_assign
|
||
Lparameters vNewVal
|
||
|
||
If Type([m.vNewVal]) = T_NUMERIC Then
|
||
If m.vNewVal = 0 Then
|
||
m.vNewVal = FALSE
|
||
Else
|
||
m.vNewVal = TRUE
|
||
Endif
|
||
ENDIF
|
||
|
||
This.ctlCloseButton = m.vNewVal
|
||
|
||
*!* Recreate BalloonTip
|
||
This.ctl32_Create()
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlfadein_assign
|
||
Lparameters vNewVal
|
||
|
||
If Type([m.vNewVal]) = T_NUMERIC Then
|
||
If m.vNewVal = 0 Then
|
||
m.vNewVal = FALSE
|
||
Else
|
||
m.vNewVal = TRUE
|
||
Endif
|
||
Endif
|
||
|
||
This.ctlFadeIn = m.vNewVal
|
||
|
||
*!* Recreate BalloonTip
|
||
This.ctl32_Create()
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlfadeout_assign
|
||
Lparameters vNewVal
|
||
|
||
If Type([m.vNewVal]) = T_NUMERIC Then
|
||
If m.vNewVal = 0 Then
|
||
m.vNewVal = FALSE
|
||
Else
|
||
m.vNewVal = TRUE
|
||
Endif
|
||
Endif
|
||
|
||
This.ctlfadeout = m.vNewVal
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE ctlhide
|
||
Lparameters tnHideStyle As Integer
|
||
|
||
Do Case
|
||
Case m.tnHideStyle = -1 && Link CLICKED
|
||
This.ctlOpenLink()
|
||
|
||
Case m.tnHideStyle = 0 && Hide Delay timeout
|
||
Case m.tnHideStyle = 1 && Inside BalloonTip
|
||
Case m.tnHideStyle = 2 && Outside BalloonTip
|
||
Case m.tnHideStyle = 3 && X Close Button
|
||
Case m.tnHideStyle = 4 && Key Pressed
|
||
Case m.tnHideStyle = 5 && CAPS LOCK key set to off
|
||
Case m.tnHideStyle = 6 && Form moved, resized
|
||
Endcase
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlhidedelay_assign
|
||
Lparameters vNewVal
|
||
|
||
If m.vNewVal < 0 Then
|
||
m.vNewVal = 0
|
||
Endif
|
||
|
||
This.ctlHideDelay = m.vNewVal
|
||
This.tmrHide.Interval = m.vNewVal
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlhwnd_access
|
||
Return This.nCtlHwnd
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlhwnd_assign
|
||
Lparameters vNewVal
|
||
Return
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctliconlarge_assign
|
||
Lparameters vNewVal
|
||
|
||
If Type([m.vNewVal]) = T_NUMERIC Then
|
||
If m.vNewVal = 0 Then
|
||
m.vNewVal = FALSE
|
||
Else
|
||
m.vNewVal = TRUE
|
||
Endif
|
||
Endif
|
||
|
||
If This.ctlIconLarge <> m.vNewVal Then
|
||
This.ctlIconLarge = m.vNewVal
|
||
This.ctl32_SetIconAndTitle()
|
||
Endif
|
||
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlicon_assign
|
||
Lparameters vNewVal
|
||
|
||
If Type([m.vNewVal]) = T_NUMERIC Then
|
||
If m.vNewVal < 0 Then
|
||
m.vNewVal = 0
|
||
Endif
|
||
If m.vNewVal > 3 Then
|
||
m.vNewVal = 0
|
||
Endif
|
||
Endif
|
||
|
||
This.ctlIcon = m.vNewVal
|
||
|
||
If This.nCtlHwnd = 0 Then
|
||
Return
|
||
Endif
|
||
|
||
This.oIcon = Null
|
||
|
||
If Type([This.ctlIcon]) = T_CHARACTER Then
|
||
If This.oUtil._OSVersion() >= CON_OS_WINXPSP2 Then && Custom icons only work in xp sp2 and up
|
||
If File(This.ctlIcon) Then
|
||
This.oIcon = LoadPicture(This.ctlIcon)
|
||
This.ctlIcon = This.oIcon.Handle
|
||
Else
|
||
This.ctlIcon = 0
|
||
Endif
|
||
Else
|
||
This.ctlIcon = 0
|
||
Endif
|
||
Endif
|
||
|
||
This.ctl32_SetIconAndTitle()
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctllangid_assign
|
||
Lparameters vNewVal
|
||
This.ctllangid = m.vNewVal
|
||
This.ctl32_SetLangStrings()
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctllink_access
|
||
*!* Store Link URL in ctlLinkURL
|
||
*!* Store Link Label in ctlLinkLabel
|
||
*!* Retrieve complete Link form ctlLink
|
||
|
||
Local lcLink
|
||
m.lcLink = []
|
||
|
||
If This.oUtil._OSVersion() >= CON_OS_WINXP Then
|
||
Do Case
|
||
Case Not Empty(This.ctlLinkURL) And Not Empty(This.ctlLinkLabel)
|
||
m.lcLink =[<A href="] + Alltrim(This.ctlLinkURL) + [">] + Alltrim(This.ctlLinkLabel) + [</A>]
|
||
|
||
Case Not Empty(This.ctlLinkURL) And Empty(This.ctlLinkLabel)
|
||
m.lcLink =[<A>] + Alltrim(This.ctlLinkLabel) + [</A>]
|
||
|
||
Case Empty(This.ctlLinkURL) And Not Empty(This.ctlLinkLabel)
|
||
m.lcLink =Alltrim(This.ctlLinkLabel)
|
||
|
||
Endcase
|
||
Else
|
||
m.lcLink = Alltrim(Alltrim(This.ctlLinkLabel) + " " + Alltrim(This.ctlLinkURL))
|
||
Endif
|
||
|
||
Return m.lcLink
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlmargin_assign
|
||
*!* Sets the margin between the text and the borders of the balloon tip
|
||
|
||
Lparameters vNewVal
|
||
|
||
If m.vNewVal < 0 Then
|
||
m.vNewVal = 0
|
||
Endif
|
||
|
||
This.ctlMargin = m.vNewVal
|
||
|
||
If This.nCtlHwnd = 0 Then
|
||
Return
|
||
Endif
|
||
|
||
Local lnMargin, lcMargin
|
||
|
||
m.lnMargin = This.ctlMargin
|
||
|
||
*!* Here we create a RECT structure with all four values equal
|
||
m.lcMargin = replicate(bintoc(m.lnMargin, [4RS]), 4)
|
||
|
||
SendMessageC(This.nCtlHwnd, TTM_SETMARGIN, 0, @m.lcMargin)
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlmaxwidth_assign
|
||
Lparameters vNewVal
|
||
|
||
If m.vNewVal < 0 Then
|
||
m.vNewVal = 0
|
||
Endif
|
||
|
||
This.ctlMaxWidth = m.vNewVal
|
||
|
||
If This.nCtlHwnd = 0 Then
|
||
Return
|
||
Endif
|
||
|
||
Local lnMaxWidth
|
||
|
||
m.lnMaxWidth = This.ctlMaxWidth
|
||
|
||
SendMessageN(This.nCtlHwnd, TTM_SETMAXTIPWIDTH , 0, m.lnMaxWidth)
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE ctlopenlink
|
||
If Not Empty(This.ctlLinkURL) Then
|
||
ShellExecute(0, 0, ["] + This.ctlLinkURL + ["] + 0h00, 0, 0, SW_SHOWNORMAL)
|
||
Endif
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlstyle_assign
|
||
Lparameters vNewVal
|
||
|
||
If This.ctlStyle <> m.vNewVal Then
|
||
This.ctlStyle = m.vNewVal
|
||
Else
|
||
Return
|
||
Endif
|
||
|
||
This.ctl32_Create()
|
||
|
||
|
||
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctltext_assign
|
||
Lparameters vNewVal
|
||
|
||
This.ctlText = m.vNewVal
|
||
|
||
If This.nCtlHwnd = 0 Then
|
||
Return
|
||
Endif
|
||
|
||
Local lcToolInfo, lcText
|
||
|
||
*!* Replace TABS with four spaces:
|
||
m.vNewVal = Strtran(m.vNewVal, Chr(9), Space(4))
|
||
|
||
This.oToolInfo._lpszTextString = m.vNewVal
|
||
|
||
m.lcToolInfo = This.oToolInfo._Struct
|
||
|
||
SendMessageC(This.nCtlHwnd, TTM_UPDATETIPTEXTA, 0, @m.lcToolInfo)
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctltitle_assign
|
||
Lparameters vNewVal
|
||
|
||
This.ctlTitle = m.vNewVal
|
||
|
||
If This.nCtlHwnd = 0 Then
|
||
Return
|
||
Endif
|
||
|
||
This.ctl32_SetIconAndTitle()
|
||
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE ctlvisible_assign
|
||
Lparameters vNewVal
|
||
|
||
If Type([m.vNewVal]) = T_NUMERIC Then
|
||
If m.vNewVal = 0 Then
|
||
m.vNewVal = FALSE
|
||
Else
|
||
m.vNewVal = TRUE
|
||
Endif
|
||
Endif
|
||
|
||
This.ctlVisible = m.vNewVal
|
||
|
||
If This.nCtlHwnd = 0 Then
|
||
Return
|
||
Endif
|
||
|
||
Local lcToolInfo As Character
|
||
|
||
If This.ctlVisible Then
|
||
*!* We have a timer call This.ctl32_Show() to overcome the
|
||
*!* bug of setting the balloon Visible in an object getfocus,
|
||
*!* the cursor (caret) is still in the previous control.
|
||
This.tmrShow.Enabled = TRUE
|
||
*!* This timer just calls ctl32_Show()
|
||
else
|
||
*!* Here we hide balloontip:
|
||
If This.ctlFadeOut = FALSE Then
|
||
*!* We first hide the tooltip window to prevent fade out effect, TTF_NOFADE seems to
|
||
*!* have no effect on fade out, only on fade in
|
||
ShowWindow(This.nCtlHwnd, SW_HIDE)
|
||
Endif
|
||
m.lcToolInfo = This.oToolInfo._Struct
|
||
SendMessageC(This.nCtlHwnd, TTM_TRACKACTIVATE, 0, @m.lcToolInfo)
|
||
This.tmrHide.Enabled = FALSE
|
||
Endif
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE Destroy
|
||
DestroyWindow(This.nCtlHwnd)
|
||
|
||
*!* Control is an object reference to the control to use to locate the balloontip
|
||
This.ctlControl = Null
|
||
|
||
*!* oToolInfo is an instance of the _toolinfo class of ctl32_structs
|
||
This.oToolInfo = Null
|
||
|
||
*!* loIcon is an object reference to an icon file if a custom icon was used
|
||
This.oIcon = Null
|
||
|
||
*!* oMacros is an instance of the _macros class of ctl32_structs
|
||
This.oMacros = null
|
||
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE evthandler_form_moved
|
||
If This.ctlVisible And This.ctlActive Then
|
||
This.ctlVisible = FALSE
|
||
Raiseevent(This, [ctlHide], 6)
|
||
Endif
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE evthandler_form_resize
|
||
If This.ctlVisible and This.ctlActive Then
|
||
This.ctlVisible = FALSE
|
||
Raiseevent(This, [ctlHide], 6)
|
||
Endif
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE evthandler_form_wm_keydown
|
||
Lparameters nHWND As Integer, nMSG As Integer, nWPARAM As Integer, nLPARAM As Integer
|
||
|
||
Local lnResult As Number
|
||
|
||
If This.ctlActive
|
||
If This.ctlCapsLockStyle Then
|
||
*!* If last key pressed was CAPS LOCK
|
||
If m.nWPARAM = VK_CAPITAL
|
||
*!* If CAPS LOCK was set to on:
|
||
If Bittest(GetKeyState(VK_CAPITAL), 0) = TRUE Then
|
||
This.ctlVisible = TRUE
|
||
Endif
|
||
*!* If CAPS LOCK was set to off and the balloontip is visible:
|
||
If Bittest(GetKeyState(VK_CAPITAL), 0) = FALSE And This.ctlVisible Then
|
||
This.ctlVisible = FALSE
|
||
Raiseevent(This, [ctlHide], 5)
|
||
Endif
|
||
Else
|
||
*!* Key pressed was not CAPS LOCK, hide the balloontip is visible
|
||
If This.ctlVisible Then
|
||
This.ctlVisible = FALSE
|
||
Raiseevent(This, [ctlHide], 4)
|
||
Endif
|
||
Endif
|
||
Else
|
||
*!* Not ctlCapsLockStyle, Hide balloontip with any key
|
||
If This.ctlVisible Then
|
||
This.ctlVisible = FALSE
|
||
Raiseevent(This, [ctlHide], 4)
|
||
Endif
|
||
Endif
|
||
|
||
Endif
|
||
|
||
m.lnResult = CallWindowProc(This.nVFPWndProc, m.nHWND, m.nMSG, m.nWPARAM, m.nLPARAM)
|
||
|
||
Return m.lnResult
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE evthandler_host_wm_lbuttondown
|
||
*!* Here we detect a mouseclick on the form. The Balloontip transfers its mouse events to the form
|
||
*!* HWND. When the user clicks on the form or the balloontip, we hide the balloontip.
|
||
*!* IF the user clicked on the form, the form gets the click. If the user clicked on the balloontip
|
||
*!* we discard the click to prevent undesired clicks on the underlying form. For example, if underneath
|
||
*!* the balloontip there is a button, and the user clicks the balloontip to hide it, the button
|
||
*!* will get the click. This method prevents that.
|
||
|
||
Lparameters nHWND As Integer, nMSG As Integer, nWPARAM As Integer, nLPARAM As Integer
|
||
|
||
Local lnResult As Number, lnX, lnY, lcPoint, lnOption, loRect, lcRect
|
||
|
||
m.lnOption = -1 && not used
|
||
|
||
If This.ctlVisible And This.ctlActive Then
|
||
|
||
m.lnOption = 0 && do not discard click
|
||
|
||
*!* Get form coordinates of mouse click from lParam
|
||
|
||
m.lnX = This.oMacros._GET_X_LPARAM(m.nLPARAM)
|
||
m.lnY = This.oMacros._GET_Y_LPARAM(m.nLPARAM)
|
||
|
||
*!* Convert form coordinates to screen coordinates:
|
||
m.lcPoint = This.oMacros._MAKEPOINT(m.lnX, m.lnY)
|
||
ClientToScreen(Thisform.HWnd, @ m.lcPoint)
|
||
m.lnX = This.oMacros._GET_X_POINT(m.lcPoint)
|
||
m.lnY = This.oMacros._GET_Y_POINT(m.lcPoint)
|
||
|
||
*!* WindowFromPoint only works on XP and up, in 98 and 2K returns hwnd of form
|
||
If This.oUtil._OSVersion() >= CON_OS_WINXP Then
|
||
*!* We will check if the mouse click is in the ballontip or in the form
|
||
*!* If the mouse click is on the balloontip, we do not pass the click to the form
|
||
If WindowFromPoint(m.lnX, m.lnY) = This.ctlHwnd Then
|
||
m.lnOption = 1 && discard
|
||
Endif
|
||
Else
|
||
*!* Not XP, use WindowRect that is not as exact, but close
|
||
|
||
m.lcRect = This.oRect._Struct
|
||
GetWindowRect(This.ctlHwnd, @m.lcRect)
|
||
This.oRect._Struct = m.lcRect
|
||
If Between(m.lnY, This.oRect._Top, This.oRect._Bottom) And ;
|
||
between(m.lnX, This.oRect._Left, This.oRect._Right) Then
|
||
m.lnOption = 1 && Discard
|
||
Endif
|
||
Endif
|
||
|
||
*!* Hide BalloonTip
|
||
This.ctlVisible = FALSE
|
||
|
||
Endif
|
||
|
||
Do Case
|
||
|
||
Case m.lnOption = -1 && BalloonTip not visible and active
|
||
m.lnResult = CallWindowProc(This.nVFPWndProc, m.nHWND, m.nMSG, m.nWPARAM, m.nLPARAM)
|
||
|
||
Case m.lnOption = 0 && BalloonTip visible, click was outside balloontip
|
||
m.lnResult = CallWindowProc(This.nVFPWndProc, m.nHWND, m.nMSG, m.nWPARAM, m.nLPARAM)
|
||
Raiseevent(This, [ctlHide], 2)
|
||
|
||
Case m.lnOption = 1 && BalloonTip visible, click was inside balloontip
|
||
m.lnResult = 1
|
||
Raiseevent(This, [ctlHide], 1)
|
||
Endcase
|
||
|
||
Return m.lnResult
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE evthandler_host_wm_notify
|
||
Lparameters nHWND As Integer, nMSG As Integer, nWPARAM As Integer, nLPARAM As Integer
|
||
|
||
Local lnResult As Integer, loHmdr, lnCode
|
||
|
||
This.loNmhdr._Struct = Sys(2600, m.nLPARAM, This.loNmhdr._StructLen)
|
||
|
||
m.lnCode = This.loNmhdr._code
|
||
|
||
If m.lnCode = TTN_LINKCLICK Then
|
||
This.ctlVisible = FALSE
|
||
Raiseevent(This, [ctlHide], -1)
|
||
Endif
|
||
|
||
If m.lnCode = TTN_POP Then
|
||
This.ctlVisible = FALSE
|
||
Raiseevent(This, [ctlHide], 3)
|
||
Endif
|
||
|
||
m.lnResult = CallWindowProc(This.nVFPWndProc, m.nHWND, m.nMSG, m.nWPARAM, m.nLPARAM)
|
||
|
||
Return m.lnResult
|
||
|
||
ENDPROC
|
||
|
||
HIDDEN PROCEDURE evthandler_screen_moved
|
||
If This.ctlVisible And This.ctlActive Then
|
||
This.ctlVisible = FALSE
|
||
Raiseevent(This, [ctlHide], 6)
|
||
Endif
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE Init
|
||
|
||
*!* Add Util object
|
||
This.NewObject([oUtil], [_Util], [ctl32_common.vcx])
|
||
|
||
This.ctl32_DeclareDlls()
|
||
This.ctl32_AddProperties()
|
||
This.ctl32_SetLangStrings()
|
||
This.ctl32_Create()
|
||
This.ctl32_BindEvents()
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE lblname.Init
|
||
return FALSE
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE tmrHide.Timer
|
||
If This.Parent.ctlVisible = TRUE Then
|
||
This.Parent.ctlVisible = FALSE
|
||
Raiseevent(This.Parent, [ctlHide], 0)
|
||
Endif
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE tmrShow.ctl32_show
|
||
Lparameters tnPositionStyle
|
||
|
||
Local lcToolInfo, lcPoint, lnDWord, loControl, lnX, lnY, lnPositionStyle
|
||
|
||
*!* If balloonTip is not active, dont show, just return
|
||
If This.Parent.ctlActive = FALSE Then
|
||
Return
|
||
Endif
|
||
|
||
If Pcount() = 0 Then
|
||
If This.Parent.ctlStyle <> CON_STYLE_BALLOON And This.Parent.ctlPositionStyle = CON_BTPOS_CARET Then
|
||
m.lnPositionStyle = CON_BTPOS_ACTIVECTRL
|
||
Else
|
||
m.lnPositionStyle = This.Parent.ctlPositionStyle
|
||
Endif
|
||
Else
|
||
m.lnPositionStyle = m.tnPositionStyle
|
||
Endif
|
||
|
||
Do Case
|
||
|
||
Case m.lnPositionStyle = CON_BTPOS_NONE && 1
|
||
*!* This.Parent.ctlLeft and This.Parent.ctlTop should have been defined
|
||
*!* by user before getting here.
|
||
|
||
Case m.lnPositionStyle = CON_BTPOS_ACTIVECTRL && 2
|
||
If Type([Thisform.ActiveControl]) = T_OBJECT Then
|
||
m.loControl = Thisform.ActiveControl
|
||
Else
|
||
This.ctl32_Show(CON_BTPOS_NONE)
|
||
Endif
|
||
|
||
Case m.lnPositionStyle = CON_BTPOS_CARET && 3
|
||
*!* If object has selected text, just call this method again with PositionStyle = 3
|
||
If Type([Thisform.ActiveControl]) = T_OBJECT And;
|
||
Pemstatus(Thisform.ActiveControl, [SelLength], CON_PEMSTAT_DEFINED) And;
|
||
Thisform.ActiveControl.SelLength <> 0 Then
|
||
|
||
This.ctl32_Show(CON_BTPOS_ACTIVECTRL)
|
||
Else
|
||
m.lcPoint = Space(8)
|
||
*!* Get position of caret
|
||
GetCaretPos(@ m.lcPoint)
|
||
*!* Save coordinates of caret in control properties
|
||
This.Parent.ctlLeft = CToBin(Substr(m.lcPoint, 1, 4), [4RS]) + 5
|
||
This.Parent.ctlTop = CToBin(Substr(m.lcPoint, 5, 4), [4RS]) + 10
|
||
Endif
|
||
|
||
Case m.lnPositionStyle = CON_BTPOS_SYS1270 && 4
|
||
If Type([SYS(1270)]) = T_OBJECT Then
|
||
m.loControl = Sys(1270)
|
||
Else
|
||
This.ctl32_Show(CON_BTPOS_ACTIVECTRL)
|
||
Endif
|
||
|
||
Case m.lnPositionStyle = CON_BTPOS_CTRLREF && 5
|
||
If Type([This.Parent.ctlControl]) = T_OBJECT
|
||
m.loControl = This.Parent.ctlControl
|
||
Else
|
||
This.ctl32_Show(CON_BTPOS_ACTIVECTRL)
|
||
Endif
|
||
|
||
Case m.lnPositionStyle >= CON_BTPOS_MOUSE && 6
|
||
m.lcPoint = Space(8)
|
||
*!* Get position of mouse cursor
|
||
GetCursorPos(@ m.lcPoint)
|
||
ScreenToClient(Thisform.HWnd, @ m.lcPoint)
|
||
This.Parent.ctlLeft = CToBin(Substr(m.lcPoint, 1, 4), [4RS])
|
||
This.Parent.ctlTop = CToBin(Substr(m.lcPoint, 5, 4), [4RS])
|
||
Endcase
|
||
|
||
*!* Get tip coordinates from control coordinates:
|
||
If Inlist(m.lnPositionStyle, CON_BTPOS_ACTIVECTRL, CON_BTPOS_SYS1270, CON_BTPOS_CTRLREF)
|
||
*!* If balloontip is not a balloon, position it under control and almost
|
||
*!* flush with left of it:
|
||
If This.Parent.ctlStyle <> CON_STYLE_BALLOON Then
|
||
This.Parent.ctlLeft = Objtoclient(m.loControl, CON_OBJTOCLI_LEFT) + 5
|
||
This.Parent.ctlTop = Objtoclient(m.loControl, CON_OBJTOCLI_TOP) + m.loControl.Height + 2
|
||
Else
|
||
*!* If control has SelLength property, its some kind of text edit control,
|
||
*!* so we position balloontip near left side, qo pixels to right
|
||
|
||
*!* 20060930: CHANGED "Thisform.ActiveControl" TO "m.loControl"
|
||
|
||
If Pemstatus(m.loControl, [SelLength], CON_PEMSTAT_DEFINED) Then
|
||
This.Parent.ctlLeft = Objtoclient(m.loControl, CON_OBJTOCLI_LEFT) + 10
|
||
Else
|
||
This.Parent.ctlLeft = Objtoclient(m.loControl, CON_OBJTOCLI_LEFT) + Int(m.loControl.Width / 3 * 2)
|
||
Endif
|
||
|
||
This.Parent.ctlTop = Objtoclient(m.loControl, CON_OBJTOCLI_TOP) + Int(m.loControl.Height / 3 * 2)
|
||
Endif
|
||
Endif
|
||
|
||
m.lcToolInfo = This.Parent.oToolInfo._Struct
|
||
|
||
*!* Convert form coordinates to screen coordinates:
|
||
m.lcPoint = BinToC(This.Parent.ctlLeft, [4RS]) + BinToC(This.Parent.ctlTop, [4RS])
|
||
ClientToScreen(Thisform.HWnd, @ m.lcPoint)
|
||
m.lnX = CToBin(Substr(m.lcPoint, 1, 4), [4RS])
|
||
m.lnY = CToBin(Substr(m.lcPoint, 5, 4), [4RS])
|
||
|
||
*!* Make DWORD for TTM_TRACKPOSITION message (MAKELPARAM)
|
||
m.lnDWord = m.lnX + m.lnY * 0x10000
|
||
|
||
*!* Set tooltip position
|
||
SendMessageN(This.Parent.nCtlHwnd, TTM_TRACKPOSITION, 0, m.lnDWord)
|
||
|
||
*!* Activate tooltip
|
||
SendMessageC(This.Parent.nCtlHwnd, TTM_TRACKACTIVATE, 1, @m.lcToolInfo)
|
||
|
||
*!* Reset HIDE timer and enable it, so tooltip autohides.
|
||
*!* if tmrHide.Interval is 0 the tooltip will not autohide
|
||
If This.Parent.ctlHideDelay > 0 Then
|
||
This.Parent.tmrHide.Reset()
|
||
This.Parent.tmrHide.Enabled = TRUE
|
||
Endif
|
||
|
||
m.lcToolInfo = Null
|
||
m.loControl = Null
|
||
|
||
|
||
ENDPROC
|
||
|
||
PROCEDURE tmrShow.Timer
|
||
*!* Disable this timer
|
||
This.Enabled = FALSE
|
||
This.ctl32_Show()
|
||
|
||
ENDPROC
|
||
|
||
ENDDEFINE
|
||
|
||
DEFINE CLASS ctl32_balloontip_show AS timer
|
||
*< CLASSDATA: Baseclass="timer" Timestamp="" Scale="Pixels" Uniqueid="" />
|
||
|
||
#INCLUDE "ctl32.h"
|
||
*<DefinedPropArrayMethod>
|
||
*m: ctl32_show
|
||
*p: ctlabout
|
||
*p: ctlversion
|
||
*</DefinedPropArrayMethod>
|
||
|
||
*<PropValue>
|
||
ctlabout = ctl32_ballontip_show - Carlos Alloatti
|
||
ctlversion = 20061010
|
||
Height = 23
|
||
Name = "ctl32_balloontip_show"
|
||
Width = 23
|
||
*</PropValue>
|
||
|
||
ENDDEFINE
|