Jcreator Posted July 27, 2016 Posted July 27, 2016 i have a file flower.txt with the name of the flowers and there picture location and information about that kind of flower. i wana cerat a gui that will display the flower picture and it information here is the script expandcollapse popup#include <Misc.au3> #include <EditConstants.au3> #include <Constants.au3> #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <MsgBoxConstants.au3> #include <WindowsConstants.au3> #include <AVIConstants.au3> #include <TreeViewConstants.au3> #include <GuiComboBox.au3> #include <GuiTab.au3> #include <file.au3> #include <array.au3> Global $sfPath = 'flowers.txt' Global $aFlowers _FileReadToArray($sfPath,$aFlowers,$FRTA_NOCOUNT,'|') _ArrayColDelete($aFlowers,0) ;row 0 has no data so deleting $Form1 = GUICreate("Search Flower Name",320, 480) $input = GUICtrlCreateInput("", 60, 360, 209, 25) $idss = GUICtrlCreateButton("Search", 130, 400, 73, 65) GUISetState(@SW_SHOW) Func Searchf() Global $Fname = GUICtrlRead($input) For $iNo = 0 To UBound($aFlowers[0][0]) - 1 ; if $Fname = $aFlowers[$iNo][0] then MsgBox($MB_SYSTEMMODAL, "","Flower nfo", ""& $aFlowers[$iNo][1] &"") pic() EndIf Next EndFunc While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $nMsg = $idss Searchf() EndSwitch WEnd func pic() For $iNo = 0 To UBound($aFlowers[0][0]) - 1 GUICtrlCreatePic($aFlowers[$iNo][2], 20, 30, 280, 280) Next EndFunc here is the flower.txt file |Hibiscus|Hibiscus is a hardy perennial which grows in variety of colors, sizes and fragrances. Actually they are tropical flowers which require ample sunlight and moisture to grow well. These flowers start blooming in late spring and continuously bloom through July and August.|C:\T-in\IMG\2.jpg |Lilies|There are different types of lily flowers which bloom in August including water lilies, tiger lilies and gold band lilies. Tiger lilies generate orange flowers having black spots. This lily blooms in delayed July and beginning of August. Gold band lily produce exotic white blooms. All varieties of lilies need enough space to grow and protection from summer sun.|C:\T-in\IMG\1.jpg |Turtlehead|Growing in humid areas, turtleheads are small flowers which bloom from July to September. They mostly produce flowers of white and pink color.|C:\T-in\IMG\3.jpg |Hydrangea|These are ever green bushes which produce flowers in different colors including white, purple, blue and pink. They are easy to grow bushes and can grow 3 to 10 feet tall. They require morning sun to grow but they should be protected from noon and afternoon sun.|C:\T-in\IMG\4.jpg |Dahlias|August proves to be the peak blooming season for dahlias. Dahlias come in colors like white, orange, yellow, red and purple. They can tolerate all types of soil and require full sun to grow.|C:\T-in\IMG\5.jpg am still trying to learn about how the ubound work and the _filereadtoarray
Terenz Posted July 27, 2016 Posted July 27, 2016 (edited) #include <Array.au3> Local $sPath = 'flowers.txt' Local $hPath = FileOpen($sPath) If $hPath = -1 Then Exit Local $aFlowers = StringSplit(StringTrimLeft(FileRead($hPath), 1), "|", 2) FileClose($hPath) _ArrayDisplay($aFlowers) For $x = 0 To UBound($aFlowers) - 1 Step 3 MsgBox(0, "NAME", $aFlowers[$x]) Next For $x = 1 To UBound($aFlowers) - 1 Step 3 MsgBox(0, "DESCRIPTION", $aFlowers[$x]) Next For $x = 2 To UBound($aFlowers) - 1 Step 3 MsgBox(0, "IMAGE", $aFlowers[$x]) Next For $x = 0 To UBound($aFlowers) - 1 If $aFlowers[$x] = "Hibiscus" Then MsgBox(0, "NAME", $aFlowers[$x]) MsgBox(0, "DESCRIPTION", $aFlowers[$x + 1]) MsgBox(0, "IMAGE", $aFlowers[$x + 2]) ExitLoop EndIf Next Study it, isn't so hard. Edited July 28, 2016 by Terenz Nothing is so strong as gentleness. Nothing is so gentle as real strength
Damein Posted July 27, 2016 Posted July 27, 2016 You were really close, keep up the good work! All problems I have comments on. This should work. Let me know! expandcollapse popup#include <Misc.au3> #include <EditConstants.au3> #include <Constants.au3> #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <MsgBoxConstants.au3> #include <WindowsConstants.au3> #include <AVIConstants.au3> #include <TreeViewConstants.au3> #include <GuiComboBox.au3> #include <GuiTab.au3> #include <file.au3> #include <array.au3> Global $sfPath = 'flowers.txt' Global $aFlowers, $FlowerFound = 0 ; Added in a global variable that you can assign if when searching the flower is in the Flower.txt so you can alert the user no data was found. _FileReadToArray($sfPath, $aFlowers, $FRTA_NOCOUNT, '|') _ArrayColDelete($aFlowers, 0) ;row 0 has no data so deleting $Form1 = GUICreate("Search Flower Name", 320, 480) $input = GUICtrlCreateInput("", 60, 360, 209, 25) $idss = GUICtrlCreateButton("Search", 130, 400, 73, 65) GUISetState(@SW_SHOW) Func Searchf() Global $Fname = GUICtrlRead($input) For $iNo = 0 To UBound($aFlowers) - 1 ; You do not add [0][0] to a Ubound since its searching the entire Array already it just requires the Array Name. If $Fname = $aFlowers[$iNo][0] Then MsgBox(0, "Flower Info", $aFlowers[$iNo][1]) ; Shortened this up for cleaner look IMO. $FlowerFound = 1 ; Assigned a 1 to the FlowerFound so you can detect if the flower is in the Flowers.txt pic() Else EndIf Next If $FlowerFound = 0 Then ; Error handling to let the user know the flower is not located in the Flower.txt MsgBox(48, "Error", "No flower found in database!") EndIf $FlowerFound = 0 ; Reassign FlowerFound to 0 so next search it can detect if its not found or found again EndFunc ;==>Searchf Func pic() For $iNo = 0 To UBound($aFlowers) - 1 ; Same principle as above, only the Array Name is needed. GUICtrlCreatePic($aFlowers[$iNo][2], 20, 30, 280, 280) Next EndFunc ;==>pic While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $idss ; You just need the ID of the Control, not the GuiGetMsg info. You were close! Searchf() EndSwitch WEnd Most recent sig. I made Quick Launcher W/ Profiles Topic Movie Database Topic & Website | LiveStreamer Pro Website | YouTube Stand-Alone Playlist Manager: Topic | Weather Desktop Widget: Topic | Flash Memory Game: Topic | Volume Control With Mouse / iTunes Hotkeys: Topic | Weather program: Topic | Paws & Tales radio drama podcast mini-player: Topic | Quick Math Calculations: Topic
AutoBert Posted July 28, 2016 Posted July 28, 2016 (edited) I made some changes to @Damein script: expandcollapse popup#include <Misc.au3> #include <EditConstants.au3> #include <Constants.au3> #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <MsgBoxConstants.au3> #include <WindowsConstants.au3> #include <AVIConstants.au3> #include <TreeViewConstants.au3> #include <GuiComboBox.au3> #include <GuiTab.au3> #include <file.au3> #include <array.au3> Global $sfPath = 'flowers.txt' Global $idPic=-99 ;<== placeholder PicControlID Global $aFlowers ; $FlowerFound = 0 ; Added in a global variable that you can assign if when searching the flower is in the Flower.txt so you can alert the user no data was found. ;<== moved in local scope _FileReadToArray($sfPath, $aFlowers, $FRTA_NOCOUNT, '|') _ArrayColDelete($aFlowers, 0) ;row 0 has no data so deleting $Form1 = GUICreate("Search Flower Name", 320, 480) $input = GUICtrlCreateInput("", 60, 360, 209, 25) $idss = GUICtrlCreateButton("Search", 130, 400, 73, 65) GUISetState(@SW_SHOW) Func Searchf() Local $Fname = GUICtrlRead($input) ;<== use local scope Local $FlowerFound ;<== For $iNo = 0 To UBound($aFlowers) - 1 ; You do not add [0][0] to a Ubound since its searching the entire Array already it just requires the Array Name. If $Fname = $aFlowers[$iNo][0] Then MsgBox(0, "Flower Info", $aFlowers[$iNo][1]) ; Shortened this up for cleaner look IMO. $FlowerFound = 1 ; Assigned a 1 to the FlowerFound so you can detect if the flower is in the Flowers.txt pic($aFlowers[$iNo][2]) ;<== calling func with path from pic ExitLoop ;<== allready found so search is ended ;Else ;<== EndIf Next If $FlowerFound = 0 Then ; Error handling to let the user know the flower is not located in the Flower.txt MsgBox(48, "Error", "No flower found in database!") EndIf ;$FlowerFound = 0 ; ;<== no need in local scope EndFunc ;==>Searchf Func pic($sPicPath) If $idPic<>-99 Then GUICtrlDelete($idPic) $idPic=GUICtrlCreatePic($sPicPath, 20, 30, 280, 280) EndFunc ;==>pic While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $idss ; You just need the ID of the Control, not the GuiGetMsg info. You were close! Searchf() EndSwitch WEnd my added comments begin with ;<== and my changes are based on my thinking each flowername is only once in the file. Edited July 28, 2016 by AutoBert
Jcreator Posted July 28, 2016 Author Posted July 28, 2016 (edited) @Terenz you saved my life . your script was so easy to experiment with so i could know what i needed to do Thank you and for @damien your explanation helped me know what are the mistake i had in my script @AutoBert i cant thank you enough every time am in trouble i found you there for me without you i would have spend moths postponing this project i owe you so much i hope you have a wonderful day thanks everyone and here is a happy cat face Edited July 28, 2016 by Jcreator
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