Jump to content
david1337

add/remove from txt file inside GUI

Recommended Posts

Hey guys

I need help to get further with this script :)

 

Test.txt contains lines like this:

_______________

Line1
Line2
Line3

_______________

I have managed to view the content of a txt file in the left side of a GUI like this:

#Include <File.au3>
#include <GUIConstants.au3>



Global $file = FileRead("Test.txt")


GUICreate("", 800, 800, 192, 124)
$control = GUICtrlCreateEdit($file, 0, 0, 400, 800, $ES_AUTOVSCROLL + $WS_VSCROLL + $ES_READONLY)
GUICtrlSetFont(-1, 14, 400, 0, "@Arial Unicode MS")
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetState($control, $GUI_FOCUS) ;Makes sure that text is not highlighted by default
GUISetState(@SW_SHOW)


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd

 

Okay so is it possible to make each line become a clickable item?
Say I want to delete Line2, then I highlight it and click a "remove" button.

Also an "add" button would be needed to add new lines

On Case $GUI_EVENT_CLOSE the changes should be saved to Test.txt (Or with a save button)

 

Is this possible?

I hope you can help me :-)


 

Edited by david1337

Share this post


Link to post
Share on other sites

david1337,

Use a ListView rather than an Edit and my GUIListViewEx UDF will allow you to delete and add lines easily. Give it a try and see how you get on - the link is in my sig.

M23


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Hi Melba

Thanks for you reply!

How do I make the list vertical, with one item for each line, like I did with GUICtrlCreateEdit? Can't seem to figure this out :S

Share this post


Link to post
Share on other sites

david1337,

Split the text to be read into an array (FileReadToArray or StringSplit) and then add each element (line) to the ListView using GUICtrlCreateListViewItem. The UDF will then let you add/delete lines very easily.

M23

Edit: A simple example:

#include <GUIConstantsEx.au3>

#include <GUIListViewEx.au3>

; Simulate reading the file into an array
Global $aLines = ["Line1", "Line2", "Line3"]

$hGUI = GUICreate("Test", 500, 500)

$cLV = GUICtrlCreateListView(" ", 10, 10, 300, 300)
_GUICtrlListView_SetColumnWidth($cLV, 0, 290)

$cInsert = GUICtrlCreateButton("Insert Line", 400, 10, 80, 30)
$cDelete = GUICtrlCreateButton("Delete Line", 400, 50, 80, 30)

GUISetState()

; Intialise ListView
$iLV_Index = _GUIListViewEx_Init($cLV)
; Insert lines
_GUIListViewEx_Insert($aLines, True)
; Register required messages
_GUIListViewEx_MsgRegister(True, False, False, False)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $cInsert
            _GUIListViewEx_Insert("New line")
        Case $cDelete
            _GUIListViewEx_Delete()
    EndSwitch
WEnd

 

Edited by Melba23
Amended code slightly

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Hi Melba

Thank you, that worked like a charm.

The only thing I have problems with now is to save the file with the edited content.

My guess would be something like using a _GUIListViewEx_ReturnArray to view the state of the array, edited or not. (In the below script I try to show this in a msgbox)
Then use a filewrite with the new content.

Only problem is, I can't get the _GUIListViewEx_ReturnArray to show the valid data - I tried following your GUIListViewEx Guide, and I think that I'm close :)

 

 

#include <GUIConstantsEx.au3>
#include <GUIListViewEx.au3>


Global $FileToArray = FileReadToArray("test.txt")


$hGUI = GUICreate("Test Text File", 800, 800)

$cLV = GUICtrlCreateListView("[Headline]", 10, 10, 400, 775)
GUICtrlSetFont(-1, 12, 800, 0, "@Arial Unicode MS")
_GUICtrlListView_SetColumnWidth($cLV, 0, 378)

$cInsert = GUICtrlCreateButton("Add User", 425, 10, 80, 30)
$cDelete = GUICtrlCreateButton("Remove User", 425, 50, 80, 30)

GUISetState()

; Intialise ListView
$iLV_Index = _GUIListViewEx_Init($cLV)
; Insert lines
_GUIListViewEx_Insert($FileToArray, True)
; Register required messages
_GUIListViewEx_MsgRegister(True, False, False, False)

While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE

;An attemp to show the content of the Array after I edited it
$updated = _GUIListViewEx_ReturnArray
MsgBox(0,"",$updated)

            Exit

        Case $cInsert
            _GUIListViewEx_Insert("New line")
        Case $cDelete
            _GUIListViewEx_Delete()
    EndSwitch
 WEnd

 

Share this post


Link to post
Share on other sites

david1337,

Using MsgBox to display an array? This works better:

Case $GUI_EVENT_CLOSE

            $aContent = _GUIListViewEx_ReturnArray($iLV_Index)
            _ArrayDisplay($aContent, "", Default, 8)

            Exit

M23


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Uhm just ignore that I used MsgBox :) Had tried so many things that I mixed up my array with a normal list.

Anyway, thanks for your help! I got it working now.
GUIListViewEx is an indispensable UDF!

 

#include <GUIConstantsEx.au3>
#include <GUIListViewEx.au3>
#include <File.au3>

Global $File = "test.txt"
Global $FileToArray = FileReadToArray("test.txt")


$hGUI = GUICreate("Test Text File", 800, 800)

$cLV = GUICtrlCreateListView("[Headline]", 10, 10, 400, 775)
GUICtrlSetFont(-1, 12, 800, 0, "@Arial Unicode MS")
_GUICtrlListView_SetColumnWidth($cLV, 0, 378)

$cInsert = GUICtrlCreateButton("Add Item", 425, 10, 80, 30)
$cDelete = GUICtrlCreateButton("Remove Item", 425, 50, 80, 30)

GUISetState()

; Intialise ListView
$iLV_Index = _GUIListViewEx_Init($cLV)
; Insert lines
_GUIListViewEx_Insert($FileToArray, True)
; Register required messages
_GUIListViewEx_MsgRegister(True, False, False, False)

While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE

            $aContent = _GUIListViewEx_ReturnArray($iLV_Index)
            _FileWriteFromArray($File,$aContent)

            Exit

        Case $cInsert
            _GUIListViewEx_Insert("New line")
        Case $cDelete
            _GUIListViewEx_Delete()
    EndSwitch
 WEnd

 

Edited by david1337

Share this post


Link to post
Share on other sites

david1337,

Glad you like the UDF - it is a pretty complex beast to master, but does have a lot of functionality.

M23


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Hi Melba

I need your help again :> (or some other genius) :D
When the OK button is clicked it writes the input from $ReadinputboxUsername into my text file, which works as expected.
Then it exits the loop, and goes back to the main GUI.

Is it possible to update my ListView when the OK button in the childGUI is clicked? In other words: It has to read and show the newly updated content of the text file.

 

;______________________________________________
#include <GUIConstantsEx.au3>
#include <GUIListViewEx.au3>
#include <File.au3>
#include <AD.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
;______________________________________________


Global $MainGUI_MyGUI
Global $File = "test.txt"
Global $FileToArray = FileReadToArray("test.txt")



Call ("MainGUI_MyGUI")



Func MainGUI_MyGUI()
    Local $cAddUser

    $MainGUI_MyGUI = GUICreate("My GUI", 800, 800, -1, -1)

    $cLV = GUICtrlCreateListView("[Users]", 10, 10, 400, 775)
GUICtrlSetFont(-1, 12, 800, 0, "@Arial Unicode MS")
_GUICtrlListView_SetColumnWidth($cLV, 0, 378)

$cAddUser = GUICtrlCreateButton("Add User", 425, 10, 80, 30)
$cRemoveUser = GUICtrlCreateButton("Remove User", 425, 50, 80, 30)


GUISetState(@SW_SHOW, $MainGUI_MyGUI)



; Intialise ListView
$iLV_Index = _GUIListViewEx_Init($cLV)
; Insert lines
_GUIListViewEx_Insert($FileToArray, True)
; Register required messages
_GUIListViewEx_MsgRegister(True, False, False, False)


    While 1
        Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE

            $aContent = _GUIListViewEx_ReturnArray($iLV_Index)
            _FileWriteFromArray($File,$aContent)
                ExitLoop

            Case $cAddUser
                GUISetState(@SW_DISABLE, $MainGUI_MyGUI)
                $ChildGUI_AddUser = ChildGUI_AddUser()
                GUISetState(@SW_ENABLE, $MainGUI_MyGUI)
                GUIDelete($ChildGUI_AddUser)
 ;               WinActivate($MainGUI_MyGUI) ; <<<<< Activate the ParentGUI again.


         Case $cRemoveUser
            _GUIListViewEx_Delete()

        EndSwitch
    WEnd
EndFunc   ;==>Main










Func ChildGUI_AddUser()

    $ChildGUI_AddUser = GUICreate("Find User", 615, 229, -1, -1, -1, -1, $MainGUI_MyGUI)


$inputboxUsername = GUICtrlCreateInput("", 192, 16, 233, 21)
$Check = GUICtrlCreateButton("Check", 440, 16, 41, 25)
$Cancel = GUICtrlCreateButton("Cancel", 520, 160, 81, 65)
$OK = GUICtrlCreateButton("OK", 426, 161, 81, 65)

    GUISetState()

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE

ExitLoop

        Case $Check
           $ReadinputboxUsername = GUICtrlRead($inputboxUsername)
           _AD_Open()
           $fullname = _AD_GetObjectAttribute($ReadinputboxUsername, "name")
           _AD_Close()
           $FullNameLabel = GUICtrlCreateLabel($fullname, 150, 64, 200, 100)



        Case $Cancel
        ExitLoop

        Case $OK
           If Not IsDeclared("ReadinputboxUsername") Then
              MsgBox(0,"Error", "No user is chosen")

           Else
         _FileWriteToLine($File, 1, $ReadinputboxUsername, 0)
         ExitLoop


           EndIf




        EndSwitch
    WEnd
    Return $ChildGUI_AddUser


EndFunc   ;==>ChildGUI_AddUser

 

Edited by david1337

Share this post


Link to post
Share on other sites

Well you are going to have to rewrite some of your code for this to work.

 

I suggest making your own function with the FileReadToArray in it and calling it separately when needed (at the beginning, when you click ok... etc) to repopulate (update) your listview

Share this post


Link to post
Share on other sites

I see what you mean...

Try This:

Spoiler
#include <GUIConstantsEx.au3>
#include <GUIListViewEx.au3>
#include <File.au3>
#include <AD.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>

Global $MainGUI_MyGUI
Global $File = "test.txt"
Global $FileToArray = FileReadToArray("test.txt")

Call("MainGUI_MyGUI")

Func MainGUI_MyGUI()
    Local $cAddUser

    $MainGUI_MyGUI = GUICreate("My GUI", 800, 800, -1, -1)

    $cLV = GUICtrlCreateListView("[Users]", 10, 10, 400, 775)
    GUICtrlSetFont(-1, 12, 800, 0, "@Arial Unicode MS")
    _GUICtrlListView_SetColumnWidth($cLV, 0, 378)

    $cAddUser = GUICtrlCreateButton("Add User", 425, 10, 80, 30)
    $cRemoveUser = GUICtrlCreateButton("Remove User", 425, 50, 80, 30)

    GUISetState(@SW_SHOW, $MainGUI_MyGUI)

    ; Intialise ListView
    $iLV_Index = _GUIListViewEx_Init($cLV)
    ; Insert lines
    _GUIListViewEx_Insert($FileToArray, True)
    ; Register required messages
    _GUIListViewEx_MsgRegister(True, False, False, False)

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE

                $aContent = _GUIListViewEx_ReturnArray($iLV_Index)
                _FileWriteFromArray($File, $aContent)
                ExitLoop

            Case $cAddUser
                GUISetState(@SW_DISABLE, $MainGUI_MyGUI)
                $ChildGUI_AddUser = ChildGUI_AddUser()
                GUISetState(@SW_ENABLE, $MainGUI_MyGUI)
                GUIDelete($ChildGUI_AddUser)
                ;               WinActivate($MainGUI_MyGUI) ; <<<<< Activate the ParentGUI again.

            Case $cRemoveUser
                _GUIListViewEx_Delete()

        EndSwitch
    WEnd
EndFunc   ;==>MainGUI_MyGUI

Func ChildGUI_AddUser()

    $ChildGUI_AddUser = GUICreate("Find User", 615, 229, -1, -1, -1, -1, $MainGUI_MyGUI)
    $inputboxUsername = GUICtrlCreateInput("", 192, 16, 233, 21)
    $Check = GUICtrlCreateButton("Check", 440, 16, 41, 25)
    $Cancel = GUICtrlCreateButton("Cancel", 520, 160, 81, 65)
    $OK = GUICtrlCreateButton("OK", 426, 161, 81, 65)

    GUISetState()

    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case $Check
                $ReadinputboxUsername = GUICtrlRead($inputboxUsername)
                _AD_Open()
                $fullname = _AD_GetObjectAttribute($ReadinputboxUsername, "name")
                _AD_Close()
                $FullNameLabel = GUICtrlCreateLabel($fullname, 150, 64, 200, 100)
            Case $Cancel
                ExitLoop
            Case $OK
                If Not IsDeclared("ReadinputboxUsername") Then
                    MsgBox(0, "Error", "No user is chosen")
                Else
                    _FileWriteToLine($File, 1, $ReadinputboxUsername, 0)
                    _GUIListViewEx_Insert($ReadinputboxUsername) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ADDED LINE
                    ExitLoop
                EndIf

        EndSwitch
    WEnd
    Return $ChildGUI_AddUser

EndFunc   ;==>ChildGUI_AddUser

 

 

Edited by l3ill

Share this post


Link to post
Share on other sites

I3iII

Thanks mate, that was a big help! :) So simple!

And since I wanted to write to the top row, I used:

_GUIListViewEx_InsertSpec( 1, $ReadinputboxUsername, $ReadinputboxUsername)

And now this became unnecessary:

_FileWriteToLine($File, 1, $ReadinputboxUsername, 0)

Since I use _FileWriteFromArray on exit.

Share this post


Link to post
Share on other sites

No worries.  If you are interested see my last code post (15). ( Delete (unnecessary) empty CR and run Tidy )

I understand most people dont clean up until there close to finishing up.

Just me being fastidious (anal)  o:)

Good luck with your project !

Bill

Edited by l3ill

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

  • Similar Content

    • By matwachich
      Hi AutoIters!
      Here is my new UDF about GUIs: it's an enhanced mixture of Advanced InputBox (deprecated) and KODA Parser (deprecated), with additional functions.
      What you can do with it:
      Parse KODA files and directly create GUIs (_GUIUtils_CreateFromKODA) Parse a simple JSON form definition to simply create advanced InputBoxes with any amount/type of input controls (_GUIUtils_CreateFromJSON) Created GUIs are returned as Scripting.Dictionary objects, and you have helper functions to access GUIs controls by their names (_GUIUtils_HWnd, _GUIUtils_CtrlID, _GUIUtils_HCtrl ...) A function that can make a GUI created from KODA/JSON (defined by it's $oForm object) and make it a modal InputDialogBox (just like InputBox, but returns all entered data as Scripting.Dictionary object) Functions are documented, and there are some examples.
      Consider this UDF as beta, but since I'm currently using it in a small commercial project, it should become production ready in near future.
      To always get the latest code version, get it from Github (more up to date than this topic).
      Update 04/02/2020:
      New simple application example Fixed focused control handling in _GUIUtils_InputDialog Reset input values before returning from _GUIUtils_InputDialog Fixed CloseOnEsc in _GUIUtils_InputDialog Fixed Input not reset Fixed all ListBox items are selected Project now on GitHub https://github.com/matwachich/autoit-guiutils/
      Update 05/02/2020:
      Support for nodate for Date and Time input controls (pass null value) New handling of focused control _GUIUtils_InputDialog: Now, you can specify the focused control in $oInitialData by setting "controlName:focus" = True Updated documentation of _GUIUtils_InputDialog Update 07/02/2020:
      Bug corrected when setting Data input control Added: abillity to read a single input control New functions (_GUIUtils_GetInputs, _GUIUtils_WriteInputs), documentation completion. Readme file and screenshots on Github Page  
      GUIUtils.zip
    • By antonioj84
      I am not able to use the $GUI_READ_EXTENDED with the  Metro UDF,  any work around ?
      Local $aPos[2] = [$Radio1, $Radio2] For $Radio In $aPos If GUICtrlRead($Radio) = $GUI_UNCHECKED Then ContinueLoop IniWrite($sGUIstate_IniFile, "Data", "POS", GUICtrlRead($Radio, $GUI_READ_EXTENDED)) ;; return the text of the menu item ExitLoop Next  
    • By nacerbaaziz
      hello autoit group
      please i've a question
      i had make a function that put some thing into the clipBoard and paste it
      using the send function
      e.g
      ClipPut("hello")
      send("^v")
       
      when the keyboard is english all things work fine
      but when the keyboard is arabic the send command write the ltr v insted of the text in clipboard
      i was tryed to use
      send("{ctrldown}v{ctrlUp}")
      but the same
      please can any one help me
       
    • By _Vlad
      Hello forum,
      I want to create a program with multiple menus and many elements inside. The problem is my way of doing this and below I have an example of how I do these menus.
      I know it's a bad way of doing them as using this method for more elements and menus cause big flickering.
       
      Can someone please help me with some tips of optimizing this or tell me another way of creating that menus with many elements without cause flickering? From a long time ago I still try to solve this but without any results, just small improvements.
      Many thanks for everyone.
      #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> Global $MENU_HOVER = '' Global $MENU_SELECTED = '' Global $COLOR_STANDARD = 0x94A5E9 Global $COLOR_HOVER = 0x8292d1 Global $COLOR_SELECTED = 0x7584bf $MENU = GUICreate("Menu", 615, 437, -1, -1, -1, -1, 0) GUISetFont(10, 400, 0, "Arial") $MENU_1 = GUICtrlCreateLabel("Menu 1", 8, 24, 106, 28, BitOR($SS_CENTER, $SS_CENTERIMAGE)) $MENU_2 = GUICtrlCreateLabel("Menu 2", 8, 56, 106, 28, BitOR($SS_CENTER, $SS_CENTERIMAGE)) $MENU_3 = GUICtrlCreateLabel("Menu 3", 8, 88, 106, 28, BitOR($SS_CENTER, $SS_CENTERIMAGE)) ;MENU 1 ELEMENTS $MENU_1_ELEMENT_1 = GUICtrlCreateButton("Menu1 Button", 128, 24, 147, 25) ;MENU 2 ELEMENTS $MENU_2_ELEMENT_1 = GUICtrlCreateButton("Menu2 Button", 128, 24, 147, 25) $MENU_2_ELEMENT_2 = GUICtrlCreateLabel("Another element", 128, 64, 99, 20) _Design() _Hide_All() GUISetState(@SW_SHOW, $MENU) While 1 $Cursor = GUIGetCursorInfo($MENU) $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $MENU_1 _Previous_Selected_Cancel() $MENU_SELECTED = 'Menu1' GUICtrlSetBkColor($MENU_1, $COLOR_SELECTED) _Show('Menu1') Case $MENU_2 _Previous_Selected_Cancel() $MENU_SELECTED = 'Menu2' GUICtrlSetBkColor($MENU_2, $COLOR_SELECTED) _Show('Menu2') Case $MENU_3 _Previous_Selected_Cancel() $MENU_SELECTED = 'Menu3' GUICtrlSetBkColor($MENU_3, $COLOR_SELECTED) _Show('Menu3') EndSwitch If $Cursor[4] = $MENU_1 Then If $MENU_HOVER <> 'Menu1' And $MENU_SELECTED <> 'Menu1' Then _Previous_Hover_Cancel() GUICtrlSetBkColor($MENU_1, $COLOR_HOVER) $MENU_HOVER = 'Menu1' EndIf ElseIf $Cursor[4] = $MENU_2 Then If $MENU_HOVER <> 'Menu2' And $MENU_SELECTED <> 'Menu2' Then _Previous_Hover_Cancel() GUICtrlSetBkColor($MENU_2, $COLOR_HOVER) $MENU_HOVER = 'Menu2' EndIf ElseIf $Cursor[4] = $MENU_3 Then If $MENU_HOVER <> 'Menu3' And $MENU_SELECTED <> 'Menu3' Then _Previous_Hover_Cancel() GUICtrlSetBkColor($MENU_3, $COLOR_HOVER) $MENU_HOVER = 'Menu3' EndIf Else _Previous_Hover_Cancel() $MENU_HOVER = 'Idle' EndIf WEnd Func _Design() GUICtrlSetColor($MENU_1, 0xFFFFFF) GUICtrlSetBkColor($MENU_1, $COLOR_STANDARD) GUICtrlSetCursor($MENU_1, 0) GUICtrlSetColor($MENU_2, 0xFFFFFF) GUICtrlSetBkColor($MENU_2, $COLOR_STANDARD) GUICtrlSetCursor($MENU_2, 0) GUICtrlSetColor($MENU_3, 0xFFFFFF) GUICtrlSetBkColor($MENU_3, $COLOR_STANDARD) GUICtrlSetCursor($MENU_3, 0) EndFunc ;==>_Design Func _Hide_All() GUICtrlSetState($MENU_1_ELEMENT_1, $GUI_HIDE) GUICtrlSetState($MENU_2_ELEMENT_1, $GUI_HIDE) GUICtrlSetState($MENU_2_ELEMENT_2, $GUI_HIDE) EndFunc ;==>_Hide_All Func _Show($MENU_SHOW) _Hide_All() If $MENU_SHOW = 'Menu1' Then GUICtrlSetState($MENU_1_ELEMENT_1, $GUI_SHOW) ElseIf $MENU_SHOW = 'Menu2' Then GUICtrlSetState($MENU_2_ELEMENT_1, $GUI_SHOW) GUICtrlSetState($MENU_2_ELEMENT_2, $GUI_SHOW) ElseIf $MENU_SHOW = 'Menu3' Then EndIf EndFunc ;==>_Show Func _Previous_Hover_Cancel() If $MENU_HOVER = 'Menu1' Then If $MENU_SELECTED <> 'Menu1' Then GUICtrlSetBkColor($MENU_1, $COLOR_STANDARD) ElseIf $MENU_HOVER = 'Menu2' Then If $MENU_SELECTED <> 'Menu2' Then GUICtrlSetBkColor($MENU_2, $COLOR_STANDARD) ElseIf $MENU_HOVER = 'Menu3' Then If $MENU_SELECTED <> 'Menu3' Then GUICtrlSetBkColor($MENU_3, $COLOR_STANDARD) EndIf EndFunc ;==>_Previous_Hover_Cancel Func _Previous_Selected_Cancel() If $MENU_SELECTED = 'Menu1' Then GUICtrlSetBkColor($MENU_1, $COLOR_STANDARD) If $MENU_SELECTED = 'Menu2' Then GUICtrlSetBkColor($MENU_2, $COLOR_STANDARD) If $MENU_SELECTED = 'Menu3' Then GUICtrlSetBkColor($MENU_3, $COLOR_STANDARD) EndFunc ;==>_Previous_Selected_Cancel  
    • By Tony007
      Hi,
      is it possible to export only the area "$idOutput" with the TEXT as a PNG?
      Thanks
      #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> Example() Func Example() Local $hGUI = GUICreate("Test", 700, 700, -1, -1) Local $input1 = GUICtrlCreateInput("", 10, 10, 150, 20) Local $idButtonStart = GUICtrlCreateButton("Start", 200, 10, 50, 30) Local $idButtonClear = GUICtrlCreateButton("Clear", 260, 10, 50, 30) Local $idButtonExport = GUICtrlCreateButton("Export", 320, 10, 50, 30) Local $idOutput = GUICtrlCreateLabel("TEXT", 10, 50, 500, 500, BitOR($BS_PUSHLIKE, $SS_CENTER)) GUICtrlSetFont($idOutput, 45, 800, "", "Impact") GUISetState(@SW_SHOW, $hGUI) ; Run the GUI until the dialog is closed While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $idButtonStart $ContentInput1 = GUICtrlRead($input1) GUICtrlSetData($idOutput, $ContentInput1) Case $idButtonClear GUICtrlSetData($input1, "") GUICtrlSetData($idOutput, "") Case $idButtonExport EndSwitch WEnd GUIDelete($hGUI) Exit EndFunc ;==>Example  
×
×
  • Create New...