Jump to content

About GuiCtrlCreateList...


Info
 Share

Recommended Posts

#include <GuiConstants.au3>

GuiCreate("MyGUI", 412, 311,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

$List_1 = GuiCtrlCreateList("My Coputer", 10, 10, 120, 292)
GUICtrlSetData ( $List_1, "List2|List3|List4|List5")

GuiSetState()
While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case Else
;;;
    EndSelect
WEnd
Exit

This is my script.

Now I understand that GUICtrlSetData gets me more lines in the list.

But I don't know how to do that if I hit List2 /3 /4 /5, (the lists of the GUICtrlSetData) then it opens something like MsgBox?

I mean like this:

Case $msg = $List2
    MsgBox (0, "You hit" "You hit Line2")

Edit:

Auto3Lib = found nothing. =/

UDF = I don't know where to go...

Please stop being mad on me or something...

I just got a muse to create a good program.

Look what I want to do:

This is my program:

Posted Image

So I want that if I hit List 2/3/4/5... It will show me something in the right side of the program.

Like this:

Posted Image

And I don't want a TreeView instead of that List, So please, tell me what I need to do to make this.

Edited by Info
Link to comment
Share on other sites

You're giving me a script without any explainations.

How can I understand something of it?

And actually, I dont want my script to be like if I hit a line it will MsgBox,

I want my script to be like if I hit a line it will show something in the right side of the GUI...

Please explain me what you just posted...

Link to comment
Share on other sites

You're giving me a script without any explainations.

How can I understand something of it?

And actually, I dont want my script to be like if I hit a line it will MsgBox,

I want my script to be like if I hit a line it will show something in the right side of the GUI...

Please explain me what you just posted...

We are slave here just for you?

Look into Autoit helpfile as I did!

Link to comment
Share on other sites

Auto3Lib = found nothing. =/

UDF = I don't know where to go...

Please stop being mad on me or something...

I just got a muse to create a good program.

Look what I want to do:

This is my program:

Posted Image

So I want that if I hit List 2/3/4/5... It will show me something in the right side of the program.

Like this:

Posted Image

And I don't want a TreeView instead of that List, So please, tell me what I need to do to make this.

Edited by Info
Link to comment
Share on other sites

Hi,

Zedna has given more then enough of a clue..

But being spoon fed is so much easier..bah

#include <GuiConstants.au3>

GuiCreate("MyGUI", 412, 311,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

$List_1 = GuiCtrlCreateList("", 10, 10, 120, 292)
$Label_1 = GUICtrlCreateLabel("", 140, 10, 260, 292) ;Create a label to put the data in when $List_1 is clicked
GUICtrlSetData ( $List_1, "List2|List3|List4|List5")

GuiSetState()
While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $List_1 ; If the $List_1 is clicked then do some action..
        
        ; To find out which item was clicked use GUICtrlRead($List_1)
        $ReadTheSelectedListItem =  GUICtrlRead($List_1)
        
        ; Set the label with the data read from $List_1 when it was clicked
        GUICtrlSetData($Label_1, "You have hit " & $ReadTheSelectedListItem & @LF & _
                                    "Read the help file to get a better understanding" & @LF & _
                                    "Others have likely been where your at now so..." & @LF & _
                                    "Search the forum for those questions already asked..." & @LF & _
                                    "Read other peoples code that's posted in the forum" & @LF & _
                                    "Also try experimenting..."  & @LF & _ 
                                    "No one wants to spoon feed answers that can be found easily.") 
    EndSelect
WEnd
Exit

Cheers

Link to comment
Share on other sites

Ok, here's another example , click a list item and it does the function associated with it..

#include <GuiConstants.au3>

$Gui = GuiCreate("MyGUI", 412, 311,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

$List_1 = GuiCtrlCreateList("", 10, 10, 120, 292, $LBS_NOTIFY)
$Label_1 = GUICtrlCreateLabel("Click list item to do the action", 140, 10, 260, 292)
GUICtrlSetData ( $List_1, "Play Tada Sound|Open Notepad|Empty Recycle Bin|Maximize MyGUI|Exit MyGUI")

GuiSetState()
While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $List_1 ; If the $List_1 is clicked then do some action..
        
        ; To find out which item was clicked use GUICtrlRead($List_1)
        $ReadTheSelectedListItem = GUICtrlRead($List_1)
        
        ; Set the label with the data read from $List_1 when it was clicked
        GUICtrlSetData($Label_1, "Last clicked item: " & "'" & $ReadTheSelectedListItem & "'")
        
        ; If Switch Case is met then do that function/command 
        Switch $ReadTheSelectedListItem 
            Case "Open Notepad"
                ;;; Do stuff
                ShellExecute("notepad.exe")
            Case "Play Tada Sound"
                ;;; Do stuff
                SoundPlay(@WindowsDir & "\media\tada.wav",1)
            Case "Empty Recycle Bin"
                ;;; Do stuff
                FileRecycleEmpty()
            Case "Maximize MyGUI"
                ;;; Do stuff
                GUISetState(@SW_MAXIMIZE, $Gui)
            Case "Exit MyGUI"
                ;;; Do stuff
                ExitLoop
        EndSwitch       
    EndSelect
WEnd

Exit

There are many ways to to the same thing, as Zedna pointed out you could also use some of the functions in the UDF section in the Help File to do things different ways to fit your needs.

Experiment and you'll soon enough start to understand it a bit better.

Cheers

Link to comment
Share on other sites

THANK YOU ALL!!!

really helped me :)

Edit:

Little problem:

include <GuiConstants.au3>

$Gui = GuiCreate("MyGUI", 412, 311,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

$List_1 = GuiCtrlCreateList("", 10, 10, 120, 292, $LBS_NOTIFY)
$Label_1 = GUICtrlCreateLabel("Click list item to do the action", 140, 10, 260, 292)
GUICtrlSetData ( $List_1, "Play Tada Sound|Open Notepad|Empty Recycle Bin|Maximize MyGUI|Exit MyGUI")

GuiSetState()
While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case $msg = $List_1; If the $List_1 is clicked then do some action..
        
     ; To find out which item was clicked use GUICtrlRead($List_1)
        $ReadTheSelectedListItem = GUICtrlRead($List_1)
        
     ; Set the label with the data read from $List_1 when it was clicked
        GUICtrlSetData($Label_1, "Last clicked item: " & "'" & $ReadTheSelectedListItem & "'")
        
     ; If Switch Case is met then do that function/command 
        Switch $ReadTheSelectedListItem 
            Case "Open Notepad"
             ;;; Do stuff
                ShellExecute("notepad.exe")
            Case "Play Tada Sound"
                $B1 = GuiCtrlCreateButton("Button1", 240, 80, 120, 40);; <--------------------> I added this!
                SoundPlay(@WindowsDir & "\media\tada.wav",1)
            Case "Empty Recycle Bin"
             ;;; Do stuff
                FileRecycleEmpty()
            Case "Maximize MyGUI"
             ;;; Do stuff
                GUISetState(@SW_MAXIMIZE, $Gui)
            Case "Exit MyGUI"
             ;;; Do stuff
                ExitLoop
        EndSwitch     
    EndSelect
WEnd
Exit

You see my change?

I added Button,

But when running the script, it's not letting me click on it >.<

like it's "un-clickable" or something.

What's now?

Edited by Info
Link to comment
Share on other sites

A few reasons the button is non responsive after it's created...

1) The label height covers where the button is created.

Fix: Set the label height to a smaller size and then the button actually show it's being mouse overed.

2a) The button when it's created doesn't have anything set to catch the message when it is clicked.

Fix: Declare the $B1 variable before the button is created and give it a value of 1

Add a Case $msg = $B1 to the Select loop.

2b) The button doesn't have any action assigned to it when it's clicked

Fix: add an action under the Case $msg = $B1 you created in 2a

Like so..

#include <GuiConstants.au3>

Global $B1 = 1 ;<--- Declare the variable , set as 1 until the button is created.

$Gui = GuiCreate("MyGUI", 412, 311,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

$List_1 = GuiCtrlCreateList("", 10, 10, 120, 292, $LBS_NOTIFY)
$Label_1 = GUICtrlCreateLabel("Click list item to do the action", 140, 10, 260, 20) ;<-The label hiehgt was covering the button
GUICtrlSetData ( $List_1, "Play Tada Sound|Open Notepad|Empty Recycle Bin|Maximize MyGUI|Exit MyGUI")

GuiSetState()
While 1
    $msg = GuiGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $B1 ;<- You need to add this so the button will do something when it's clicked.
            ;;;Do Stuff
            GUICtrlSetData($Label_1, "Last clicked button: Minimize MyGUI")
            GUISetState(@SW_MINIMIZE, $Gui)
        Case $msg = $List_1; If the $List_1 is clicked then do some action..
        
            ; To find out which item was clicked use GUICtrlRead($List_1)
            $ReadTheSelectedListItem = GUICtrlRead($List_1)
        
            ; Set the label with the data read from $List_1 when it was clicked
            GUICtrlSetData($Label_1, "Last clicked item: " & "'" & $ReadTheSelectedListItem & "'")
        
            ; If Switch Case is met then do that function/command
            Switch $ReadTheSelectedListItem
                Case "Open Notepad"
                    ;;; Do stuff
                    ShellExecute("notepad.exe")
                Case "Play Tada Sound"
                    ;Do a small check and only create the button if it doesn't exist.
                    If $B1 = 1 Then $B1 = GuiCtrlCreateButton("Minimize MyGUI", 240, 80, 120, 40);<-- The button ID will be set in $B1 variable
                    SoundPlay(@WindowsDir & "\media\tada.wav",1)
                Case "Empty Recycle Bin"
                    ;;; Do stuff
                    FileRecycleEmpty()
                Case "Maximize MyGUI"
                    ;;; Do stuff
                    GUISetState(@SW_MAXIMIZE, $Gui)
                Case "Exit MyGUI"
                    ;;; Do stuff
                    ExitLoop
            EndSwitch 
    EndSelect
WEnd
Exit

Cheers

Edited by smashly
Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...