Eigenes Tab-Register (OwnTab-UDF)

  • Meinst du das so?

    Spoiler anzeigen
    [autoit]

    #include "OwnTab.au3"

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("Funkey's OwnTab-UDF Example 2", 500, 345)
    GUISetBkColor(0xbbbbbb)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aTabText[4] = ["Item 1", "Much More Longer Item 2", "Pic", "Status"] ;Declare the regions for the OwnTab-control
    Global $aCtrlTab = _OwnTabCreate($aTabText, 10, 10, 480, 300, 25, 0xD5D5D5, 0xCFE0E7, 0xCFE0E7)

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    #Region Tab1
    _OwnTabAdd($aCtrlTab) ;Start controls tab1
    Global $Edit1 = GUICtrlCreateEdit("Edit in Tab1", 20, 50, 300, 50, 0)
    Global $Button1 = GUICtrlCreateButton("Simulate an alarm", 20, 120, 300, 20)
    #EndRegion Tab1

    [/autoit] [autoit][/autoit] [autoit]

    #Region Tab2
    _OwnTabAdd($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

    [/autoit] [autoit][/autoit] [autoit]

    #Region Tab3
    _OwnTabAdd($aCtrlTab) ;Start controls tab3
    Global $Edit3 = GUICtrlCreatePic(@DocumentsCommonDir & '\Eigene Bilder\Beispielbilder\Winter.jpg', 20, 45, 460, 280)
    #EndRegion Tab3

    [/autoit] [autoit][/autoit] [autoit]

    #Region Tab4
    _OwnTabAdd($aCtrlTab) ;Start controls tab4
    Global $Button4 = GUICtrlCreateButton("Acknowledge the alarm", 20, 120, 300, 20)
    #EndRegion Tab4

    [/autoit] [autoit][/autoit] [autoit]

    _OwnTabEnd($aCtrlTab) ;End OwnTab
    _OwnTabSwitch($aCtrlTab, 1) ;inizialize the OwnTab
    GUISetState()
    _OwnTabHover($aCtrlTab, 0xFFFF88) ;start hover-function if you want

    [/autoit] [autoit][/autoit] [autoit]

    Local $msg
    Do
    $msg = GUIGetMsg()
    For $a = 1 To UBound($aCtrlTab, 1) - 1
    If $msg = $aCtrlTab[$a][0] Then
    _OwnTabSwitch($aCtrlTab, $a)
    _Function($a)
    EndIf
    Next
    If $msg = $Button1 Then _OwnTabSetAlarm($aCtrlTab, 4, 0xFF0000, 0xFF0000)
    If $msg = $Button4 Then _OwnTabReSetAlarm($aCtrlTab, 4)
    Sleep(10)
    Until $msg = -3

    [/autoit] [autoit][/autoit] [autoit]

    Func _Function($iIndex)
    MsgBox(0, "OwnTab-Control", "Es wurde Register " & $iIndex & " ausgewählt.")
    EndFunc ;==>_Function

    [/autoit]

    Das kannst du doch machen wie du gerade lustig bist. ;)

  • Echt top :D
    Sieht super aus :)
    Aber da ist ein kleiner Fehler:
    Wenn man Switch on Hover aktiviert hat, kann man nicht auf ein alarmiertes Tab wechseln...

  • Danke Oscar und Zacharja!! 8)

    Zitat von Zacharja

    Wenn man Switch on Hover aktiviert hat, kann man nicht auf ein alarmiertes Tab wechseln...


    Diese Einschränkung ist mir (neben anderen) schon bekannt, aber man kann einfach nicht immer alles haben ;)
    Vllt fällt mir mal eine Lösung ein, wie das einfach zu bewerkstelligen ist.


    Screenshot im ersten Post ergänzt.

  • Neue Funktionen!!
    Vorerst nur im Beispiel-Skript

    * Schriftfarbe der Register ändern
    * Einzelne Register deaktivieren

    Spoiler anzeigen
    [autoit]

    #include "OwnTab.au3"

    [/autoit] [autoit][/autoit] [autoit]

    Local $hGui = GUICreate("Funkey's OwnTab-UDF Example", 500, 350)
    GUISetBkColor(0xbbbbbb)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aTabText[4] = ["Item 1", "Register without icon", "Pic", "Status"] ;Declare the regions for the OwnTab-control
    Local $aTabIcons[4][2] = [["shell32.dll", Random(1, 234, 1)],[""],["shell32.dll", Random(1, 234, 1)], ["shell32.dll", Random(1, 234, 1)]]
    Global $aCtrlTab = _OwnTab_Create($hGui, $aTabText, 10, 10, 480, 300, 30, 0xD5D5D5, 0xCFE0E7, 0xCFE0E7, $aTabIcons)

    [/autoit] [autoit][/autoit] [autoit]

    #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", 20, 180)
    GUICtrlSetBkColor(-1, 0xCFE0E7)
    #EndRegion Tab1

    [/autoit] [autoit][/autoit] [autoit]

    #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

    [/autoit] [autoit][/autoit] [autoit]

    #Region Tab3
    _OwnTab_Add($aCtrlTab) ;Start controls tab3
    Global $Edit3 = GUICtrlCreatePic(@DocumentsCommonDir & '\Eigene Bilder\Beispielbilder\Winter.jpg', 20, 55, 460, 280)
    #EndRegion Tab3

    [/autoit] [autoit][/autoit] [autoit]

    #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)
    #EndRegion Tab4

    [/autoit] [autoit][/autoit] [autoit]

    _OwnTab_End($aCtrlTab)
    _OwnTab_Switch($aCtrlTab, 1) ;inizialize the OwnTab
    _OwnTab_Disable($aCtrlTab, 3)
    _OwnTab_SetFontCol($aCtrlTab, 0xFF)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    Local $msg
    Do
    $msg = GUIGetMsg()
    For $a = 1 To UBound($aCtrlTab, 1) - 1
    If $msg = $aCtrlTab[$a][0] Then
    _OwnTab_Switch($aCtrlTab, $a)
    EndIf
    Next
    If $msg = $Button1 Then _OwnTab_SetAlarm($aCtrlTab, 4, 0xFF0000, 0xFF0000)
    If $msg = $Button4 Then _OwnTab_ResetAlarm($aCtrlTab, 4)
    If $msg = $Button5 Then _OwnTab_Enable($aCtrlTab, 3)
    If $msg = $Button6 Then _OwnTab_Disable($aCtrlTab, 3)
    If $msg = $Box1 Then
    If GUICtrlRead($Box1) = 1 Then
    _OwnTab_Hover($aCtrlTab, 0xFFFF88, 15)
    Else
    _OwnTab_Hover($aCtrlTab, 0xFFFF88, 0)
    EndIf
    EndIf
    Sleep(10)
    Until $msg = -3

    [/autoit] [autoit][/autoit] [autoit]

    #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

    [/autoit] [autoit][/autoit] [autoit]

    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
    #EndRegion Disable and Enable Tab-Register

    [/autoit] [autoit][/autoit] [autoit]

    Func _OwnTab_SetFontCol($aOwnTab, $nColor)
    For $i = 1 To UBound($aOwnTab, 1) - 1
    GUICtrlSetColor($aOwnTab[$i][0], $nColor)
    Next
    EndFunc

    [/autoit]
  • Weiß nicht ob es euch auch so geht, aber sobald Switch on Hover aktiv ist, und ich zu dem "Tab In Tab"-Tab wechsel, fängt das Tab im Tab an, stark zu flackern. Hoffe das war verständlich ausgedrückt. Wenn nicht mach ich auch gern ein Video davon.

    Desweiteren fände ich es klasse, wenn die Alarm funktion einen Parameter bieten würde, der angiebt, dass der Tab nicht nur Rot "leuchten" sondern Rot blinken soll.

  • Bombe! Wirklich exzellente Arbeit - ich freu mich auf mehr :)

    Darf ich trotzdem ein bisschen meckern? :P
    SwitchOnHover scheint noch buggy zu sein, wenn ich es aktiviere, deaktiviere und wieder aktiviere. Kann das jemand anderes auch nachvollziehen oder liegts an mir?
    Ich versuch noch mehr Bugs zu finden (hehe, ich liebe es anderer Leute Skripte aufn Kopf zu stellen :D)

  • Hallo funkey,

    ich finde, dass Deine UDF immer besser und besser wird :rock:

    Schau mal, ist das ein Bug?

    [Blockierte Grafik: http://deepsoftware.spacequadrat.de/Downloads/www.AutoIt.de/1.jpg]

    klickt man jetzt aber auf eins der letzten 3 Tabs passiert das:

    [Blockierte Grafik: http://deepsoftware.spacequadrat.de/Downloads/www.AutoIt.de/2.jpg]

    Grüße

  • Zitat von blubbstar

    GuiCtrlCreateGraphic funktioniert irgendwie nicht, scheint so als würde es jedesmal wieder gehided werden ?¿? Komische Sache Flackert nämlich kurz auf beim Tabswitch.


    Danke für den Hinweis! Man kann kein Grafik-Element über ein farbiges Label legen, aber wenn der Hintergrund des OwnTabs die selbe Farbe wie der Gui-Hintergrund haben darf, dann kannst du einfach in der OwnTab-UDF in Zeile 60

    [autoit]

    GUICtrlSetBkColor(-1, $nColBg)

    [/autoit]

    durch

    [autoit]

    GUICtrlSetBkColor(-1, -2)

    [/autoit]

    ersetzen.

  • Hab mal was getestet, um die typischen "Tab-Ecken" zu bekommen. :rock:
    Jetzt hab ich wieder ein Problem mit den "Tab in Tabs", aber das werde ich später lösen.

    Example
    [autoit]

    #include "OwnTab.au3"

    [/autoit] [autoit][/autoit] [autoit]

    Local $hGui = GUICreate("Funkey's OwnTab-UDF Example", 500, 600)
    GUISetBkColor(0xbbbbbb)

    [/autoit] [autoit][/autoit] [autoit]

    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", -131],[""],["shell32.dll", -140],["shell32.dll", -91], ["shell32.dll", -44]]
    Global $aCtrlTab = _OwnTab_Create($hGui, $aTabText, 10, 10, 480, 300, 30, 0xD5D5D5, 0xCFE0E7, 0xCFE0E7, $aTabIcons)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    #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 -->", 30, 180)
    GUICtrlSetBkColor(-1, 0xCFE0E7)
    Global $Input1 = GUICtrlCreateInput("1", 200, 180, 50, 20)
    GUICtrlCreateUpdown($Input1)
    GUICtrlSetLimit(-1, 15, 1)
    #EndRegion Tab1

    [/autoit] [autoit][/autoit] [autoit]

    #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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    #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

    [/autoit] [autoit][/autoit] [autoit]

    #Region Tab5 and "Tab in Tab"
    _OwnTab_Add($aCtrlTab) ;Start controls tab5
    GUICtrlCreateLabel("Style Black", 30, 50, 200, 20, 0x201)
    GUICtrlCreateLabel("Style White", 270, 50, 200, 20, 0x201)
    #EndRegion Tab5

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    #Region OwnTab2
    Local $aTabText[2] = ["Tab1", "New Info"] ;Declare the regions for the OwnTab-control
    Local $aTabIcons[2][2] = [["shell32.dll", -21],["shell32.dll", -41]]
    Global $aCtrlTab2 = _OwnTab_Create($hGui, $aTabText, 30, 350, 200, 200, 25, 0xD5D5D5, 0xffc0c0, 0xFFc0c0, $aTabIcons)
    _OwnTab_Add($aCtrlTab2) ;Start controls tab1
    Global $BtnSet = GUICtrlCreateButton("Simulate", 80, 450, 100, 20)
    _OwnTab_Add($aCtrlTab2) ;Start controls tab2
    Global $BtnReset = GUICtrlCreateButton("Acknowledge", 80, 470, 100, 20)
    _OwnTab_End($aCtrlTab2)
    #EndRegion

    [/autoit] [autoit][/autoit] [autoit]

    #Region OwnTab3
    Local $aTabText[2] = ["Tab1", "Tab2"] ;Declare the regions for the OwnTab-control
    Local $aTabIcons[2][2] = [["shell32.dll", -11],["shell32.dll", -61]]
    Global $aCtrlTab3 = _OwnTab_Create($hGui, $aTabText, 270, 350, 200, 190, 35, 0xD5D5D5, 0x00ff00, 0x00ff00, $aTabIcons)
    _OwnTab_Add($aCtrlTab3) ;Start controls tab1
    GUICtrlCreateLabel("Just testing...", 280, 450, 100, 20)
    GUICtrlSetBkColor(-1, -2)
    _OwnTab_Add($aCtrlTab3) ;Start controls tab2
    GUICtrlCreateLabel("Hello from tab2", 280, 450, 100, 20)
    GUICtrlSetBkColor(-1, -2)
    _OwnTab_End($aCtrlTab3)
    #EndRegion

    [/autoit] [autoit][/autoit] [autoit]

    _OwnTab_SetFontCol($aCtrlTab, 0xFF) ;new: set font-color
    _OwnTab_SetFontCol($aCtrlTab2, 0xFF0000) ;new: set font-color

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    ;~ _ArrayDisplay($aCtrlTab)
    Local $msg

    [/autoit] [autoit][/autoit] [autoit]

    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, 0xFFFF)
    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

    [/autoit]
    New OwnTab.au3
    [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    #cs
    Copyrights to funkey from Autoit.de
    #ce

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    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, "")
    GUICtrlCreateLabel("", $xPos, $yPos + $iItemHeight, $iWidth, $iHeight, 0x411000, 1)
    GUICtrlSetState(-1, 128) ;$GUI_DISABLE
    GUICtrlSetBkColor(-1, $nColBg)
    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] = _OwnTab_CreateTab($hWnd, $aTabText[$i], $xPos + $xLast + 5, $yPos + 2, $aCtrl[$i + 1][9], $iItemHeight, $nColNoSel, $Icons[$i][0])
    $aCtrl[$i + 1][10] = @extended ;hWnd of the tab (Child-Gui)
    _HoverAddCtrl($aCtrl[$i + 1][0])
    If $Icons[$i][0] <> "" Then
    $aCtrl[$i + 1][6] = GUICtrlCreateIcon($Icons[$i][0], $Icons[$i][1], 6, 4, $iItemHeight - 8, $iItemHeight - 8)
    Else
    $aCtrl[$i + 1][6] = GUICtrlCreateDummy()
    EndIf
    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
    GUICtrlCreateLabel($aCtrl[$i + 1][10], -200, -200) ;hWnd for information
    $aCtrl[$i + 1][2] = $nColNoSel
    $aCtrl[$i + 1][3] = $nColSel
    $xLast += $aCtrl[$i + 1][9]
    Next
    GUISwitch($hWnd)
    $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 + 7, $yPos + $iItemHeight - 1, $aSize2[$i][0] + 1 + $iOffset, 4)
    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

    [/autoit] [autoit][/autoit] [autoit]

    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
    Local $hWnd_old
    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
    $hWnd_old = GUISwitch($aOwnTab[$s][10])
    GUISetBkColor($aOwnTab[$s][2])
    GUISwitch($hWnd_old)
    EndIf
    If _ArraySearch($OwnTabHoverHelp, $aOwnTab[$s][0]) = -1 Then
    _OwnTab_RegisterHover($aOwnTab, $s)
    EndIf
    Else
    GUICtrlSetFont($aOwnTab[$s][0], -1, 1000)
    If Not _OwnTab_IsAlarmed($aOwnTab[$s][0]) Then
    $hWnd_old = GUISwitch($aOwnTab[$s][10])
    GUISetBkColor($aOwnTab[$s][3])
    GUISwitch($hWnd_old)
    EndIf
    GUICtrlSetState($aOwnTab[$s][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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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
    GUISetBkColor($AlarmColAct, GUICtrlRead($aOwnTabAlarm[$i][0] + 5))
    Next
    EndFunc ;==>_OwnTab_AlarmBlink

    [/autoit] [autoit][/autoit] [autoit]

    Func _OwnTab_SetAlarm(ByRef $aOwnTab, $iIndex, $nAlarmSel = 0xFF0000)
    Local $hCtrl = $aOwnTab[$iIndex][0]
    Local $iSearch = _ArraySearch($aOwnTabAlarm, $hCtrl)
    If $iSearch <> -1 Then
    $aOwnTabAlarm[$iSearch][2] = $aOwnTab[$iIndex][2]
    Return
    EndIf
    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]
    EndFunc ;==>_OwnTab_SetAlarm

    [/autoit] [autoit][/autoit] [autoit]

    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]
    If $aOwnTab[0][0] <> $iIndex Then
    GUISetBkColor($aOwnTab[0][2], GUICtrlRead($aOwnTab[$iIndex][0] + 5))
    Else
    GUISetBkColor($aOwnTab[0][3], GUICtrlRead($aOwnTab[$iIndex][0] + 5))
    GUICtrlSetBkColor($aOwnTab[$iIndex][1], $aOwnTab[0][3])
    EndIf
    EndFunc ;==>_OwnTab_ResetAlarm

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    #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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func _OwnTab_Hide(ByRef $aOwnTab, $iIndex)
    If $iIndex = 0 Or $iIndex > UBound($aOwnTab, 1) - 1 Then Return SetError(1)
    Local $HWnd = HWnd(GUICtrlRead($aOwnTab[$iIndex][0] + 5))
    If Not BitAND(WinGetState($HWnd), 2) Then Return
    GUISetState(@SW_HIDE, $HWnd)
    GUICtrlSetState($aOwnTab[$iIndex][1], 32) ;$GUI_HIDE

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    For $o = $iIndex + 1 To UBound($aOwnTab, 1) - 1
    WinMove(HWnd(GUICtrlRead($aOwnTab[$o][0] + 5)), "", $Offset, $aOwnTab[0][9])
    GUICtrlSetPos($aOwnTab[$o][1], $Offset + 2, $aOwnTab[0][9] + $aOwnTab[0][1] - 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

    [/autoit] [autoit][/autoit] [autoit]

    Func _OwnTab_Show(ByRef $aOwnTab, $iIndex, $iActivate = 0)
    If $iIndex = 0 Or $iIndex > UBound($aOwnTab, 1) + 1 Then Return SetError(1)
    Local $HWnd = HWnd(GUICtrlRead($aOwnTab[$iIndex][0] + 5))
    If BitAND(WinGetState($HWnd), 2) Then Return

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    For $o = UBound($aOwnTab, 1) - 1 To $iIndex + 1 Step -1
    WinMove(HWnd(GUICtrlRead($aOwnTab[$o][0] + 5)), "", $Offset, $aOwnTab[0][9])
    GUICtrlSetPos($aOwnTab[$o][1], $Offset + 2, $aOwnTab[0][9] + $aOwnTab[0][1] - 3)
    $Offset -= $aOwnTab[$o - 1][9]
    Next
    GUISetState(@SW_SHOW, $HWnd)
    If $iActivate Then
    _OwnTab_Switch($aOwnTab, $iIndex)
    EndIf
    EndFunc ;==>_OwnTab_Show

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func _OwnTab_CreateTab($hWnd, $sText, $iX, $iY, $iWidth, $iHeight, $nCol = 0xbbbbbb, $sIcon = "")
    Local $rgn, $rgn2, $rel = $iHeight/5
    Local $hGui = GUICreate("OwnTab", $iWidth, $iHeight, $iX, $iY, 0x40000000, 0, $hWnd)
    GUISetBkColor($nCol)
    $rgn = _WinAPI_CreateRectRgn(0, $rel, $iX + $iWidth, $iY + $iHeight)
    For $i = 0 To $rel - 1
    $rgn2 = _WinAPI_CreateRectRgn($rel - $i, $i, $iWidth - $rel + $i + 1, $i + 1)
    _WinAPI_CombineRgn($rgn, $rgn, $rgn2, $RGN_OR)
    _WinAPI_DeleteObject($rgn2)
    Next
    _WinAPI_SetWindowRgn($hGui, $rgn)
    Local $Label = GUICtrlCreateLabel($sText, 0, 0, $iWidth, $iHeight, 0x201 + ($sIcon <> ""), 1)
    GUICtrlSetBkColor(-1, -2)
    GUISetState()
    Return SetExtended($hGui, $Label)
    EndFunc ;==>_OwnTabCreateTab

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func _HoverLost($ControlID)
    If _OwnTab_IsAlarmed($ControlID) Then Return
    GUISetBkColor($OwnTabHoverCol[1], GUICtrlRead($ControlID + 5))
    EndFunc ;==>_HoverLost

    [/autoit] [autoit][/autoit] [autoit]

    Func _HoverFound($ControlID)
    If _OwnTab_IsAlarmed($ControlID) Then Return
    GUISetBkColor($OwnTabHoverCol[0], GUICtrlRead($ControlID + 5))
    EndFunc ;==>_HoverFound

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    #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.
    ;====================================================================================================================================

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; 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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; 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($hOwnTabGui) ;modified by funkey for use with OwnTab-UDF
    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

    [/autoit]
  • Jetzt kann jeder seine eigenen OwnTab-Styles entwerfen! Schreibt euch eure eigene Style-Func für die OwnTab-UDF oder ihr schreibt mir eure Ideen, die ich dann hoffentlich umsetzen kann!

    Hier die Vorlage mit den derzeitigen Styles:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #Include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate("Overview OwnTab-Styles", 640, 400)
    GUISetBkColor(0xFF080)

    [/autoit] [autoit][/autoit] [autoit]

    _OwnTab_Style1($hGui, "Style 1", 20, 20, 200, 45)
    _OwnTab_Style1($hGui, "Style 1", 220, 20, 200, 45)
    _OwnTab_Style1($hGui, "Style 1", 420, 20, 200, 45)

    [/autoit] [autoit][/autoit] [autoit]

    _OwnTab_Style2($hGui, "Style 2", 20, 80, 200, 45)
    _OwnTab_Style2($hGui, "Style 2", 220, 80, 200, 45)
    _OwnTab_Style2($hGui, "Style 2", 420, 80, 200, 45)

    [/autoit] [autoit][/autoit] [autoit]

    _OwnTab_Style3($hGui, "Style 3", 20, 140, 200, 45)
    _OwnTab_Style3($hGui, "Style 3", 220, 140, 200, 45)
    _OwnTab_Style3($hGui, "Style 3", 420, 140, 200, 45)

    [/autoit] [autoit][/autoit] [autoit]

    _OwnTab_Style4($hGui, "Style 4", 20, 200, 200, 45)
    _OwnTab_Style4($hGui, "Style 4", 220, 200, 200, 45)
    _OwnTab_Style4($hGui, "Style 4", 420, 200, 200, 45)

    [/autoit] [autoit][/autoit] [autoit]

    _OwnTab_Style5($hGui, "Style 5", 20, 260, 200, 45)
    _OwnTab_Style5($hGui, "Style 5", 220, 260, 200, 45)
    _OwnTab_Style5($hGui, "Style 5", 420, 260, 200, 45)

    [/autoit] [autoit][/autoit] [autoit]

    GUISwitch($hGui)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    Local $msg
    Do
    $msg = GUIGetMsg()
    If $msg > 0 Then MsgBox(0, "OwnTab", "Tab mit der ID " & $msg & " gedrückt.")
    Until $msg = -3

    [/autoit] [autoit][/autoit] [autoit]

    Func _OwnTab_Style1($hWnd, $sText, $iX, $iY, $iWidth, $iHeight, $sIcon = "")
    Local $rgn, $rgn2, $rel = $iHeight/5
    Local $hGui = GUICreate("OwnTab", $iWidth, $iHeight, $iX, $iY, 0x40000000, 0, $hWnd)
    $rgn = _WinAPI_CreateRectRgn(0, $rel, $iX + $iWidth, $iY + $iHeight)
    For $i = 0 To $rel - 1
    $rgn2 = _WinAPI_CreateRectRgn($rel - $i, $i, $iWidth - $rel + $i + 1, $i + 1)
    _WinAPI_CombineRgn($rgn, $rgn, $rgn2, $RGN_OR)
    _WinAPI_DeleteObject($rgn2)
    Next
    _WinAPI_SetWindowRgn($hGui, $rgn)
    Local $Label = GUICtrlCreateLabel($sText, 0, 0, $iWidth, $iHeight, 0x201 + ($sIcon <> ""), 1)
    GUICtrlSetBkColor(-1, -2)
    GUISetState()
    Return SetExtended($hGui, $Label)
    EndFunc ;==>_OwnTabCreateTab

    [/autoit] [autoit][/autoit] [autoit]

    Func _OwnTab_Style2($hWnd, $sText, $iX, $iY, $iWidth, $iHeight, $sIcon = "")
    Local $rgn, $rgn2, $rel = $iHeight/5
    Local $hGui = GUICreate("OwnTab", $iWidth, $iHeight, $iX, $iY, 0x40000000, 0, $hWnd)
    Local $Label = GUICtrlCreateLabel($sText, 0, 0, $iWidth, $iHeight, 0x201 + ($sIcon <> ""), 1)
    GUICtrlSetBkColor(-1, -2)
    GUISetState()
    Return SetExtended($hGui, $Label)
    EndFunc ;==>_OwnTabCreateTab

    [/autoit] [autoit][/autoit] [autoit]

    Func _OwnTab_Style3($hWnd, $sText, $iX, $iY, $iWidth, $iHeight, $sIcon = "")
    Local $rgn, $rgn2, $diameter = $iWidth
    Local $hGui = GUICreate("OwnTab", $iWidth, $iHeight, $iX, $iY, 0x40000000, 0, $hWnd)
    $rgn = _WinAPI_CreateRectRgn(0, $iHeight/2, $iWidth, $iHeight)
    $rgn2 = _WinAPI_CreateRoundRectRgn(0, 0, $iWidth, $iHeight, $diameter, $diameter)
    _WinAPI_CombineRgn($rgn, $rgn, $rgn2, $RGN_OR)
    _WinAPI_DeleteObject($rgn2)
    _WinAPI_SetWindowRgn($hGui, $rgn)
    Local $Label = GUICtrlCreateLabel($sText, 0, 0, $iWidth, $iHeight, 0x201 + ($sIcon <> ""), 1)
    GUICtrlSetBkColor(-1, -2)
    GUISetState()
    Return SetExtended($hGui, $Label)
    EndFunc ;==>_OwnTabCreateTab

    [/autoit] [autoit][/autoit] [autoit]

    Func _OwnTab_Style4($hWnd, $sText, $iX, $iY, $iWidth, $iHeight, $sIcon = "")
    Local $rgn, $rgn2, $rel = $iHeight/5
    Local $hGui = GUICreate("OwnTab", $iWidth, $iHeight, $iX, $iY, 0x40000000, 0, $hWnd)
    $rgn = _WinAPI_CreateRectRgn($rel, 0, $iWidth - $rel, 1)
    For $i = 1 To $iHeight - 1
    $rgn2 = _WinAPI_CreateRectRgn($rel - ($rel / $iHeight * $i), $i, $iWidth - $rel + ($rel / $iHeight * $i) + 1, $i + 1)
    _WinAPI_CombineRgn($rgn, $rgn, $rgn2, $RGN_OR)
    _WinAPI_DeleteObject($rgn2)
    Next
    _WinAPI_SetWindowRgn($hGui, $rgn)
    Local $Label = GUICtrlCreateLabel($sText, 0, 0, $iWidth, $iHeight, 0x201 + ($sIcon <> ""), 1)
    GUICtrlSetBkColor(-1, -2)
    GUISetState()
    Return SetExtended($hGui, $Label)
    EndFunc ;==>_OwnTabCreateTab

    [/autoit] [autoit][/autoit] [autoit]

    Func _OwnTab_Style5($hWnd, $sText, $iX, $iY, $iWidth, $iHeight, $sIcon = "")
    Local $rgn, $rgn2, $diameter = $iHeight
    Local $hGui = GUICreate("OwnTab", $iWidth, $iHeight, $iX, $iY, 0x40000000, 0, $hWnd)
    $rgn = _WinAPI_CreateRoundRectRgn($iWidth+ 1, 0, 0, $iWidth, $diameter, $diameter)
    _WinAPI_SetWindowRgn($hGui, $rgn)
    Local $Label = GUICtrlCreateLabel($sText, 0, 0, $iWidth, $iHeight, 0x201 + ($sIcon <> ""), 1)
    GUICtrlSetBkColor(-1, -2)
    GUISetState()
    Return SetExtended($hGui, $Label)
    EndFunc ;==>_OwnTabCreateTab

    [/autoit]

    Edit: Styles hinzugefügt

    • Offizieller Beitrag

    Servus Funkey.

    Das ganze wird ja immer besser. :thumbup:
    Der Link der Screenhot´s funzt nicht, nur mal so nebenbei. :(