Sign in to follow this  
Followers 0
devilyn

Use a button the open/close a window

8 posts in this topic

hi

i need to make "$button5" to open and close another window

now it's just opening i can't make it close the window

While 1
   $msg = GUIGetMsg()
   
      Select
      Case $msg = $button2
         $query = GUICtrlRead($edit1)
         ExitLoop
        
     EndSelect
       if $msg = $button5 And GUICtrlRead($button5) = 0 then
           MSGBOX (0,"1",guigetmsg($button5),-1); DEBUG
        $TB = GUISetState(@SW_SHOW)
      Elseif $msg = $button5 And GUICtrlRead($button5) = 4 then
        MSGBOX (0,"2",guigetmsg($button5),-1); DEBUG
        $TB = GUISetState(@SW_hide)
    ENDIF
WEnd

Share this post


Link to post
Share on other sites



If $msg = $button5 Then
    $OpenWindow
EndIf
Now... you have GUISetState(), is there more than one GUI... because this is going to show the GUI that is currently active.

Example:

#include <GUICONSTANTS.AU3>

$MainGui = GUICreate('1stGUI')
$Button = GUICtrlCreateButton('Switch to Secondary', 10, 10)

GUISetState()

$SecondGUI = GUICreate('2ndGUI')
$Button2 = GUICtrlCreateButton('Switch to Main', 10, 10)
GUISetState(@SW_HIDE)

While 1
    $msg = GUIGetMsg()
    If $msg = - 3 Then Exit
    If $msg = $Button Then
        GUISetState(@SW_HIDE, $MainGui)
        GUISetState(@SW_SHOW, $SecondGUI)
    EndIf
    If $msg = $Button2 Then
        GUISetState(@SW_HIDE, $SecondGUI)
        GUISetState(@SW_SHOW, $MainGui)
    EndIf
WEnd

[center]Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.[/center]

Share this post


Link to post
Share on other sites

yes i have two gui's

the example you pasted is using two diffrent buttons

i want to use only one button that is on the first gui to open and close the second gui

Share this post


Link to post
Share on other sites

yes i have two gui's

the example you pasted is using two diffrent buttons

i want to use only one button that is on the first gui to open and close the second gui

Well your welcome... :)

How about showing your script... I'd like to see how you are making the first and 2nd gui... and how you plan on having the variable the same on both...


[center]Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.[/center]

Share this post


Link to post
Share on other sites

Sorry my firend i was unpolite

thank you very much :)

here is my code

#include <GuiConstants.au3>

Dim $ueberschriften = ""
Dim $anzahl = 0
Dim $dsncount = 1
Dim $DSN = ""
Dim $button3
GUICreate("Choose Your  DSN", 392, 400,-1, -1)


$listview = GUICtrlCreateListView("DSN|Type|Description", 10, 10, 372, 320)
$button = GuiCtrlCreateButton("&OK", 100, 350, 90, 30, $BS_DEFPUSHBUTTON)


$var = RegEnumVal("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources", $dsncount)
$wert = RegRead("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources", $var)
While $var <> ""
   
   $var = RegEnumVal("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources", $dsncount)
   $wert = RegRead("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources", $var)
   If $var <> "" Then
      GUICtrlCreateListViewItem($var & "|" & "USER" & "|" & $wert, $listview)
   EndIf
   $dsncount = $dsncount + 1
WEnd
$dsncount = 1
$var = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", $dsncount)
$wert = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\\ODBC Data Sources", $var)

While $var <> ""
   
   $var = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", $dsncount)
   $wert = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", $var)
   If $var <> "" Then
      GUICtrlCreateListViewItem($var & "|" & "SYSTEM" & "|" & $wert, $listview)
   EndIf
   $dsncount = $dsncount + 1
WEnd

GUISetState()

While 1
   $msg = GUIGetMsg()
   
   Select
      Case $msg = $button
         $dsnarray = StringSplit((GUICtrlRead(GUICtrlRead($listview), 2)), "|")
         $dsn = "DSN=" & $dsnarray [1]
         ExitLoop
   EndSelect
WEnd

GUIDelete();

GUICreate("Enter your sql-query", 392, 400,-1, -1)

$edit1 = GUICtrlCreateEdit("", 10, 10, 372, 320)
$button2 = GuiCtrlCreateButton("&OK", 100, 350, 90, 30, $BS_DEFPUSHBUTTON)
$button5 = GuiCtrlCreateButton("&Quick Query", 200, 350, 90, 30)
$query = GUICtrlRead($edit1)
HotKeySet("{F5}", "EXECUTE1")
Func EXECUTE1()
    ControlClick("","",$button2)
EndFunc
GUISetState(@SW_SHOW)

$TB=GuiCreate("ToolBar", 80 ,410,800,-1 ,$WS_SYSMENU, $WS_EX_TOOLWINDOW)
GUICtrlCreateButton("1",30,30,30,30)
$TB= GUISetState(@SW_hide)



While 1
   $msg = GUIGetMsg()
   
      Select
      Case $msg = $button2
         $query = GUICtrlRead($edit1)
         ExitLoop
        
     EndSelect
       if $msg = $button5 And GUICtrlRead($button5) = 0 then
          ;MSGBOX (0,"1",guigetmsg($button5),-1); DEBUG
        $tb = GUISetState(@SW_SHOW)
      Elseif $msg = $button5 And GUICtrlRead($button5) = 4 then
        MSGBOX (0,"2",guigetmsg($button5),-1); DEBUG
        GUISetState(@SW_hide,$TB)
    ENDIF
WEnd

$out = getData($DSN)
ToolTip("")
MsgBox(0, "Rows fetched", $out)

While 1
   $msg = GUIGetMsg()
   Select
      Case $msg = $button3
         ExitLoop
   EndSelect
WEnd

Func getData($DSN)
 
   $cmboVal = ""
   $adoCon = ObjCreate ("ADODB.Connection")
   $adoCon.Open ($DSN)
   $adoRs = ObjCreate ("ADODB.Recordset")
   
   $adoSQL = $query
   
   
   $adoRs.CursorType = 2
   $adoRs.LockType = 3
   $adoRs.Open ($adoSql, $adoCon)
   
   GUICreate("Results", 392, 400,-1, -1)
 
   $button3 = GuiCtrlCreateButton("&OK", 100, 350, 90, 30, $BS_DEFPUSHBUTTON)
   $button4 = GuiCtrlCreateButton("&Save", 200, 350, 90, 30)
   
   
   With $adoRs
      
    ; Get information about Fields collection
      For $n = 0 To .Fields.Count - 1
         $ueberschriften = $ueberschriften & .Fields ($n).Name & "|"
      Next
      
      $liste = GUICtrlCreateListView(StringTrimRight($ueberschriften, 1), 10, 10, 372, 320)
      
      
      If .RecordCount Then
         $count = 0
         While Not .EOF
            $count = $count + 1
            ToolTip("Counting Query Rows #" & $count, 0, 0)
            For $colum = 0 To .Fields.Count - 1
               $cmboVal = $cmboVal & "" & .Fields ($colum).Value & "|"
            Next
            $cmboVal = StringTrimRight($cmboVal, 1) & @CR
            
            GUICtrlCreateListViewItem($cmboVal, $liste)
            $cmboVal = ""
            .MoveNext
         WEnd
         
         GUISetState()
         
      EndIf
      
      
   EndWith
   
   $adoCon.Close
   Return $count
EndFunc ;==>getData

And Thanks Again

Share this post


Link to post
Share on other sites

A Couple of things...

1. When creating GUI's in general, make it a practice to give each GUICreate () a Unique Variable name: Example $MainGUI = GUICreate('Starting')

2. When using GUISetState() ... do not try to make that a variable... Example you have: $TB = GUISetState(@SW_HIDE) ... Should just be GUISetState(@SW_HIDE, $TB) <<< notice the winhandle (GUI).

3. GUIGetMsg() is used to get the information used currently within a GUI, putting a Control Variable such as GUIGetMsg($button5) isn't going to help you get a result, because $button is the Control ID of that Control... I wouldn't be surprised if it only ever returned a '0'.

Try this one on for size, and tell me if that is what your trying to achieve:

#include <GUICONSTANTS.AU3>

$MainGui = GUICreate('1stGUI')
$Button = GUICtrlCreateButton('Switch to Secondary', 10, 10)

GUISetState()

$SecondGUI = GUICreate('2ndGUI')
GUISetState(@SW_HIDE)


While 1
    $msg = GUIGetMsg()
    If $msg = - 3 And Not BitAND(WinGetState($SecondGUI), 2) Then Exit
    If $msg = - 3 And BitAND(WinGetState($SecondGUI), 2) Then GUISetState(@SW_HIDE, $SecondGUI)
    If $msg = $Button Then
        If Not BitAND(WinGetState($SecondGUI), 2) Then
            GUISetState(@SW_SHOW, $SecondGUI)
        Else
            GUISetState(@SW_HIDE, $SecondGUI)
        EndIf
    EndIf
WEnd

[center]Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.[/center]

Share this post


Link to post
Share on other sites

Yes exactly

thanks a lot

Share this post


Link to post
Share on other sites

Yes exactly

thanks a lot

Your quite welcome... If you have questions on how or why I used BitAND() look at WinGetState() in the help file.

[center]Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.[/center]

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