AutoIt3: Despre GUI-uri, cu calm (II)


După cum probabil aţi constatat, nu ne jucăm ci scriem programe! :) Că sunt programe inutile e altă poveste. Totul este didactic pentru moment, dar cu puţină imaginaţie puteţi întrevedea – de la un moment dat – idei practice. Acum, rămânând, tot la GUI-uri (interfeţe) simple, vom încerca să le dăm puţină interactivitate şi… culoare. Mai jos vedeţi un program generat din codul aflat sub el. Ideea e simplă: scriem o adresă în câmpul text (ex: www.google.com) şi apăsăm butonul (sau Enter) şi adresa va fi încărcată în navigator. Da, am extins aplicaţia din materialul anterior, astfel ca adresa să fie aleasă/indicată de utilizatori.

Punctual: în prima linie am zis să nu mai folosească iconiţă în systray. După deja clasicele linii (vezi articolul anterior), spunem ca la apăsarea tastei Enter să lanseze funcţia Lanseaza() – ce face ea vedem mai încolo. În linia 6 declarăm variabilele, iar în linia 7 deja creăm fereastra. În următoarea linie i-am zis să pună fundal alb (altfel e culoarea implicită din Windows). Am creat (linia 9) un control pentru introducere de text, iar apoi (linia 10) butonul la apăsarea căruia să se deschidă adresa web. Am pus şi o explicaţie (un control tip label – linia 11). În fine, am pus şi o imagine (fiind în acelaşi director cu scriptul nu trebuie cale) şi o iconiţă (liniile 12 şi 13). Am afişat apoi fereastra şi vine bucla infinită. Dacă am dat click pe buton (sau, vă amintiţi de scurtătura definită mai sus, dacă am dat Enter) se apelează funcţia Lanseaza(). Aceasta încarcă în navigator ceea ce citeşte din controlul input şi iese din program. Simplu! Din nou simplu!

[PHP]#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt(‘MustDeclareVars’, 1)
HotKeySet("{ENTER}", "Lanseaza")
Local $msg,$sit,$url
GUICreate("CNet.ro",380,180)
GUISetBkColor(0xFFFFFF)
$url = GUICtrlCreateInput("", 10, 15, 180, 20)
$sit = GUICtrlCreateButton("deschide pagina", 40, 50, 120, 30)
GuiCtrlCreateLabel("Un program demonstrativ pentru a deprinde putin AutoIt3. Nu face decat sa lanseze o adresa web scrisa in controlul text de mai sus.",10,100,200,200)
GuiCtrlCreatePic("imagine.jpg",220,5,156,160)
GuiSetIcon("iconita.ico")
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $sit
Lanseaza()
EndSwitch
WEnd
Func Lanseaza()
ShellExecute(GUICtrlRead($url))
Exit
EndFunc
GUIDelete()[/PHP]

Acum să încercăm altceva. În loc să afişăm o imagine să folosim una ca fundal. Şi în loc să fie un câmp text unde să se scrie adresa să punem o listă derulantă (combobox) de unde utilizatorul să aleagă din ceea ce am predefinit noi. Obţinem un program care arată ca mai jos (un fel de lansator rapid de adrese web).

Pentru a înţelege acest exemplu trebuie să reţinem ceva interesant (şi cumva de-ndoaselea) legat de funcţionarea în AutoIt. Când avem un control (acesta este un element de la input la label, combobox ş.a.), după ce a fost definit se fac setările pentru el, nu înainte. Observaţi mai jos: în linia 8 am definit imaginea (de fundal), iar în linia 9 am spus să nu fie considerată (inter)activă; în linia 10 am definit textul şi abia în următoarele linii am spus să seteze fundalul pe transparent şi să scrie cu albastru deschis. Apoi noutatea faţă de exemplu de mai sus este că am folosit GUICtrlCreateCombo în loc de GUICtrlCreateInput. În linia 14 am mai populat lista cu valori şi am indicat elementul selectat implicit (dacă nu scriem nimic va fi primul din listă). De reţinut că lista ar fi fost completabilă (adică se putea scrie un text nou) dacă nu aş fi pus $CBS_DROPDOWNLIST. Acesta transformă combobox-ul într-unul gen HTML (adică eşti limitat să alegi ce e în listă). În rest programul e cam la fel.

[PHP]#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>
Opt(‘MustDeclareVars’, 1)
Local $msg,$sit,$url
GUICreate("CNet.ro",380,130)
GuiCtrlCreatePic("fundal.jpg",0,0,380,130)
GUICtrlSetState(-1, $GUI_DISABLE)
GuiCtrlCreateLabel("Un program demonstrativ pentru a deprinde putin AutoIt3. Nu face decat sa lanseze o adresa web aleasa din lista derulanta aflata in stanga acestui text.",200,20,170,200)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0x00FFFF)
$url = GUICtrlCreateCombo("www.bing.com", 10, 20,180,-1,$CBS_DROPDOWNLIST)
GUICtrlSetData(-1, "www.google.ro|www.yahoo.com|www.wolframalpha.com", "www.google.ro")
$sit = GUICtrlCreateButton("deschide pagina", 40, 90, 120, 30)
GuiSetIcon("iconita.ico")
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $sit
Lanseaza()
EndSwitch
WEnd
Func Lanseaza()
ShellExecute(GUICtrlRead($url))
Exit
EndFunc
GUIDelete()[/PHP]

Putem în loc de Case $sit să punem Case $url şi atunci putem chiar şi să eliminăm butonul „deschide pagina”, pentru că la actualizarea combobox-ului se va trece la Lanseaza(). Testaţi Dvs, modificând codul de mai sus.

Ce-am învăţat? Deja ştim să creăm ferestre, să punem într-o fereastră butoane şi controale input şi combobox. De asemenea să punem imagini (limitare: JPG, GIF şi BMP – partea bună este că există workaround şi pentru PNG-uri)

PS: Toate fişierele acestei serii de tutoriale sunt publice şi descărcabile de aici. Exemplele de aici sunt fereastra04.au3 şi fereastra05.au3 (cu imaginile aferente).


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (4 evaluări, media: 5,00 din 5)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *