Leaderboard
Popular Content
Showing content with the highest reputation on 11/03/2014 in all areas
-
considdering changing to AutoHotKey
MikahS and 2 others reacted to jvanegmond for a topic
If you're ever wondering "Hmm, maybe I should go check out X?" then reserve an afternoon and go try out X! I've personally tried every new language I could get my hands on for the past 5 years or so and am a better software dev because of it.3 points -
mesale0077 asked me whether I could code some CSS loading animations from different web sites. These are the results using GDI+ (AutoIt v3.3.12.0+ required!): _GDIPlus_MonochromaticBlinker.au3 / _GDIPlus_RotatingBokeh.au3 _GDIPlus_SpinningCandy.au3 / _GDIPlus_SteamPunkLoading.au3 _GDIPlus_IncreasingBalls.au3 / _GDIPlus_PacmanProgressbar.au3 _GDIPlus_StripProgressbar.au3 / _GDIPlus_RingProgressbar.au3 _GDIPlus_LineProgressbar.au3 / _GDIPlus_SimpleLoadingAnim.au3 _GDIPlus_TextFillingWithWater.au3 / _GDIPlus_MultiColorLoader.au3 _GDIPlus_LoadingSpinner.au3 / _GDIPlus_SpinningAndPulsing.au3 _GDIPlus_TogglingSphere.au3 / _GDIPlus_CloudySpiral.au3 _GDIPlus_GlowingText.au3 (thanks to Eukalyptus) / _GDIPlus_HypnoticLoader.au3 _GDIPlus_RotatingRectangles.au3 / _GDIPlus_TRONSpinner.au3 _GDIPlus_RotatingBars.au3 / _GDIPlus_AnotherText.au3 (thanks to Eukalyptus) _GDIPlus_CogWheels.au3 (thanks to Eukalyptus) / _GDIPlus_DrawingText.au3 (thanks to Eukalyptus) _GDIPlus_GearsAnim.au3 / _GDIPlus_LEDAnim.au3 _GDIPlus_LoadingTextAnim.au3 / _GDIPlus_MovingRectangles.au3 _GDIPlus_SpinningAndGlowing.au3 (thanks to Eukalyptus) / _GDIPlus_YetAnotherLoadingAnim.au3 _GDIPlus_AnimatedTypeLoader.au3 / _GDIPlus_Carousel.au3 Each animation function has a built-in example how it can be used. AiO download: GDI+ Animated Wait Loading Screens.7z (previous downloads: 1757) Big thanks to Eukalyptus for providing several examples. Maybe useful for some of you Br, UEZ PS: I don't understand CSS - everything is made out of my mind, so it might be different from original CSS examples1 point
-
Reddragon, I recommend reading the Moving and Resizing PopUp GUIs tutorial in the Wiki - it discusses several possible methods. M231 point
-
gr1fter, Given that the numbers you are looking for are easily extracted with a RegEx, I would do something like this: ; Read the entire file in one go $sText = "2014-10-30_1132 AM,test,H142640E4,Computer ,11.231.42.101,Name,11:31:17:109,11:31:25:389,11:31:37:775,11:31:39:164,22,9" & @CRLF & _ "2014-10-30_1140 AM,test,H142640E4,Computer ,11.231.42.101,Name,11:39:56:516,11:40:03:652,11:40:07:583,11:40:08:971,12,800" & @CRLF & _ "2014-10-30_1140 AM,test,H142640E4,Computer ,11.231.42.101,Name,11:39:56:516,11:40:03:652,11:40:07:583,11:40:08:971,12,12" & @CRLF & _ "2014-10-30_1140 AM,test,H142640E4,Computer ,11.231.42.101,Name,11:39:56:516,11:40:03:652,11:40:07:583,11:40:08:971,12,4552" ; Extract the final number - look for a comma, a string of digits and either an EOL or EOF $aRet = StringRegExp($sText, ",(\d+)(?:\v|$)", 3) ; Add the extracted numbers $iTotal = 0 For $i = 0 To UBound($aRet) - 1 $iTotal += $aRet[$i] Next ; And divide by the count $nAverage = $iTotal / UBound($aRet) ; And the result looks correct to me ConsoleWrite($nAverage & @CRLF) I think that using a RegEx will be faster then splitting each line, particularly if the file is very large, but your approach should also work if you prefer it. M231 point
-
Yes, you are getting there. Create an array to fill for your adding up the average. First, you'll just need to set a variable to the last value in the split array using it like so $i = $aTimes[0]. Then you'll need to set that value you get the in the element of the array _ArrayAdd($adding_Array, $aTimes[$i]). Once you had added all the values into the array, use Ubound($adding_Array) - 1 to get the number of elements in the array. Then, use a for loop to add them up, and divide by the Ubound($adding_Array) - 1 value. Any questions?1 point
-
Toggling a part of my script on and off
MikahS reacted to AlvinHu1991 for a topic
Thanks, It actually worked better than I thought! Thanks for all your help!1 point -
Skizmata, Jos produced >this script a few years ago - it looks as if it could be what you are looking for. M231 point
-
I will leave it to some expert to help you, as I am royally confused.1 point
-
joe7dust, You do realise that that link is to the AutoHotKey forum and this is the AutoIt forum? Little wonder you had problems compiling. M231 point
-
Hi all, As this thread has now got personal, I think it is time to close it. M231 point
-
1 point
-
If....Then MyFunction() EndIf If this doesn't work, then I'm afraid you didn't make yourself clear.1 point
-
With great power, comes great responsibility. Don't abuse these functions, which is being done here.1 point
-
Sven, Fun little problem that one! How about this as a solution: #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GUIEdit.au3> ; Create a flag Global $iFocused = 0 $hGUI = GUICreate("Test", 500, 500) $cInput = GUICtrlCreateInput("", 10, 10, 200, 20) GUICtrlSetLimit($cInput, 1) $cButton = GUICtrlCreateButton("Test", 10, 100, 80, 30) GUICtrlSetState($cButton, $GUI_FOCUS) GUISetState() GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch If $iFocused = 1 Then _GUICtrlEdit_SetSel($cInput, 0, -1) ; Set flag for focused and selected $iFocused = 2 EndIf WEnd Func _WM_COMMAND($hWnd, $iMsg, $wParam, $lParam) Switch _WinAPI_HiWord($wParam) ; Code Case $EN_SETFOCUS If Not $iFocused Then ; Set flag for initial focus $iFocused = 1 EndIf Case $EN_KILLFOCUS ; Clear flag $iFocused = 0 EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>_WM_COMMAND Now you only select the content when you initially focus on the input. Any use? M231 point
-
auto-overwrite content of input control?
MikahS reacted to johnmcloud for a topic
; Johnmcloud - 2014 #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> $hGUI = GUICreate("Johnmcloud Test Code", 200, 70, -1, -1) $sInput = GUICtrlCreateInput("", 10, 20, 180, 20) GuiSetState() GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _WM_COMMAND($hWnd, $iMsg, $wParam, $lParam) Local $iIDFrom = BitAND($wParam, 0xFFFF);LoWord Local $iCode = BitShift($wParam, 16) ;HiWord If $iIDFrom = $sInput And $iCode = $EN_CHANGE Then GUICtrlSetData($sInput, StringRight(GUICtrlRead($sInput),1)) EndIf Return $GUI_RUNDEFMSG EndFunc ;==>_WM_COMMAND1 point -
Your script is quasi the example from post#6. Why don't you use it? Br, UEZ1 point
-
@xbennY0 You can specify only one window but you can use the methods of identifying window like Win... functions. Anyway, you can check focus in the user-defined function. _HotKey_Assign($VK_ESCAPE, '_MyFunc') ... Func _MyFunc() If (WinActive('Window1')) Or (WinActive('Window2')) Then ; Something EndIf EndFunc ;==>_MyFuncI strongly recommend using the latest version >HotKey UDF.1 point
-
Yes using _WinAPI_DeleteObject() will release the GDI (not GDIPlus!) bitmap handle but for me it makes no sense to have the _GDIPlus_BitmapCreateFromMemory() inside the loop to create the same bitmap on each loop passing. I never used _ImageSearch()... Br, UEZ1 point
-
Chimaera, As far as I know you have both the default items or neither - but it is simple to add your own "Exit" trayitem: #include <GUIConstantsEx.au3> Opt("TrayMenuMode", 1) $cTrayExit = TrayCreateItem("Exit") $hGUI = GUICreate("Test", 500, 500) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch Switch TrayGetMsg() Case $cTrayExit Exit EndSwitch WEnd Or, as I usually prefer: #include <GUIConstantsEx.au3> Opt("TrayMenuMode", 1) Opt("TrayOnEventMode", 1) $cTrayExit = TrayCreateItem("Exit") TrayItemSetOnEvent($cTrayExit, "_Exit") $hGUI = GUICreate("Test", 500, 500) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _Exit() Exit EndFunc M231 point
-
Kreg0, The displayed number only changes once you have selected the guichet. I have added a preview to show what will be displayed: #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3> $iCount = 0 $sGuichetData = "" For $i = 1 To 12 $sGuichetData &= "|" & $i Next $hGUI = GUICreate("File d'attente", 500, 230, Default, Default, $WS_POPUP) GUISetBkColor(0x000000) $cLabel_1 = GUICtrlCreateLabel("Numéro appelé: ", 10, 10, 200, 40, $SS_CENTER) GUICtrlSetFont($cLabel_1, 14) GUICtrlSetColor($cLabel_1, 0xFFFFFF) $cLabel_2 = GUICtrlCreateLabel("Guichet: ", 250, 10, 200, 40, $SS_CENTER) GUICtrlSetFont($cLabel_2, 14) GUICtrlSetColor($cLabel_2, 0xFFFFFF) $cCount = GUICtrlCreateLabel("000", 10, 60, 150, 100, $SS_RIGHT) GUICtrlSetFont($cCount, 64) GUICtrlSetBkColor($cCount, 0x000000) GUICtrlSetColor($cCount, 0xFF0000) $cGuichet = GUICtrlCreateLabel("", 250, 60, 150, 100, $SS_CENTER) GUICtrlSetFont($cGuichet, 64) GUICtrlSetBkColor($cGuichet, 0x000000) GUICtrlSetColor($cGuichet, 0xFF0000) $cFleche = GUICtrlCreateLabel("", 410, 60, 80, 100) GUICtrlSetFont($cFleche, 64, Default, Default, "WingDings") GUICtrlSetBkColor($cFleche, 0x000000) GUICtrlSetColor($cFleche, 0xFF0000) $cPlus = GUICtrlCreateButton("+", 10, 180, 50, 30) GUICtrlSetFont($cPlus, 16) $cMoins = GUICtrlCreateButton("-", 120, 180, 50, 30) GUICtrlSetFont($cMoins, 16) $cProchain = GUICtrlCreateLabel("Prochain", 65, 180, 50, 15, $SS_CENTER) GUICtrlSetColor($cProchain, 0xFFFFFF) $cProchainCount = GUICtrlCreateLabel("0", 75, 195, 30, 15, $SS_CENTER) GUICtrlSetBkColor($cProchainCount, 0xFFFFFF) $cRappel = GUICtrlCreateLabel("< Adjuster numéro", 180, 190, 100, 20) GUICtrlSetColor($cRappel, 0xFFFFFF) $cGuichetChoix = GUICtrlCreateCombo("", 290, 180, 100, 30) GUICtrlSetData($cGuichetChoix, $sGuichetData) GUICtrlSetFont($cGuichetChoix, 16) GUICtrlSetState($cGuichetChoix, $GUI_DISABLE) $cSortie = GUICtrlCreateButton("Sortie", 410, 180, 80, 30) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $cSortie Exit Case $cPlus $iCount += 1 If $iCount > 999 Then $iCount = 1 GUICtrlSetData($cProchainCount, $iCount) GUICtrlSetState($cPlus, $GUI_DISABLE) GUICtrlSetState($cGuichetChoix, $GUI_ENABLE) GUICtrlSetData($cRappel, "Choisir guichet >") Case $cMoins $iCount -= 1 If $iCount < 0 Then $iCount = 0 GUICtrlSetData($cProchainCount, $iCount) GUICtrlSetState($cMoins, $GUI_DISABLE) GUICtrlSetState($cGuichetChoix, $GUI_ENABLE) GUICtrlSetData($cRappel, "Choisir guichet >") Case $cGuichetChoix GUICtrlSetData($cRappel, "") GUICtrlSetData($cCount, $iCount) GUICtrlSetData($cGuichet, GUICtrlRead($cGuichetChoix)) GUICtrlSetData($cGuichetChoix, $sGuichetData) For $i = 1 To 10 GUICtrlSetData($cFleche, ( (Mod($i, 2) = 1) ? ("") : ("à") )) Sleep(500) Next GUICtrlSetState($cPlus, $GUI_ENABLE) GUICtrlSetState($cMoins, $GUI_ENABLE) GUICtrlSetState($cGuichetChoix, $GUI_DISABLE) GUICtrlSetData($cRappel, "< Adjuster numéro") EndSwitch WEnd M231 point
-
Remo1075, (?m)^(?:.*?,){6}([^rn,]*) => gets col 7 (?m)^ = the multiline mode makes ^ match at start of each line (?:.*?,){6} = 0 or more characters and a comma, 6 times, non-capturing group ([^rn,]*) = 0 or more characters which are not a newline or a comma, capturing group So in non-klingon language the expression means : "From the beginning of each line, find a sequence with 0 or more characters and a comma 6 times but don't keep them, then find a sequence with 0 or more characters which are not a newline or a comma and get it "1 point
-
I'm going to use these menus. I've updated the UDF, ModernMenuRaw.au3. Of the posts it appears that Holger updated the code on a regular basis until May 2008. ProgAndy made some updates in August 2008. These updates were about the background color of the menubar, the ability to use icon handles, and better cleanup code on exit. The updates I've made are based on the UDF by ProgAndy attached to post 213. It's my intention to update the UDF to make it run under the current versions of AutoIt, and to get rid of errors. Especially already known errors, which can be fixed in a few lines of code. It's not my intention to add a lot of new code to the UDF. Updates 2014-10-18 This update is based on original code by Holger (first post) and updates by ProgAndy (posts 211 - 213). The update supports AutoIt 3.3.10 and later. Code relating to Windows versions not supported by 3.3.10 is deleted. WindowsConstants.au3 is included and double-defined global constants are commented out. Added an update to be able to use colored controls e.g. buttons with this UDF. Post 222. Update (one line) for x64 support. Post 266 by Holger. Added x64 support to functions by ProgAndy. Declared a few local variables. Updates 2014-10-19 Updates to pass Au3Check. (-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6) Updates 2015-01-24 Updates for tray menus suggested by nickston (posts 298, 299, 312) Most important is an update that makes it possible to use a flashing tray menu icon. There are also a few code optimizations. Updates 2021-11-12 Disabled $IDI_ global constants in ModernMenuRaw.au3. $IDI_ constants are included in AutoItConstants.au3. None of the updates above are script breaking. If you are using tray menus and want to compile your script, you should pay attention to posts 268 - 270. Note also that _TrayIconCreate creates a GUI to receive messages from tray icons. After calling this function you should probably use GUISwitch($hGui) or something. Post 227. In the top of ModernMenuRaw.au3 I've included commands.txt from the original zip by Holger. Two commands of ProgAndy to handle the background color of the menubar are added. I've also added an alphabetical list of functions, and a list of Windows messages (used with GUIRegisterMsg). Examples In order to make it easy the examples are included in the zip. The original examples by Holger are included with no changes at all. The 32 examples by AZJIO in the post above are also included with no changes. There are two versions of the examples: an english and a russian. The examples demonstrates the commands one by one and are named with the name of the command. Copied an example by AZJIO and renamed it to _TrayIconSetState-flashing.au3. Added one line of code to make the tray menu icon flash. Only an english version. A new example by nickston that demonstrates a flashing tray menu icon. The example shows how to turn flashing on and off. Two new examples _GUICtrlCreateODTopMenu.au3 and _GUIMenuBarSetBkColor.au3 that demonstrates the commands by ProgAndy to set the background color of the menubar. _GUIMenuBarSetBkColor.au3 is not working on Windows 7. A new example that shows how to use a bitmap from an image list as an icon in a menu item. The example shows also how to use icon handles. 7z-file ModernMenuRaw.au3 - update on 12.11.2021 ModernMenuRaw.au3 - all previous versions ExamplesAZJIO - 32 examples by AZJIO in english and russian versions ExamplesHolger - the original examples by Holger Examplesnickston - flashing tray menu icon ExampleszNew - three new examples Tested with AutoIt 3.3.10 on Windows 7 32/64 bit and Windows XP 32 bit. 2014-10-19: ModernMenuRaw.7z 2015-01-24: ModernMenuRaw.7z Tested with AutoIt 3.3.14.2/5 and beta 3.3.15.4 on Windows 7/10 32/64 bit. ModernMenuRaw.7z1 point
-
Here you have something to play with. The Script retrieves the Windows "above" the Window you specified in $Mywindow and displays all in a small window including indication whether they over lap your window or not. #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> Global $MyWindow = "Your Window Title" Global $EditText, $S_EditText Global $aWinInfo[1][7] AdlibRegister("GetWinOnTopOnMine", 1000) $hwin = GUICreate("Z-order Demo", 600, 100, 0, 0, Default, $WS_EX_TOPMOST) $hEdit = GUICtrlCreateEdit("", 1, 1, 598, 98) GUISetState() ; Run the GUI until the dialog is closed While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop EndSelect $EditText = "" For $y = 0 To UBound($aWinInfo) - 1 ; determine whether window is overlapping $EditText &= $aWinInfo[$y][6] ;X If $aWinInfo[$y][6] Then $EditText &= "*** OverLap***" $EditText &= " POS=" $EditText &= $aWinInfo[$y][1] ;X $EditText &= ":" $EditText &= $aWinInfo[$y][2] ;Y $EditText &= " Size=" $EditText &= $aWinInfo[$y][3] ;Width $EditText &= ":" $EditText &= $aWinInfo[$y][4] ;Height $EditText &= " Title=" $EditText &= $aWinInfo[$y][0] $EditText &= @CRLF Next If $EditText <> $S_EditText Then GUICtrlSetData($hEdit, $EditText) ConsoleWrite("Updated" & @CRLF) $S_EditText = $EditText EndIf WEnd Func GetWinOnTopOnMine() Local $var = WinList() ReDim $aWinInfo[UBound($var)][7] Local $NWin = 0 Local $Overlap = 0 $MyWinPos = WinGetPos($MyWindow) If @error Then MsgBox(0, "Error", "Your specified window title is not found: " & @lf & $MyWindow) Exit EndIf For $i = 1 To $var[0][0] ; Only check for visble windows If IsVisible($var[$i][1]) Then ; Check for MYWNDOW and exit when found If $var[$i][0] = $MyWindow Then ReDim $aWinInfo[$NWin][7] Return EndIf ; save all Window info of windows with an Higher Z-Order in an Array $WinPos = WinGetPos($var[$i][1]) $aWinInfo[$NWin][0] = $var[$i][0] $aWinInfo[$NWin][1] = $WinPos[0] $aWinInfo[$NWin][2] = $WinPos[1] $aWinInfo[$NWin][3] = $WinPos[2] $aWinInfo[$NWin][4] = $WinPos[3] $aWinInfo[$NWin][5] = $var[$i][1] ; *** Check for Full overlap $Overlap = 0 If $MyWinPos[0] > $WinPos[0] And $MyWinPos[0] + $MyWinPos[2] < $WinPos[0] + $WinPos[2] _ And $MyWinPos[1] > $WinPos[1] And $MyWinPos[1] + $MyWinPos[3] < $WinPos[1] + $WinPos[3] Then $Overlap = 1 ; *** Check for app corners inside my window ; Check if left top is inside my window ElseIf $MyWinPos[0] < $WinPos[0] And $MyWinPos[0] + $MyWinPos[2] > $WinPos[0] _ And $MyWinPos[1] < $WinPos[1] And $MyWinPos[1] + $MyWinPos[3] > $WinPos[1] Then $Overlap = 2 ; Check if left bottom is inside my window ElseIf $MyWinPos[0] < $WinPos[0] And $MyWinPos[0] + $MyWinPos[2] > $WinPos[0] _ And $MyWinPos[1] < $WinPos[1] + $WinPos[3] And $MyWinPos[1] + $MyWinPos[3] > $WinPos[1] + $WinPos[3] Then $Overlap = 3 ; Check if Right Top is inside my window ElseIf $MyWinPos[0] < $WinPos[0] + $WinPos[2] And $MyWinPos[0] + $MyWinPos[2] > $WinPos[0] + $WinPos[2] _ And $MyWinPos[1] < $WinPos[1] And $MyWinPos[1] + $MyWinPos[3] > $WinPos[1] Then $Overlap = 4 ; Check if Right bottom is inside my window ElseIf $MyWinPos[0] < $WinPos[0] + $WinPos[2] And $MyWinPos[0] + $MyWinPos[2] > $WinPos[0] + $WinPos[2] _ And $MyWinPos[1] < $WinPos[1] + $WinPos[3] And $MyWinPos[1] + $MyWinPos[3] > $WinPos[1] + $WinPos[3] Then $Overlap = 5 ; Check for Myapp corners inside App ; Check if left top is inside my window ElseIf $WinPos[0] < $MyWinPos[0] And $WinPos[0] + $WinPos[2] > $MyWinPos[0] _ And $WinPos[1] < $MyWinPos[1] And $WinPos[1] + $WinPos[3] > $MyWinPos[1] Then $Overlap = 6 ; Check if left bottom is inside my window ElseIf $WinPos[0] < $MyWinPos[0] And $WinPos[0] + $WinPos[2] > $MyWinPos[0] _ And $WinPos[1] < $MyWinPos[1] + $MyWinPos[3] And $WinPos[1] + $WinPos[3] > $MyWinPos[1] + $MyWinPos[3] Then $Overlap = 7 ; Check if Right Top is inside my window ElseIf $WinPos[0] < $MyWinPos[0] + $MyWinPos[2] And $WinPos[0] + $WinPos[2] > $MyWinPos[0] + $MyWinPos[2] _ And $WinPos[1] < $MyWinPos[1] And $WinPos[1] + $WinPos[3] > $MyWinPos[1] Then $Overlap = 8 ; Check if Right bottom is inside my window ElseIf $WinPos[0] < $MyWinPos[0] + $MyWinPos[2] And $WinPos[0] + $WinPos[2] > $MyWinPos[0] + $MyWinPos[2] _ And $WinPos[1] < $MyWinPos[1] + $MyWinPos[3] And $WinPos[1] + $WinPos[3] > $MyWinPos[1] + $MyWinPos[3] Then $Overlap = 9 ; Check for app side go through MyApp ; Check Horizontal is inside my window ElseIf $MyWinPos[0] > $WinPos[0] And $MyWinPos[0] + $MyWinPos[2] < $WinPos[0] + $WinPos[2] _ And $MyWinPos[1] < $WinPos[1] And $MyWinPos[1] + $MyWinPos[3] > $WinPos[1] Then $Overlap = 10 ; Check Vertical is inside my window ElseIf $MyWinPos[1] > $WinPos[1] And $MyWinPos[1] + $MyWinPos[3] < $WinPos[1] + $WinPos[3] _ And $MyWinPos[0] < $WinPos[0] And $MyWinPos[0] + $MyWinPos[2] > $WinPos[0] Then $Overlap = 11 EndIf $aWinInfo[$NWin][6] = $Overlap $NWin += 1 EndIf Next ConsoleWrite("- Not Found -----------------------------------------" & @LF) EndFunc ;==>GetWinOnTopOnMine Func IsVisible($handle) If BitAND(WinGetState($handle), 2) Then Return 1 Else Return 0 EndIf EndFunc ;==>IsVisible Jos1 point