Rex Posted December 27, 2009 Share Posted December 27, 2009 (edited) Have this big prob. I use this expandcollapse popupFunc WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam) ; Reads Company Combo, and handles data. #forceref $hWnd, $iMsg Local $hWndFrom, $iIDFrom, $iCode, $hWndCombo If Not IsHWnd($Company_Combo) Then $hWndCombo = GUICtrlGetHandle($Company_Combo) $hWndFrom = $ilParam $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word $iCode = BitShift($iwParam, 16) ; Hi Word Switch $hWndFrom Case $Company_Combo, $hWndCombo Switch $iCode Case $CBN_CLOSEUP ; Sent when the list box of a combo box has been closed _DebugPrint("$CBN_CLOSEUP" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_DBLCLK ; Sent when the user double-clicks a string in the list box of a combo box _DebugPrint("$CBN_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_DROPDOWN ; Sent when the list box of a combo box is about to be made visible _DebugPrint("$CBN_DROPDOWN" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_EDITCHANGE ; Sent after the user has taken an action that may have altered the text in the edit control portion of a combo box _DebugPrint("$CBN_EDITCHANGE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _ "-->Code:" & @TAB & $iCode) _Edit_Changed() GUICtrlSetState($Save_Adr_CheckBox, $GUI_ENABLE) ; no return value Case $CBN_EDITUPDATE ; Sent when the edit control portion of a combo box is about to display altered text _DebugPrint("$CBN_EDITUPDATE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_ERRSPACE ; Sent when a combo box cannot allocate enough memory to meet a specific request _DebugPrint("$CBN_ERRSPACE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_KILLFOCUS ; Sent when a combo box loses the keyboard focus _DebugPrint("$CBN_KILLFOCUS" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_SELCHANGE ; Sent when the user changes the current selection in the list box of a combo box _DebugPrint("$CBN_SELCHANGE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _ "-->Code:" & @TAB & $iCode) _CBN_SELCHANGE() Case $CBN_SELENDCANCEL ; Sent when the user selects an item, but then selects another control or closes the dialog box _DebugPrint("$CBN_SELENDCANCEL" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _ "-->Code:" & @TAB & $iCode) ; no return value _CBN_SELENDCANCEL() ;MsgBox(0, "Valgt", $Read) Case $CBN_SELENDOK ; Sent when the user selects a list item, or selects an item and then closes the list _DebugPrint("$CBN_SELENDOK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _ "-->Code:" & @TAB & $iCode) ; no return value Case $CBN_SETFOCUS ; Sent when a combo box receives the keyboard focus _DebugPrint("$CBN_SETFOCUS" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _ "-->IDFrom:" & @TAB & $iIDFrom & @LF & _ "-->Code:" & @TAB & $iCode) ; no return value EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_COMMAND Func _DebugPrint($s_text, $line = @ScriptLineNumber) ; Dont do any thing here ;-) ConsoleWrite( _ "!===========================================================" & @LF & _ "+======================================================" & @LF & _ "-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _ "+======================================================" & @LF) EndFunc ;==>_DebugPrint Func _CBN_SELCHANGE() ; Checks data in combo with data in addressbook, if match we updates the input fields with data from addressbook $Read = _StringToHex(GUICtrlRead($Company_Combo)) $Company_Combo_SetData = IniReadSection("Address.adr", "Companys") ; Read the section Companys in addressbook If Not @error Then ; if error we don't do anything else we compairs data from combo and addressbook For $i = 1 To $Company_Combo_SetData[0][0] If $Read = $Company_Combo_SetData[$i][1] Then ; If the read input = one of thoes read from our address book we updates the iputs with the data from addressbook $Key = $i $Fill = IniReadSection("Address.adr", $Company_Combo_SetData[$i][1]) GUICtrlSetData($Address_1_Input, _HexToString($Fill[1][1])) GUICtrlSetData($Address_2_Input, _HexToString($Fill[2][1])) GUICtrlSetData($ZipCode_Input, _HexToString($Fill[3][1])) GUICtrlSetData($City_Input, _HexToString($Fill[4][1])) $Clear = True ExitLoop ; If we foundt an address in the address we exists the loop EndIf Next EndIf EndFunc Func _CBN_SELENDCANCEL() ; Checks data in combo with data in addressbook, if match we updates the input fields with data from addressbook $Read = _StringToHex(GUICtrlRead($Company_Combo)) $Company_Combo_SetData = IniReadSection("Address.adr", "Companys") ; Read the section Companys in addressbook If Not @error Then ; Check if there is a read error, if so we don't do anything else we compair data from addressbook and combo For $i = 1 To $Company_Combo_SetData[0][0] If $Read = $Company_Combo_SetData[$i][1] Then $Key = $i $Fill = IniReadSection("Address.adr", $Company_Combo_SetData[$i][1]) GUICtrlSetData($Address_1_Input, _HexToString($Fill[1][1])) GUICtrlSetData($Address_2_Input, _HexToString($Fill[2][1])) GUICtrlSetData($ZipCode_Input, _HexToString($Fill[3][1])) GUICtrlSetData($City_Input, _HexToString($Fill[4][1])) GUICtrlSetState($Save_Adr_CheckBox, $GUI_DISABLE) ; Disabling save address, when tha address is loaded from address book $Save_Adress_Dissabled = 1 ; We set a var, so even when we ticks update address, and un ticks it again the save address will be disabled $Clear = True ExitLoop ElseIf $Key <> "" And $Clear = True Then GUICtrlSetData($Address_1_Input, "") GUICtrlSetData($Address_2_Input, "") GUICtrlSetData($ZipCode_Input, "") GUICtrlSetData($City_Input, "") $Clear = False EndIf Next EndIf EndFunc To auto complete text put in to a combo, and to auto fill some fields, but for some reason the function don't work after using FileOpenDialog. Can any tell me how to "re" enable the function. Regards /Rex Edit:Title changed to Solved Edited December 27, 2009 by Rex Link to comment Share on other sites More sharing options...
whim Posted December 27, 2009 Share Posted December 27, 2009 Just a hunch, but could this be because FileOpenDialog changes your @WorkingDir ? After that one bit me, i now routinely readjust my working dir (with FileChangeDir) hth, whim Link to comment Share on other sites More sharing options...
Yashied Posted December 27, 2009 Share Posted December 27, 2009 Just use the full paths. $Company_Combo_SetData = IniReadSection(@ScriptDir & "\Address.adr", "Companys") My UDFs: iKey | FTP Uploader | Battery Checker | Boot Manager | Font Viewer | UDF Keyword Manager | Run Dialog Replacement | USBProtect | 3D Axis | Calculator | Sleep | iSwitcher | TM | NetHelper | File Types Manager | Control Viewer | SynFolders | DLL Helper Animated Tray Icons UDF Library | Hotkeys UDF Library | Hotkeys Input Control UDF Library | Caret Shape UDF Library | Context Help UDF Library | Most Recently Used List UDF Library | Icons UDF Library | FTP UDF Library | Script Communications UDF Library | Color Chooser UDF Library | Color Picker Control UDF Library | IPHelper (Vista/7) UDF Library | WinAPI Extended UDF Library | WinAPIVhd UDF Library | Icon Chooser UDF Library | Copy UDF Library | Restart UDF Library | Event Log UDF Library | NotifyBox UDF Library | Pop-up Windows UDF Library | TVExplorer UDF Library | GuiHotKey UDF Library | GuiSysLink UDF Library | Package UDF Library | Skin UDF Library | AITray UDF Library | RDC UDF Library Appropriate path | Button text color | Gaussian random numbers | Header's styles (Vista/7) | ICON resource enumeration | Menu & INI | Tabbed string size | Tab's skin | Pop-up circular menu | Progress Bar without animation (Vista/7) | Registry export | Registry path jumping | Unique hardware ID | Windows alignment More... Link to comment Share on other sites More sharing options...
Rex Posted December 27, 2009 Author Share Posted December 27, 2009 Just use the full paths. $Company_Combo_SetData = IniReadSection(@ScriptDir & "\Address.adr", "Companys") to simple that works thx Regards /Rex Link to comment Share on other sites More sharing options...
Rex Posted December 27, 2009 Author Share Posted December 27, 2009 Just a hunch, but could this be because FileOpenDialog changes your @WorkingDir ?After that one bit me, i now routinely readjust my working dir (with FileChangeDir)hth,whimU'r right, using Yashied's exsample it works like a charme.Did't know that file open did change the @WorkingDir, but that just shows how mutch i hav(n't) read the info Regards/Rex Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now