clarinets101

Combox list ToolTip on Mouseover

2 posts in this topic

I have a utility that I wrote to assign printers from a list in an ini file to a host name, for a printer mapping utility.  My issue is that as the printer list grows, sometimes it can be difficult to determine which printer is needed just based on the name.  I know it's possible to have tool tips off of buttons, labels, and even the combolist dropdown button (using guictrlsettip), but what I would like to accomplish is a tooltip on one of the items in the dropdown as the mouse is hovered over it based off the location in the ini file that lists the printers.  I have performed several google searches and couldn't find anything right off.  Maybe I'm not searching the right terms.  Please advise.

ini file example:

[PrinterName]
Installed=Y/N
Location=Printer Location
Model=Printer Model
IP=IP Address

Script Example:

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiComboBox.au3>

$hostini=@ScriptDir&"\host.ini"
$printerini=@ScriptDir&"\printers.ini"
$printers=IniReadSectionNames($printerini)
$string=""

$aprinters=IniReadSectionNames($printerini)
$sprinters=""
for $i = 1 to $aprinters[0]
   $sprinters &= "|" & $aprinters[$i]
Next

$ahosts=IniReadSectionNames($hostini)
$shosts=""
For $j=1 To $ahosts[0]
    $shosts&="|"&$ahosts[$j]
Next

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Host.ini", 181, 402, -1, -1)
$Label1 = GUICtrlCreateLabel("Host Name:", 16, 24, 60, 17)
$Label2 = GUICtrlCreateLabel("Printer 1:", 16, 80, 46, 17)
$Combo6 = GUICtrlCreateCombo("", 16, 48, 145, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SORT,$CBS_UPPERCASE))
$Combo1 = GUICtrlCreateCombo("", 16, 104, 145, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SORT))
$Label3 = GUICtrlCreateLabel("Printer 2:", 16, 136, 46, 17)
$Combo2 = GUICtrlCreateCombo("", 16, 160, 145, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SORT))
$Label4 = GUICtrlCreateLabel("Printer 3:", 16, 192, 46, 17)
$Combo3 = GUICtrlCreateCombo("", 16, 216, 145, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SORT))
$Label5 = GUICtrlCreateLabel("Printer 4:", 16, 248, 46, 17)
$Combo4 = GUICtrlCreateCombo("", 16, 272, 145, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SORT))
$Label6 = GUICtrlCreateLabel("Printer 5:", 16, 304, 46, 17)
$Combo5 = GUICtrlCreateCombo("", 16, 328, 145, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_SORT))
$Button1 = GUICtrlCreateButton("OK", 120, 360, 43, 25)
$Button2 = GUICtrlCreateButton("Reset", 16, 360, 43, 25)
$Button3 = GUICtrlCreateButton("Delete", 68, 360, 43, 25)
guictrlsetdata($Combo1, $sprinters, "")
guictrlsetdata($Combo2, $sprinters, "")
guictrlsetdata($Combo3, $sprinters, "")
guictrlsetdata($Combo4, $sprinters, "")
guictrlsetdata($Combo5, $sprinters, "")
guictrlsetdata($Combo6, $shosts, "")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Combo6
            $printer1=IniRead($hostini,GUICtrlRead($Combo6),"Printer1","")
            $printer2=IniRead($hostini,GUICtrlRead($Combo6),"Printer2","")
            $printer3=IniRead($hostini,GUICtrlRead($Combo6),"Printer3","")
            $printer4=IniRead($hostini,GUICtrlRead($Combo6),"Printer4","")
            $printer5=IniRead($hostini,GUICtrlRead($Combo6),"Printer5","")
            GUICtrlSetData($Combo1,$printer1)
            If $printer2 = "" Then
                GUICtrlSetData($Combo2, $sprinters, "")
            Else
                GUICtrlSetData($Combo2,$printer2)
            EndIf
            If $printer3 = "" Then
                GUICtrlSetData($Combo3, $sprinters, "")
            Else
                GUICtrlSetData($Combo3,$printer3)
            EndIf
            If $printer4 = "" Then
                GUICtrlSetData($Combo4, $sprinters, "")
            Else
                GUICtrlSetData($Combo4,$printer4)
            EndIf
            If $printer5 = "" Then
                GUICtrlSetData($Combo5, $sprinters, "")
            Else
                GUICtrlSetData($Combo5,$printer5)
            EndIf
        Case $Button1
            IniWrite($hostini,GUICtrlRead($Combo6),"Printer1",GUICtrlRead($Combo1))
            IniWrite($hostini,GUICtrlRead($Combo6),"Printer2",GUICtrlRead($Combo2))
            IniWrite($hostini,GUICtrlRead($Combo6),"Printer3",GUICtrlRead($Combo3))
            IniWrite($hostini,GUICtrlRead($Combo6),"Printer4",GUICtrlRead($Combo4))
            IniWrite($hostini,GUICtrlRead($Combo6),"Printer5",GUICtrlRead($Combo5))
            $aprinters=IniReadSectionNames($printerini)
            $sprinters=""
            for $i = 1 to $aprinters[0]
            $sprinters &= "|" & $aprinters[$i]
            Next

            $ahosts=IniReadSectionNames($hostini)
            $shosts=""
            For $j=1 To $ahosts[0]
            $shosts&="|"&$ahosts[$j]
            Next
            GUICtrlSetData($Combo6,$shosts,"")
            GUICtrlSetData($Combo1, $sprinters, "")
            GUICtrlSetData($Combo2, $sprinters, "")
            GUICtrlSetData($Combo3, $sprinters, "")
            GUICtrlSetData($Combo4, $sprinters, "")
            GUICtrlSetData($Combo5, $sprinters, "")
        Case $Button2
            $aprinters=IniReadSectionNames($printerini)
            $sprinters=""
            for $i = 1 to $aprinters[0]
            $sprinters &= "|" & $aprinters[$i]
            Next

            $ahosts=IniReadSectionNames($hostini)
            $shosts=""
            For $j=1 To $ahosts[0]
            $shosts&="|"&$ahosts[$j]
            Next
            GUICtrlSetData($Combo6,$shosts,"")
            GUICtrlSetData($Combo1, $sprinters, "")
            GUICtrlSetData($Combo2, $sprinters, "")
            GUICtrlSetData($Combo3, $sprinters, "")
            GUICtrlSetData($Combo4, $sprinters, "")
            GUICtrlSetData($Combo5, $sprinters, "")
        Case $Button3
            $msgbox=MsgBox(52,"Remove?","Are you sure you want to remove the configuration for: "&GUICtrlRead($Combo6)&"?")
            If $msgbox=6 Then
            IniDelete($hostini,GUICtrlRead($Combo6))
            $aprinters=IniReadSectionNames($printerini)
            $sprinters=""
            for $i = 1 to $aprinters[0]
            $sprinters &= "|" & $aprinters[$i]
            Next

            $ahosts=IniReadSectionNames($hostini)
            $shosts=""
            For $j=1 To $ahosts[0]
            $shosts&="|"&$ahosts[$j]
            Next
            GUICtrlSetData($Combo6,$shosts,"")
            GUICtrlSetData($Combo1, $sprinters, "")
            GUICtrlSetData($Combo2, $sprinters, "")
            GUICtrlSetData($Combo3, $sprinters, "")
            GUICtrlSetData($Combo4, $sprinters, "")
            GUICtrlSetData($Combo5, $sprinters, "")
            Else
            $aprinters=IniReadSectionNames($printerini)
            $sprinters=""
            for $i = 1 to $aprinters[0]
            $sprinters &= "|" & $aprinters[$i]
            Next

            $ahosts=IniReadSectionNames($hostini)
            $shosts=""
            For $j=1 To $ahosts[0]
            $shosts&="|"&$ahosts[$j]
            Next
            GUICtrlSetData($Combo6,$shosts,"")
            GUICtrlSetData($Combo1, $sprinters, "")
            GUICtrlSetData($Combo2, $sprinters, "")
            GUICtrlSetData($Combo3, $sprinters, "")
            GUICtrlSetData($Combo4, $sprinters, "")
            GUICtrlSetData($Combo5, $sprinters, "")
            EndIf
    EndSwitch
WEnd

 

Share this post


Link to post
Share on other sites



It's hard to add tooltips to list items in the native ComboBox control. But take a look at the ComboBoxEx control and especially the example for _GUICtrlComboBoxEx_Create in the helpfile. Watch the events you get when you hover the mouse over different list items. You can add tooltip code to these events.

Add a new post if you need more details.

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