Sign in to follow this  
Followers 0
InvalidSyntax

Adding a edit function to GUI

5 posts in this topic

#1 ·  Posted (edited)

I am trying to add in a feature to this GUI that allows users to add things such as tabs, and changing fields on their own and then later save it (most likely to a ini). On the top right of the GUI there will be a button for editing and it will unlock many fields for them to edit in. Next to each field there will be (edit) (save) which i would like to be previously hidden until the edit button was clicked, which will allow them to edit/save respectively and at the bottom "save page" to save every change that was made. What would be the best way about going about doing this? Thank you in advanced.

Edited by InvalidSyntax

Share this post


Link to post
Share on other sites



I am trying to add in a feature to this GUI that allows users to add things such as tabs, and changing fields on their own and then later save it (most likely to a ini). On the top right of the GUI there will be a button for editing and it will unlock many fields for them to edit in. Next to each field there will be (edit) (save) which i would like to be previously hidden until the edit button was clicked, which will allow them to edit/save respectively and at the bottom "save page" to save every change that was made. What would be the best way about going about doing this? Thank you in advanced.

WelCome!

First some home work like reading the following in the help file:

GUICreate

GUICtrlCreateButton

GUICtrlCreateTab

GUICtrlCreateTabItem

IniRead

IniWrite

Then some more home work creating a script with all of the above in it.

If it is not working the way you expect post the script here.

Then you will get lots and lots of help.


Share this post


Link to post
Share on other sites

I've been now messing with AutoIT pretty much the entire day and im getting a much better feel for the way coding goes. I decided to do away with tabs long ago, now working with only buttons instead for now. I still think I wont be able to figure out how to make this INI method work :unsure:

Essentially what the user should be able to do is click a button which will prompt you with a text box and it will add in a button elsewhere. This wont be as hard I can do this on my own im pretty sure. The only problem I think I might run into is spacing. It gets complicated for me here, when that button is created with X name I would like for a folder with that name to be created with its own INI file. In the INI file there will be several different sections each with their own separate string values. In the text fields where the string values go into the user will be able to change them to what ever they want and hit save which will save all of the separate fields for that INI file for that particular button.

Right now I have just gotten it to print off different parts of an INI depending on which button is pressed, but not able to get that information into a text box yet.

Share this post


Link to post
Share on other sites

I searched and i find some information maybe it will help you:-

Gui, Add, Edit, R20 vMyEdit

FileRead, FileContents, C:\My File.txt

GuiControl,, MyEdit, %FileContents% o load a text file into an Edit control, use FileRead and GuiControl.

good luck

Share this post


Link to post
Share on other sites

Maybe this will help you in the good direction thnx 2 funky :unsure:

(also this forum has a seachttool;))

#include "OwnTab.au3"

#cs
Known Bugs:
  --> Bug mit $OwnTab_Style, da diese Variable zur Laufzeit abgefragt wird beim Verstecken und erneuten Anzeigen der Register.
  --> "Zittern" der alarmierten Register, wenn diese bereits angewählt wurden --> durch blinken mit der selben Farbe
#ce
Local $hGui = GUICreate("Funkey's OwnTab-UDF Example", 500, 350)
GUISetBkColor(0xbbbbbb)

$OwnTab_Style = Random(0, 1, 1) ;random style (only 2 styles available!!)

Local $aTabText[5] = ["Settings", "Register without icon", "Pic", "Status", "Tab in Tab"] ;Declare the regions for the OwnTab-control
Local $aTabIcons[5][2] = [["shell32.dll", 130],[""],["shell32.dll", 139],["shell32.dll", 90], ["shell32.dll", 43]]
Global $aCtrlTab = _OwnTab_Create($hGui, $aTabText, 10, 10, 480, 300, 30, 0xD5D5D5, 0xCFE0E7, 0xCFE0E7, $aTabIcons)

Local $aTabTip[5] = ["Tip Item 1", "Tip Item 2", "Tip Item 3", "Alarm-Register"]
_OwnTab_SetTip($aCtrlTab, $aTabTip) ;set the tooltips for the OwnTab-control

#Region Tab1
_OwnTab_Add($aCtrlTab) ;Start controls tab1
Global $Edit1 = GUICtrlCreateEdit("Edit in Tab1", 20, 55, 300, 50, 0)
Global $Button1 = GUICtrlCreateButton("Simulate an alarm", 20, 120, 300, 20)
Global $Box1 = GUICtrlCreateCheckbox("Switch on hover  -  set time -->", 20, 180)
GUICtrlSetBkColor(-1, 0xCFE0E7)
Global $Input1 = GUICtrlCreateInput("1", 200, 180, 50, 20)
GUICtrlCreateUpdown($Input1)
GUICtrlSetLimit(-1, 15, 1)
#EndRegion Tab1

#Region Tab2
_OwnTab_Add($aCtrlTab) ;Start controls tab2
Global $Edit2 = GUICtrlCreateEdit("Edit in Tab2", 20, 150, 300, 50, 0)
Global $Label2 = GUICtrlCreateLabel("Label in Tab2", 20, 220, 300, 20, 0x201)
GUICtrlSetBkColor(-1, -2) ;$GUI_BKCOLOR_TRANSPARENT
#EndRegion Tab2

#Region Tab3
_OwnTab_Add($aCtrlTab) ;Start controls tab3
;Global $Labe3 = GUICtrlCreateLabel("If you see this label, you can change the picture-path in scriptline " [email="&@ScriptLineNumber"]&@ScriptLineNumber[/email] + 1 &  "!!", 40, 150, 400, 30, 0x201)
;Global $Edit3 = GUICtrlCreatePic(@DocumentsCommonDir & '\Eigene Bilder\Beispielbilder\Winter.jpg', 20, 55, 460, 280)
Global $Edit3 = GUICtrlCreatePic('C:\Documents and Settings\eggingm\Desktop\EzSkin3\EzSkin\But7b.jpg', 20, 55, 460, 280)
#EndRegion Tab3

#Region Tab4
_OwnTab_Add($aCtrlTab) ;Start controls tab4
Global $Button4 = GUICtrlCreateButton("Acknowledge the alarm", 20, 120, 300, 20)
Global $Button5 = GUICtrlCreateButton("Enable tab 3", 20, 150, 300, 20)
Global $Button6 = GUICtrlCreateButton("Disable tab 3", 20, 180, 300, 20)
Global $Button7 = GUICtrlCreateButton("Hide tab 2", 20, 240, 300, 20)
Global $Button8 = GUICtrlCreateButton("Show tab 2", 20, 210, 300, 20)
#EndRegion Tab4

#Region Tab5 and "Tab in Tab"
_OwnTab_Add($aCtrlTab) ;Start controls tab5

GUICtrlCreateLabel("Style Black", 30, 50, 200, 20, 0x201)
$OwnTab_Style = 0
Local $aTabText[2] = ["Tab1", "New Info"] ;Declare the regions for the OwnTab-control
Local $aTabIcons[2][2] = [["shell32.dll", 20],["shell32.dll", 40]]
Global $aCtrlTab2 = _OwnTab_Create($hGui, $aTabText, 30, 80, 200, 200, 30, 0xD5D5D5, 0x00ff00, 0x00ff00, $aTabIcons)
_OwnTab_Add($aCtrlTab2) ;Start controls tab1
Global $BtnSet = GUICtrlCreateButton("Simulate", 80, 150, 100, 20)
_OwnTab_Add($aCtrlTab2) ;Start controls tab2
Global $BtnReset = GUICtrlCreateButton("Acknowledge", 80, 170, 100, 20)
_OwnTab_End($aCtrlTab2)

GUICtrlCreateLabel("Style White", 270, 50, 200, 20, 0x201)
$OwnTab_Style = 1
Local $aTabText[2] = ["Tab1", "Tab2"] ;Declare the regions for the OwnTab-control
Local $aTabIcons[2][2] = [["shell32.dll", 10],["shell32.dll", 60]]
Global $aCtrlTab3 = _OwnTab_Create($hGui, $aTabText, 270, 80, 200, 200, 30, 0xD5D5D5, 0x00ff00, 0x00ff00, $aTabIcons)
_OwnTab_Add($aCtrlTab3) ;Start controls tab1
GUICtrlCreateLabel("Just testing...", 280, 150, 100, 20)
GUICtrlSetBkColor(-1, -2)
_OwnTab_Add($aCtrlTab3) ;Start controls tab2
GUICtrlCreateLabel("Hello from tab2", 280, 150, 100, 20)
GUICtrlSetBkColor(-1, -2)
_OwnTab_End($aCtrlTab3)
#EndRegion Tab5

_OwnTab_End($aCtrlTab) ;new: end control-definition AND inizialize the OwnTab

_OwnTab_Disable($aCtrlTab, 3) ;new: disable tabitems
_OwnTab_SetFontCol($aCtrlTab, 0xFF) ;new: set font-color

GUISetState()
_OwnTab_Hover($aCtrlTab, 0xFFFF88) ;start hover-function if you want
_OwnTab_AlarmInit()

Local $msg

While 1
$msg = GUIGetMsg()
For $a = 1 To UBound($aCtrlTab, 1) - 1
  If $msg = $aCtrlTab[$a][0] Then
   _OwnTab_Switch($aCtrlTab, $a)
   If $a = 5 Then
    _OwnTab_Switch($aCtrlTab2, $aCtrlTab2[0][0], 1)
    _OwnTab_Switch($aCtrlTab3, $aCtrlTab3[0][0], 1)
   EndIf
  EndIf
Next
For $a = 1 To UBound($aCtrlTab2, 1) - 1
  If $msg = $aCtrlTab2[$a][0] Then
   _OwnTab_Switch($aCtrlTab2, $a)
  EndIf
Next
For $a = 1 To UBound($aCtrlTab3, 1) - 1
  If $msg = $aCtrlTab3[$a][0] Then
   _OwnTab_Switch($aCtrlTab3, $a)
  EndIf
Next
Switch $msg
  Case $Button1
   _OwnTab_SetAlarm($aCtrlTab, 4, 0xFF0000)
  Case $Button4
   _OwnTab_ResetAlarm($aCtrlTab, 4)
  Case $BtnSet
   _OwnTab_SetAlarm($aCtrlTab2, 2, 0x5050FF)
  Case $BtnReset
   _OwnTab_ResetAlarm($aCtrlTab2, 2)
  Case $Button5
   _OwnTab_Enable($aCtrlTab, 3)
  Case $Button6
   _OwnTab_Disable($aCtrlTab, 3)
  Case $Button7
   _OwnTab_Hide($aCtrlTab, 2)
  Case $Button8
   _OwnTab_Show($aCtrlTab, 2)
  Case $Box1
   If GUICtrlRead($Box1) = 1 Then
    _OwnTab_Hover($aCtrlTab, 0xFFFF88, GUICtrlRead($Input1))
   Else
    _OwnTab_Hover($aCtrlTab, 0xFFFF88, 0)
   EndIf
  Case $Input1
   If GUICtrlRead($Box1) = 1 Then _OwnTab_Hover($aCtrlTab, 0xFFFF88, GUICtrlRead($Input1))
  Case -3
   Exit
EndSwitch
Sleep(10)
WEnd

UDF:

#include-once
#include <GDIPlus.au3>
#include <Array.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>
#Include <Timers.au3>

#cs
Copyrights to funkey from Autoit.de
#ce

Local $HoverArray[1], $ControlID, $Global_I = 0, $__ControlID, $HoverActive = 0, $Temp_Found = 0, $szTemp_Array[2]
Local $OwnTabHoverCol[2], $OwnTabHoverHelp[1], $OwnTabHoverSwitch, $aOwnTabHoverCount, $OwnTabHoverCtrl
Local $aOwnTabAlarm[1][3], $iOwnTabAlarm, $hOwnTabGui, $hTimerAlarm, $hTimerHover
Local $OwnTab_Style = 0 ; only 0 or 1 !

_GDIPlus_Startup()
Opt("OnExitFunc", "_OwnTab_OnExit")

Func _OwnTab_Create($hWnd, $aTabText, $xPos, $yPos, $iWidth, $iHeight, $iItemHeight = -1, $nColNoSel = -1, $nColSel = -1, $nColBg = -1, $aIcons = "")
Local $aSize, $aSize2[UBound($aTabText)][2], $xLast = 0, $aCtrl[UBound($aTabText) + 1][11], $iOffset = 0
If Not IsArray($aIcons) Then
  Local $Icons[UBound($aTabText)][2]
Else
  Local $Icons = $aIcons
EndIf
If Not IsArray($aTabText) Then Return SetError(1, 0, "")
For $i = 0 To UBound($aTabText) - 1
  If $aTabText[$i] = "" Then Return SetError(2, $i + 1, "")
  $aSize = _GetTextSize($aTabText[$i])
  $aSize[0] += Ceiling($aSize[0] / 10) ;make it 10% longer for bold text
  $aSize2[$i][0] = $aSize[0]
  $aSize2[$i][1] = $aSize[1]
  If $iItemHeight = -1 Then $iItemHeight = $aSize[1]
  If $Icons[$i][0] <> "" Then
   $iOffset = $iItemHeight
   $aTabText[$i] &= " "
  Else
   $iOffset = 0
  EndIf
  $aCtrl[$i + 1][7] = $Icons[$i][0] ;filename for icon
  $aCtrl[$i + 1][8] = $Icons[$i][1] ;index for icon
  $aCtrl[$i + 1][9] = $aSize[0] + 5 + $iOffset ;labelwidth
  $aCtrl[$i + 1][0] = GUICtrlCreateLabel($aTabText[$i], $xPos + $xLast + 5, $yPos + 2, $aCtrl[$i + 1][9], $iItemHeight, 0x411201 + ($Icons[$i][0] <> ""), $OwnTab_Style)
  _HoverAddCtrl($aCtrl[$i + 1][0])
  If $Icons[$i][0] <> "" Then
   $aCtrl[$i + 1][6] = GUICtrlCreateIcon("", 0, $xPos + $xLast + 8, $yPos + 5, $iItemHeight - 6, $iItemHeight - 6)
  Else
   $aCtrl[$i + 1][6] = GUICtrlCreateDummy()
  EndIf
;~   If $Icons[$i][0] <> "" Then _SetBkIcon($aCtrl[$i + 1][6], $nColNoSel, $aCtrl[$i + 1][7], $aCtrl[$i + 1][8], $iItemHeight - 6, $iItemHeight - 6)
  GUICtrlCreateLabel($aCtrl[$i + 1][7], -200, -200) ;For information
  GUICtrlCreateLabel($aCtrl[$i + 1][8], -200, -200) ;For information
  GUICtrlCreateLabel($iItemHeight - 6, -200, -200) ;For information
  $aCtrl[$i + 1][2] = $nColNoSel
  $aCtrl[$i + 1][3] = $nColSel
  $xLast += $aCtrl[$i + 1][9]
Next
GUICtrlCreateLabel("", $xPos, $yPos + $iItemHeight, $iWidth, $iHeight, 0x411000, $OwnTab_Style)
GUICtrlSetState(-1, 128) ;$GUI_DISABLE
GUICtrlSetBkColor(-1, $nColBg)
$xLast = 0
For $i = 0 To UBound($aTabText) - 1
  If $Icons[$i][0] <> "" Then
   $iOffset = $iItemHeight
  Else
   $iOffset = 0
  EndIf
  $aCtrl[$i + 1][1] = GUICtrlCreateLabel("", $xPos + $xLast + 6, $yPos + $iItemHeight - $OwnTab_Style, $aSize2[$i][0] + 3 + $iOffset, 2+2*$OwnTab_Style)
  GUICtrlSetBkColor(-1, $nColSel)
  $xLast += $aSize2[$i][0] + 5 + $iOffset
Next
$aCtrl[0][1] = $iItemHeight
$aCtrl[0][2] = $nColNoSel
$aCtrl[0][3] = $nColSel
$aCtrl[0][9] = $yPos + 2
$hOwnTabGui = $hWnd
Return $aCtrl
EndFunc   ;==>_OwnTab_Create

Func _OwnTab_Switch(ByRef $aOwnTab, $iIndex, $fForce = 0)
_OwnTab_UnRegisterHover($aOwnTab, $iIndex)
If _OwnTab_IsAlarmed($aOwnTab[$iIndex][0]) Then $aOwnTabAlarm[@extended][2] = $aOwnTabAlarm[@extended][1]
$HoverActive = 0
If $aOwnTab[0][0] = $iIndex And $fForce = 0 Then Return
For $s = 1 To UBound($aOwnTab, 1) - 1
  If $iIndex <> $s Then
   GUICtrlSetState($aOwnTab[$s][1], 32) ;$GUI_HIDE
   GUICtrlSetFont($aOwnTab[$s][0], -1, 400)
   If Not _OwnTab_IsAlarmed($aOwnTab[$s][0]) Then 
    GUICtrlSetBkColor($aOwnTab[$s][0], $aOwnTab[$s][2])
    If $aOwnTab[$s][7] <> "" Then _SetBkIcon($aOwnTab[$s][6], $aOwnTab[$s][2], $aOwnTab[$s][7], $aOwnTab[$s][8], GUICtrlRead($aOwnTab[$s][0] + 4), GUICtrlRead($aOwnTab[$s][0] + 4))
   EndIf
   If _ArraySearch($OwnTabHoverHelp, $aOwnTab[$s][0]) = -1 Then
    _OwnTab_RegisterHover($aOwnTab, $s)
   EndIf
  Else
   GUICtrlSetFont($aOwnTab[$iIndex][0], -1, 1000)
   If Not _OwnTab_IsAlarmed($aOwnTab[$s][0]) Then 
    GUICtrlSetBkColor($aOwnTab[$iIndex][0], $aOwnTab[$iIndex][3])
    If $aOwnTab[$s][7] <> "" Then _SetBkIcon($aOwnTab[$iIndex][6], $aOwnTab[$iIndex][3], $aOwnTab[$s][7], $aOwnTab[$s][8], GUICtrlRead($aOwnTab[$s][0] + 4), GUICtrlRead($aOwnTab[$s][0] + 4))
   EndIf
   GUICtrlSetState($aOwnTab[$iIndex][1], 16) ;$GUI_SHOW
  EndIf
Next
If $aOwnTab[0][0] = "" Or $fForce Then
  For $t = $aOwnTab[0][4] To $aOwnTab[UBound($aOwnTab, 1) - 1][4]
   GUICtrlSetState($t, 32) ;$GUI_HIDE
   If $t > $aOwnTab[$iIndex - 1][4] And $t < $aOwnTab[$iIndex][4] Then GUICtrlSetState($t, 16) ;$GUI_SHOW
  Next
Else
  For $t = $aOwnTab[$aOwnTab[0][0] - 1][4] To $aOwnTab[$aOwnTab[0][0]][4]
   GUICtrlSetState($t, 32) ;$GUI_HIDE
  Next
  For $t = $aOwnTab[$iIndex - 1][4] To $aOwnTab[$iIndex][4]
   GUICtrlSetState($t, 16) ;$GUI_SHOW
  Next
EndIf
$aOwnTab[0][0] = $iIndex
EndFunc   ;==>_OwnTab_Switch

Func _OwnTab_SetTip(ByRef $aOwnTab, $ToolTips = "", $iIndex = "")
If IsArray($ToolTips) Then
  For $i = 1 To UBound($aOwnTab, 1) - 1
   $aOwnTab[$i][5] = $ToolTips[$i - 1]
   GUICtrlSetTip($aOwnTab[$i][0], $ToolTips[$i - 1])
  Next
Else
  If $iIndex = "" Then Return SetError(1)
  $aOwnTab[$iIndex][5] = $ToolTips
  GUICtrlSetTip($aOwnTab[$iIndex][0], $ToolTips)
EndIf
EndFunc   ;==>_OwnTab_SetTip

Func _OwnTab_AlarmInit($iTime = 555)
If Not $hTimerAlarm Then
  $hTimerAlarm = _Timer_SetTimer($hOwnTabGui, $iTime, "_OwnTab_AlarmBlink")
Else
  $hTimerAlarm = _Timer_SetTimer($hOwnTabGui, $iTime, "", $hTimerAlarm)
EndIf
EndFunc   ;==>_OwnTab_AlarmInit

Func _OwnTab_AlarmBlink($hWnd, $Msg, $iIDTimer, $dwTime)
Local $AlarmColAct
$iOwnTabAlarm = Not $iOwnTabAlarm
For $i = 1 To UBound($aOwnTabAlarm, 1) - 1
  If $iOwnTabAlarm Then
   $AlarmColAct = $aOwnTabAlarm[$i][2]
  Else
   $AlarmColAct = $aOwnTabAlarm[$i][1]
  EndIf
  GUICtrlSetBkColor($aOwnTabAlarm[$i][0], $AlarmColAct)
  _SetBkIcon($aOwnTabAlarm[$i][0] + 1, $AlarmColAct, GUICtrlRead($aOwnTabAlarm[$i][0] + 2), GUICtrlRead($aOwnTabAlarm[$i][0] + 3), GUICtrlRead($aOwnTabAlarm[$i][0] + 4), GUICtrlRead($aOwnTabAlarm[$i][0] + 4))
Next
EndFunc   ;==>_OwnTab_AlarmBlink

Func _OwnTab_SetAlarm(ByRef $aOwnTab, $iIndex, $nAlarmSel = 0xFF0000)
Local $hCtrl = $aOwnTab[$iIndex][0]
Local $iSearch = _ArraySearch($aOwnTabAlarm, $hCtrl)
If $iSearch <> -1 Then Return
ReDim $aOwnTabAlarm[UBound($aOwnTabAlarm, 1) + 1][3]
$aOwnTabAlarm[UBound($aOwnTabAlarm, 1) - 1][0] = $hCtrl
$aOwnTabAlarm[UBound($aOwnTabAlarm, 1) - 1][1] = $nAlarmSel
$aOwnTabAlarm[UBound($aOwnTabAlarm, 1) - 1][2] = $aOwnTab[$iIndex][2]
;~  GUICtrlSetBkColor($aOwnTab[$iIndex][1], $nAlarmSel)
EndFunc   ;==>_OwnTab_SetAlarm

Func _OwnTab_ResetAlarm(ByRef $aOwnTab, $iIndex)
Local $hCtrl = $aOwnTab[$iIndex][0]
Local $iSearch = _ArraySearch($aOwnTabAlarm, $hCtrl)
If $iSearch = -1 Then Return
_ArrayDelete($aOwnTabAlarm, $iSearch)
$aOwnTab[$iIndex][2] = $aOwnTab[0][2]
$aOwnTab[$iIndex][3] = $aOwnTab[0][3]
;~  GUICtrlSetBkColor($aOwnTab[$iIndex][1], $aOwnTab[0][3])
If $aOwnTab[0][0] <> $iIndex Then
  GUICtrlSetBkColor($aOwnTab[$iIndex][0], $aOwnTab[0][2])
Else
  _SetBkIcon($aOwnTab[$iIndex][0] + 1, $aOwnTab[$iIndex][3], $aOwnTab[$iIndex][7], $aOwnTab[$iIndex][8], GUICtrlRead($aOwnTab[$iIndex][0] + 4), GUICtrlRead($aOwnTab[$iIndex][0] + 4))
  GUICtrlSetBkColor($aOwnTab[$iIndex][0], $aOwnTab[0][3])
EndIf
EndFunc   ;==>_OwnTab_ResetAlarm

Func _OwnTab_Add(ByRef $aOwnTab)
Local $i = 0
While 1
  If $aOwnTab[$i][4] = "" Then ExitLoop
  $i += 1
WEnd
$aOwnTab[$i][4] = GUICtrlCreateDummy()
EndFunc   ;==>_OwnTab_Add

Func _OwnTab_End(ByRef $aOwnTab, $iIndex = 1)
$aOwnTab[UBound($aOwnTab, 1) - 1][4] = GUICtrlCreateDummy()
_OwnTab_Switch($aOwnTab, $iIndex)
EndFunc   ;==>_OwnTab_End

Func _OwnTab_Hover($aOwnTab, $nColHover, $fSwitch = 0, $iTime = 50)
$OwnTabHoverCol[0] = $nColHover
$OwnTabHoverCol[1] = $aOwnTab[0][2]
$OwnTabHoverSwitch = $fSwitch
If Not $hTimerHover Then
  $hTimerHover = _Timer_SetTimer($hOwnTabGui, $iTime, "_ProcessHover")
Else
  $hTimerHover = _Timer_SetTimer($hOwnTabGui, $iTime, "", $hTimerHover)
EndIf
EndFunc   ;==>_OwnTab_Hover

Func _OwnTab_RegisterHover($aOwnTab, $iIndex)
If _ArraySearch($HoverArray, $aOwnTab[$iIndex][0]) = -1 Then _HoverAddCtrl($aOwnTab[$iIndex][0])
EndFunc   ;==>_OwnTab_RegisterHover

Func _OwnTab_UnRegisterHover($aOwnTab, $iIndex)
Local $iSearch = _ArraySearch($HoverArray, $aOwnTab[$iIndex][0])
If $iSearch <> -1 Then _ArrayDelete($HoverArray, $iSearch)
EndFunc   ;==>_OwnTab_UnRegisterHover

#Region Disable and Enable Tab-Register
Func _OwnTab_Disable($aOwnTab, $iIndex)
GUICtrlSetState($aOwnTab[$iIndex][0], 128)
_OwnTab_UnRegisterHover($aOwnTab, $iIndex)
Local $iSearch = _ArraySearch($OwnTabHoverHelp, $aOwnTab[$iIndex][0])
If $iSearch = -1 Then _ArrayAdd($OwnTabHoverHelp, $aOwnTab[$iIndex][0])
EndFunc   ;==>_OwnTab_Disable

Func _OwnTab_Enable($aOwnTab, $iIndex)
GUICtrlSetState($aOwnTab[$iIndex][0], 64)
_OwnTab_RegisterHover($aOwnTab, $iIndex)
Local $iSearch = _ArraySearch($OwnTabHoverHelp, $aOwnTab[$iIndex][0])
If $iSearch <> -1 Then _ArrayDelete($OwnTabHoverHelp, $iSearch)
EndFunc   ;==>_OwnTab_Enable
#EndRegion Disable and Enable Tab-Register

Func _OwnTab_Hide(ByRef $aOwnTab, $iIndex)
If $iIndex = 0 Or $iIndex > UBound($aOwnTab, 1) - 1 Then Return SetError(1)
If BitAND(GUICtrlGetState($aOwnTab[$iIndex][0]), 32) Then Return
GUICtrlSetState($aOwnTab[$iIndex][0], 32) ;$GUI_HIDE
GUICtrlSetState($aOwnTab[$iIndex][1], 32) ;$GUI_HIDE
GUICtrlSetState($aOwnTab[$iIndex][6], 32) ;$GUI_HIDE

Local $Offset = 3
For $o = 0 To $iIndex - 1
  $Offset += $aOwnTab[$o][9] - 0
Next

For $o = $iIndex + 1 To UBound($aOwnTab, 1) - 1
  GUICtrlSetPos($aOwnTab[$o][0], $Offset, $aOwnTab[0][9])
  GUICtrlSetPos($aOwnTab[$o][1], $Offset + 1, $aOwnTab[0][9] + $aOwnTab[0][1] - 2 - $OwnTab_Style)
  GUICtrlSetPos($aOwnTab[$o][6], $Offset + 3, $aOwnTab[0][9] + 3)
  $Offset += $aOwnTab[$o][9]
Next
If $iIndex = $aOwnTab[0][0] Then
  If $iIndex = 1 Then
   _OwnTab_Switch($aOwnTab, 2)
  Else
   _OwnTab_Switch($aOwnTab, $iIndex - 1)
  EndIf
EndIf
EndFunc   ;==>_OwnTab_Hide

Func _OwnTab_Show(ByRef $aOwnTab, $iIndex, $iActivate = 0)
If $iIndex = 0 Or $iIndex > UBound($aOwnTab, 1) + 1 Then Return SetError(1)
If BitAND(GUICtrlGetState($aOwnTab[$iIndex][0]), 16) Then Return

Local $Offset = 3
For $o = 0 To UBound($aOwnTab, 1) - 2
  $Offset += $aOwnTab[$o][9] - 0
Next

For $o = UBound($aOwnTab, 1) - 1 To $iIndex + 1 Step -1
  GUICtrlSetPos($aOwnTab[$o][0], $Offset, $aOwnTab[0][9])
  GUICtrlSetPos($aOwnTab[$o][1], $Offset + 1, $aOwnTab[0][9] + $aOwnTab[0][1] - 2 - $OwnTab_Style)
  GUICtrlSetPos($aOwnTab[$o][6], $Offset + 3, $aOwnTab[0][9] + 3)
  $Offset -= $aOwnTab[$o - 1][9]
Next

GUICtrlSetState($aOwnTab[$iIndex][0], 16) ;$GUI_SHOW
GUICtrlSetState($aOwnTab[$iIndex][6], 16) ;$GUI_SHOW

If $iActivate Then
  _OwnTab_Switch($aOwnTab, $iIndex)
EndIf
EndFunc   ;==>_OwnTab_Show

Func _OwnTab_SetFontCol($aOwnTab, $nColor, $iIndex = "")
If $iIndex = "" Then
  For $i = 1 To UBound($aOwnTab, 1) - 1
   GUICtrlSetColor($aOwnTab[$i][0], $nColor)
  Next
Else
  If $iIndex < 1 Or $iIndex >= UBound($aOwnTab, 1) Then Return SetError(1)
  GUICtrlSetColor($aOwnTab[$iIndex][0], $nColor)
EndIf
EndFunc   ;==>_OwnTab_SetFontCol

Func _OwnTab_SetOnEvent($aOwnTab, $sFunc = "", $iIndex = "")
If $sFunc = "" Then $sFunc = "_OwnTab_OnEvent"
If $iIndex = "" Then
  For $f = 1 To UBound($aOwnTab, 1) -1
   GUICtrlSetOnEvent($aOwnTab[$f][0], $sFunc)
  Next
Else
  If $iIndex < 1 Or $iIndex >= UBound($aOwnTab, 1) Then Return SetError(1)
  GUICtrlSetOnEvent($aOwnTab[$iIndex][0], $sFunc)
EndIf
EndFunc

;~ Func _OwnTab_OnEvent() ;for example
;~  For $a = 1 To UBound($aCtrlTab, 1) -1
;~   If @GUI_CtrlId = $aCtrlTab[$a][0] Then ExitLoop
;~  Next
;~  If $a < UBound($aCtrlTab, 1) Then _OwnTab_Switch($aCtrlTab, $a) 
;~ EndFunc

Func _OwnTab_OnExit()
_GDIPlus_Shutdown()
If $hTimerAlarm Then _Timer_KillTimer($hOwnTabGui, $hTimerAlarm)
If $hTimerHover Then _Timer_KillTimer($hOwnTabGui, $hTimerHover)
EndFunc   ;==>_OwnTab_Exit

Func _GetTextSize($nText, $sFont = 'Microsoft Sans Serif', $iFontSize = 8.5, $iFontAttributes = 0)
;Author: Bugfix
;Modified: funkey
If $nText = '' Then Return
Local $hGui = GUICreate("Textmeter by Bugfix")
;~  _GDIPlus_Startup()
Local $hFormat = _GDIPlus_StringFormatCreate(0)
Local $hFamily = _GDIPlus_FontFamilyCreate($sFont)
Local $hFont = _GDIPlus_FontCreate($hFamily, $iFontSize, $iFontAttributes, 3)
Local $tLayout = _GDIPlus_RectFCreate(15, 171, 0, 0)
Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $nText, $hFont, $tLayout, $hFormat)
Local $iWidth = Ceiling(DllStructGetData($aInfo[0], "Width"))
Local $iHeight = Ceiling(DllStructGetData($aInfo[0], "Height"))
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_FontDispose($hFont)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_GraphicsDispose($hGraphic)
;~  _GDIPlus_Shutdown()
GUIDelete($hGui)
Local $aSize[2] = [$iWidth, $iHeight]
Return $aSize
EndFunc   ;==>_GetTextSize

Func _ProcessHover($hWnd, $Msg, $iIDTimer, $dwTime)
If $OwnTabHoverSwitch > 1 And $OwnTabHoverCtrl <> "" Then
  If $aOwnTabHoverCount < $OwnTabHoverSwitch Then $aOwnTabHoverCount += 1
  If $aOwnTabHoverCount >= $OwnTabHoverSwitch Then
   ControlClick($hOwnTabGui, "", $OwnTabHoverCtrl)
   $aOwnTabHoverCount = 0
   $OwnTabHoverCtrl = ""
  EndIf
EndIf
$ControlID = _HoverCheck()
If IsArray($ControlID) Then
  If $ControlID[0] = "AcquiredHover" Then
   $OwnTabHoverCtrl = $ControlID[1]
   $aOwnTabHoverCount = 0
   If $OwnTabHoverSwitch = "1" Then
    Return ControlClick($hOwnTabGui, "", $OwnTabHoverCtrl)
   Else
    _HoverFound($ControlID[1])
   EndIf
  Else
   If $ControlID[1] <> "" Then
    _HoverLost($ControlID[1])
    $OwnTabHoverCtrl = ""
   EndIf
  EndIf
EndIf
EndFunc   ;==>_ProcessHover

Func _HoverLost($ControlID)
If _OwnTab_IsAlarmed($ControlID) Then Return
GUICtrlSetBkColor($ControlID, $OwnTabHoverCol[1])
If GUICtrlRead($ControlID + 2) <> "" Then _SetBkIcon($ControlID + 1, $OwnTabHoverCol[1], GUICtrlRead($ControlID + 2), GUICtrlRead($ControlID + 3), GUICtrlRead($ControlID + 4), GUICtrlRead($ControlID + 4))
EndFunc   ;==>_HoverLost

Func _HoverFound($ControlID)
If _OwnTab_IsAlarmed($ControlID) Then Return
GUICtrlSetBkColor($ControlID, $OwnTabHoverCol[0])
If GUICtrlRead($ControlID + 2) <> "" Then _SetBkIcon($ControlID + 1, $OwnTabHoverCol[0], GUICtrlRead($ControlID + 2), GUICtrlRead($ControlID + 3), GUICtrlRead($ControlID + 4), GUICtrlRead($ControlID + 4))
EndFunc   ;==>_HoverFound

Func _OwnTab_IsAlarmed($hCtrl)
Local $iSearch = _ArraySearch($aOwnTabAlarm, $hCtrl)
If $iSearch = -1 Then Return 0
Return SetExtended($iSearch, 1)
EndFunc

#Region _MouseHover.au3
;====================================================================================================================================
; UDF Name: _MouseHover.au3
;
; Author: marfdaman (Marvin)
;
; Contributions: RazerM (adding SetText parameter to _HoverFound and _HoverUndo).
;
; email: marfdaman at gmail dot com
;
; Use: Enable hover events for controls
;
; Note(s): If you want to use this i.c.w. an AdlibEnable in your current script, make your Adlib call "_HoverCheck()" as well.
; In this case, _HoverOn must NOT be called.
;====================================================================================================================================


;===============================================================================
; Description:   _HoverAddCtrl
; Parameter(s):  $___ControlID -> Control ID of Control to be hoverchecked
;
; Requirement:   Array.au3
; Return Value(s): None
;===============================================================================
Func _HoverAddCtrl($___ControlID)
_ArrayAdd($HoverArray, $___ControlID)
EndFunc   ;==>_HoverAddCtrl


;===============================================================================
; Description:   Checks whether the mousecursor is hovering over any of the defined controls.
; Parameter(s):  None
; Requirement:   None
; Return Value(s): If a Control has matched, an array will be returned, with $array[1] being either
;   "AcquiredHover" or "LostHover". $array[2] will contain the Control ID.
;   It is recommended that you put this function in an AdlibEnable, since it's EXTREMELY
;   resource friendly.
;===============================================================================
Func _HoverCheck()
$HoverData = GUIGetCursorInfo()
If Not IsArray($HoverData) Then Return
$Temp_Found = 0
For $i = 1 To UBound($HoverArray) - 1
  If $HoverData[4] = $HoverArray[$i] Or $HoverData[4] = $HoverArray[$i] + 1 Then
   $Temp_Found = $i
  EndIf
Next
Select
  Case $Temp_Found = 0 And $HoverActive = 1 Or $Temp_Found <> 0 And $Temp_Found <> $Global_I And $HoverActive = 1
   $HoverActive = 0
   $Temp_Found = 0
   $szTemp_Array[0] = "LostHover"
   $szTemp_Array[1] = $HoverArray[$Global_I]
   Return $szTemp_Array
  Case $Temp_Found > 0 And $HoverActive = 0
   $Global_I = $Temp_Found
   $HoverActive = 1
   $Temp_Found = 0
   $szTemp_Array[0] = "AcquiredHover"
   $szTemp_Array[1] = $HoverArray[$Global_I]
   Return $szTemp_Array
EndSelect
EndFunc   ;==>_HoverCheck
#EndRegion _MouseHover.au3

Func _SetBkIcon($ControlID, $iBackground, $sIcon, $iIndex, $iWidth, $iHeight)
;Yashied
;http://www.autoitscript.com/forum/index.php?showtopic=92207&view=findpost&p=662886
Const $STM_SETIMAGE = 0x0172

Local $tIcon, $tID, $hDC, $hBackDC, $hBackSv, $hBitmap, $hImage, $hIcon, $hBkIcon

$tIcon = DllStructCreate('hwnd')
$tID = DllStructCreate('hwnd')
$hIcon = DllCall('user32.dll', 'int', 'PrivateExtractIcons', 'str', $sIcon, 'int', $iIndex, 'int', $iWidth, 'int', $iHeight, 'ptr', DllStructGetPtr($tIcon), 'ptr', DllStructGetPtr($tID), 'int', 1, 'int', 0)
If (@error) Or ($hIcon[0] = 0) Then
  Return SetError(1, 0, 0)
EndIf
$hIcon = DllStructGetData($tIcon, 1)
$tIcon = 0
$tID = 0

$hDC = _WinAPI_GetDC(0)
$hBackDC = _WinAPI_CreateCompatibleDC($hDC)
$hBitmap = _WinAPI_CreateSolidBitmap(0, $iBackground, $iWidth, $iHeight)
$hBackSv = _WinAPI_SelectObject($hBackDC, $hBitmap)
_WinAPI_DrawIconEx($hBackDC, 0, 0, $hIcon, 0, 0, 0, 0, $DI_NORMAL)

;~  _GDIPlus_Startup()

$hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
$hBkIcon = DllCall($ghGDIPDll, 'int', 'GdipCreateHICONFromBitmap', 'hWnd', $hImage, 'int*', 0)
$hBkIcon = $hBkIcon[2]
_GDIPlus_ImageDispose($hImage)

GUICtrlSendMsg($ControlID, $STM_SETIMAGE, $IMAGE_ICON, _WinAPI_CopyIcon($hBkIcon))
_WinAPI_RedrawWindow(GUICtrlGetHandle($ControlID))

;~  _GDIPlus_Shutdown()

_WinAPI_SelectObject($hBackDC, $hBackSv)
_WinAPI_DeleteDC($hBackDC)
_WinAPI_ReleaseDC(0, $hDC)
_WinAPI_DeleteObject($hBkIcon)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteObject($hIcon)

Return SetError(0, 0, 1)
EndFunc   ;==>_SetBkIcon

as finishing touch god created the dutch

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0