ChrisL Posted November 6, 2007 Share Posted November 6, 2007 I have a function called _openDB() which has a default value of $db = -1 If $db = -1 then it opens up a fileOpenDialogue to select the file. If you call the function with a parameter it will open up the requested file. If you call the function _openDB() with no parameter in the script all is fine. However if you create a control to call the function it crashes and tells you the $db doesn't exist Im using 3.2.8.1 and I've tried 3.2.9.5 and both give me the same result. If you run the below code, it will open the FileOpenDialogue box but if you then click on the file menu item and do the same it crashes with Variable used without being declared.: If $db = -1 then If ^ ERROR Is this the correct behaviour? Do I have to make a copy of the function which doesn't have a parameter to use with the onevent control? Opt("GuiOnEventMode",1) #include <GuiConstants.au3> GuiCreate("MyGUI", 392, 204,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) $FileMenu = GUICtrlCreateMenu("File") $FileItem = GUICtrlCreateMenuItem("Open Database",$FileMenu) GUICtrlSetOnEvent(-1,"_openDB") GuiSetState() _openDB() While 1 Sleep(10) WEnd Func _openDB($db = -1) If $db = -1 then $db = FileOpenDialog("Test",@ScriptDir & "\_System","DataBase(*.db)") If @error then Return EndIf EndIf Msgbox(0,"","Opening file " & $db) EndFunc [u]Scripts[/u]Minimize gui to systray _ Fail safe source recoveryMsgbox UDF _ _procwatch() Stop your app from being closedLicensed/Trial software system _ Buffering Hotkeys_SQL.au3 ADODB.Connection _ Search 2d Arrays_SplashTextWithGraphicOn() _ Adjust Screen GammaTransparent Controls _ Eventlogs without the crap_GuiCtrlCreateFlash() _ Simple Interscript communication[u]Websites[/u]Curious Campers VW Hightops Lambert Plant Hire Link to comment Share on other sites More sharing options...
ptrex Posted November 6, 2007 Share Posted November 6, 2007 @ChrisL As far as remember the "Opt("GuiOnEventMode",1) mode accepts only NON Parameter functions. Regards ptrex Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New Link to comment Share on other sites More sharing options...
ChrisL Posted November 6, 2007 Author Share Posted November 6, 2007 @ChrisL As far as remember the "Opt("GuiOnEventMode",1) mode accepts only NON Parameter functions. Regards ptrex Thanks ptrex I did some playing and found that if I declare the $db variable globaly I can use the function either way as long as I set $db back to -1 once I've finished with it. Opt("GuiOnEventMode",1) #include <GuiConstants.au3> GuiCreate("MyGUI", 392, 204,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) $FileMenu = GUICtrlCreateMenu("File") $FileItem = GUICtrlCreateMenuItem("Open Database",$FileMenu) GUICtrlSetOnEvent(-1,"_openDB") GuiSetState() Global $db = -1 _openDB() While 1 Sleep(10) WEnd Func _openDB($db = -1) If $db = -1 then $db = FileOpenDialog("Test",@ScriptDir & "\_System","DataBase(*.db)") If @error then Return EndIf EndIf Msgbox(0,"","Opening file " & $db) $db = -1 EndFunc [u]Scripts[/u]Minimize gui to systray _ Fail safe source recoveryMsgbox UDF _ _procwatch() Stop your app from being closedLicensed/Trial software system _ Buffering Hotkeys_SQL.au3 ADODB.Connection _ Search 2d Arrays_SplashTextWithGraphicOn() _ Adjust Screen GammaTransparent Controls _ Eventlogs without the crap_GuiCtrlCreateFlash() _ Simple Interscript communication[u]Websites[/u]Curious Campers VW Hightops Lambert Plant Hire 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