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


Oare despre ce nu am vorbit până acum din elementele unei interfeţe? A! Despre meniuri! Nu ar fi prima oară, căci de meniuri am amintit în articolul Să mai programăm cu AutoIt! Aşa că, evident, trebuie să facem lucrurile mai interesant. Şi m-am gândit atunci să vedem cum am putea face (tot rudimentar, didactic) o aplicaţie cu interfaţa în mai multe limbi. Pentru uşurinţă am ales doar două, română şi engleză. În meniu am pus Language/Limba, care se deschide cu opţiunile English şi Română. Alegând una dintre ele, limba se va schimba corespunzător. Nu doar limba din meniuri ci şi cea de la butoanele radio (plus elementul de grupare).

imagine

În fine, tot ca să mai fie ceva nou, am introdus un buton… de data aceasta nu cu text ci cu o imagine. Să vedem însă codul… De la linia 6 la linia 24 ne ocupăm de GUI, punând meniul cu opţiunile lui, iar apoi partea cu butoanele radio. Deja nu cred că mai necesită explicaţii. În bucla infinită urmărim ce mesaje emite interacţiunea utilizatorului cu GUI-ul, şi apelăm după caz funcţia SchimbaLimba. Aceasta pur şi simplu înlocuieşte textele, după cum e cazul. Simplu şi la obiect.

[PHP]#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <ButtonConstants.au3>

GUICreate("CNet.ro – Meniuri", 300, 200)
$fisier = GUICtrlCreateMenu("&File")
$deschidere = GUICtrlCreateMenuItem("Open", $fisier)
$separator = GUICtrlCreateMenuItem("", $fisier, 2)
$iesire = GUICtrlCreateMenuItem("Exit", $fisier)
$limba = GUICtrlCreateMenu("&Language")
$engleza = GUICtrlCreateMenuItem("English", $limba)
GUICtrlSetState(-1, $GUI_CHECKED)
$romana = GUICtrlCreateMenuItem("Română", $limba)
$helpmenu = GUICtrlCreateMenu("?")
$infoitem = GUICtrlCreateMenuItem("Info", $helpmenu)
$limba2 = GUICtrlCreateGroup("Language", 10, 10, 105, 80)
GUIStartGroup()
$radio_en = GUICtrlCreateRadio("English", 20, 25, 70, 20)
$radio_ro = GUICtrlCreateRadio("Română", 20, 50, 60, 20)
GUICtrlSetState($radio_en, $GUI_CHECKED)
$buton_iesire = GUICtrlCreateButton("5", 250, 130, 32, 32, $BS_ICON)
GUICtrlSetImage(-1, "shell32.dll", 28)
GUISetState()
While 1
$msg = GUIGetMsg()
If $msg = $romana Then
If BitAND(GUICtrlRead($romana), $GUI_CHECKED) = $GUI_CHECKED Then
SchimbaLimba($GUI_UNCHECKED,$GUI_CHECKED)
Else
SchimbaLimba($GUI_CHECKED,$GUI_UNCHECKED)
EndIf
EndIf
If $msg = $radio_ro Then
If BitAND(GUICtrlRead($radio_ro), $GUI_CHECKED) = $GUI_CHECKED Then
SchimbaLimba($GUI_CHECKED,$GUI_UNCHECKED)
Else
SchimbaLimba($GUI_UNCHECKED,$GUI_CHECKED)
EndIf
EndIf
If $msg = $engleza Then
If BitAND(GUICtrlRead($engleza), $GUI_CHECKED) = $GUI_CHECKED Then
SchimbaLimba($GUI_CHECKED,$GUI_UNCHECKED)
Else
SchimbaLimba($GUI_UNCHECKED,$GUI_CHECKED)
EndIf
EndIf
If $msg = $radio_en Then
If BitAND(GUICtrlRead($radio_en), $GUI_CHECKED) = $GUI_CHECKED Then
SchimbaLimba($GUI_UNCHECKED,$GUI_CHECKED)
Else
SchimbaLimba($GUI_CHECKED,$GUI_UNCHECKED)
EndIf
EndIf
If $msg = $GUI_EVENT_CLOSE Or $msg = $iesire Or $msg=$buton_iesire Then ExitLoop
If $msg = $infoitem Then MsgBox(0, "Info", "//–\\")
WEnd
GUIDelete()

Func SchimbaLimba($ro,$en)
GUICtrlSetState($radio_ro, $ro)
GUICtrlSetState($radio_en, $en)
GUICtrlSetState($romana, $ro)
GUICtrlSetState($engleza, $en)
If $ro = $GUI_CHECKED Then
GUICtrlSetData($fisier,"&Fisier")
GUICtrlSetData($deschidere,"&Deschide")
GUICtrlSetData($iesire,"Iesire")
GUICtrlSetData($limba,"&Limba")
GUICtrlSetData($limba2,"&Limba")
EndIf
If $en = $GUI_CHECKED Then
GUICtrlSetData($fisier,"&File")
GUICtrlSetData($deschidere,"&Open")
GUICtrlSetData($iesire,"Exit")
GUICtrlSetData($limba,"&Language")
GUICtrlSetData($limba2,"&Language")
EndIf
EndFunc[/PHP]

Cât despre butonul cu imagine, în shell32.dll există automat în Windows tot felul de iconiţe gata de utilizare. Cum ştim ce număr la ce imagine corespunde? Dacă v-aţi instalat AutoIt3 mergeţi în Examples\GUI\Advanced şi veţi găsi acolo enumicons.au3 care, rulat, arată ca mai jos. Astfel puteţi vedea (pe lângă codul în sine, pentru a mai învăţa ceva, şi) asocierea pentru iconiţe.

imagine

PS: Toate fişierele acestei serii de tutoriale sunt publice şi descărcabile de aici. Exemplele de aici sunt fereastra10.au3 cu executabilul meniuri.exe, eventual şi iconite.exe.


Apreciază articolul:

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