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


Acum aproape un an de zile am scris articolul Să mai programăm cu AutoIt!, în care într-un cod de 100 de linii am expus mai multe noţiuni de bază. Dacă acela a fost un ritm prea alert, o să mergem mai lent în următoarele zile. Presupunerile de la care pornim este că aţi descărcat şi instalat AutoIt3 cu tot cu editorul text SciTE, care vă permite să compilaţi rapid scripturile. De exemplu copiind un cod de mai jos şi salvându-l local, ajunge să apăsaţi F5 şi va fi lansat! Mai presupunem că aveţi minime cunoştinţe de programare.

Şi acum… ce este un GUI? Vine de la graphical user interface şi s-ar putea traduce prin interfaţă grafică. AutoIt3, de care probabil ştiţi pentru că permite automatizări, are şi această extraordinară putere de a crea aplicaţii cu interfaţă grafică. Reveniţi vă rog la primul link pentru a vedea un exemplu uşor şi complex în acelaşi timp. Dar ca să mergem lin, iată un prim cod care nu face nimic altceva decât să afişeze o fereastră, fără nimic în ea, ce nu poate fi decât minimizată sau închisă.

Să vedem codul. În prima linie includem o bibliotecă pentru GUI-uri. În linia a 2-a facem ceva util la început: să cerem ca variabilele să fie declarate. Practic am putea sări liniile 2 şi 3, dar începătorii e bine să meargă cu declararea variabilelor, împotriva greşelilor de scriere. În linia 4 creăm fereastra, iar în linia următoare o afişăm. Hai că nu a fost greu! Acum vine bucla infinită (nu vă speriaţi) specifică AutoIt (liniile 7-10): se va ieşi din ea când se primeşte mesajul de închidere a ferestrei (generat fie cu click pe butonul de închidere a ferestrei, fie dând Escape). La final, linia 11, ştergem GUI-ul.

[PHP]#include <GUIConstantsEx.au3>
Opt(‘MustDeclareVars’, 1)
Local $msg
GUICreate("O fereastra") ; va crea o fereastra, afisata central
GUISetState(@SW_SHOW) ; va afisa fereastra… goala
; afisam interfata grafica pana la inchidere
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
GUIDelete()[/PHP]

Am creat desigur o fereastră nu doar goală ci şi cu toate valorile implicite. GUICreate suportă diverşi parametrii. De exemplu GUICreate(„O fereastra mai mica”,200,100) va crea o fereastră lată de 200 şi înaltă de 100. Implicit apare central dar o putem pune undeva anume pe ecran: GUICreate(„O fereastra in colt”,200,100,50,50). Tot implicit o fereastră nu poate fi redimensionată şi nu are buton de maximizare. Dacă ne interesează aşa ceva, umblăm la stiluri. Pentru aceasta vom mai introduce o nouă librărie, ce include printre altele constantele WS_MINIMIZEBOX ca să aibă buton de minimizare, WS_MAXIMIZEBOX ca să aibă buton de maximizare, WS_SYSMENU cerut de anterioarele şi WS_SIZEBOX pentru ca fereastra să poată fi redimensionată (toate constantele combinate cu BitOR). Vom avea ceva ca mai jos.

[PHP]#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt(‘MustDeclareVars’, 1)
Local $msg
GUICreate("O fereastra",200,100,-1,-1,BitOR($WS_MINIMIZEBOX,$WS_MAXIMIZEBOX,$WS_SYSMENU,$WS_SIZEBOX))
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
GUIDelete()[/PHP]

Şi până nu încheiem această introducere să punem totuşi ceva în fereastra goală. Să zicem un buton care să deschidă un sit. Cât de greu poate fi? Nu e greu.

În linia 6 creăm butonul. În bucla infinită folosim acum un Switch, fiind mai simplu şi mai adecvat. Dacă s-a primit evenimentul de închidere ieşim din buclă, evident. Dacă s-a primit evenimentul (click pe) butonul nostru tocmai creat, dăm să încarce o adresă web. Simplu… simplu… simplu… sper că v-am convins.

[PHP]#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt(‘MustDeclareVars’, 1)
Local $msg,$sit
GUICreate("CNet.ro",200,100)
$sit = GUICtrlCreateButton("vizitati-ne", 65, 40, 70, 30)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
ExitLoop
Case $sit
ShellExecute(‘www.cnet.ro’)
EndSwitch
WEnd
GUIDelete()[/PHP]

Urmează în alte articole să vedem cum putem face lucruri mai complicate. Să adăugăm controale în ferestre, să preluăm valorile…

PS: Toate fişierele acestei serii de tutoriale sunt publice şi descărcabile de aici. Exemplele de aici sunt fereastra01.au3, fereastra02.au3 şi fereastra03.au3.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (2 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 *