===== ClickB (Funcție) =====
> **Engleză:** //**CLICK** = clic; **B**utton = buton//
==== Format ====
**clickb**\\
**clickb** ( )
Întoarce un [[integerexpressions|număr_întreg]].
==== Descriere ====
Întoarce butonul cu care s-a dat clic cu mouse-ul ultima dată în fereastra grafică. Întoarce valoarea 0 dacă nu s-a făcut clic.
{{page>mousebuttonconstants}}
==== Exemplu ====
loop:
cls
print "mousex = "; mousex
print "mousey = "; mousey
print "mouseb = "; mouseb
print
print "clickx = "; clickx
print "clicky = "; clicky
print "clickb = "; clickb
pause 0.05
goto loop
==== Exemplul doi ====
# șterge orice clic făcut mai devreme
clickclear
# așteaptă pentru ca utilizatorul să dea clic
print "Fă clic pe fereastra grafică"
while clickb = 0
pause .01
endwhile
# Arată unde s-a făcut clic
print "Utilizatorul a dat clic la (x=" + clickx + ", y=" + clicky + ")"
==== Notă ====
Funcția **ClickB** va întoarce întotdeauna valoarea unui singur buton, deoarece un utilizator nu poate da clic cu două butoane în exact același moment.\\
Dacă se dorește să se verifice dacă utilizatorul a dat clic cu un anumit buton (să spunem cel din stânga) se poate compara astfel:
if clickb = MOUSEBUTTON_LEFT then print "a fost apăsat butonul din stânga";
Deși funcția **ClickB** poate întoarce valoarea unui singur buton apăsat, ea mai poate detecta și acțiunea de dublu clic (două clicuri rapide și succesive cu același buton în aproximativ același loc). În cazul în care utilizatorul execută un dublu clic, atunci valoarea întoarsă va conține valoare butonului care a generat clicul la care se va adăuga și valoarea MOUSEBUTTON_DOUBLECLICK.\\
Dacă se dorește să se verifice dacă utilizatorul a executat un dublu clic cu butonul din stânga se poate compara cu oricare din variantele:
if clickb = MOUSEBUTTON_LEFT + MOUSEBUTTON_DOUBLECLICK then print "a fost apăsat butonul din stânga";
if clickb = MOUSEBUTTON_LEFT & MOUSEBUTTON_DOUBLECLICK then print "a fost apăsat butonul din stânga";
**Atenție:** În cazul executării unui dublu clic, BASIC-256 va detecta mai întâi clicul inițial și va semnaliza prin funcția **ClickB** butonul apăsat. Dacă se execută un dublu clic, doar al doilea clic **ClickB** va conține atât valoare butonului cu care s-a făcut clic, cât și valoarea MOUSEBUTTON_DOUBLECLICK.\\
Pentru a detecta un clic făcut cu butonul din stânga, indiferent că este un simplu clic sau este un dublu clic, se poate verifica astfel:
if (clickb & MOUSEBUTTON_LEFT) then print "a fost apăsat butonul din stânga";
==== Exemplu cu detectarea butoanelor și a dublu clicului ====
# șterge orice clic făcut mai devreme
clickclear
print "Fă clic pe fereastra grafică"
# așteaptă pentru ca utilizatorul să dea clic
while clickb = 0
pause .01
endwhile
pause 0.5 # utilizatorul a dat clic, totuși acordăm un pic de timp ca să vedem dacă utilizatorul execută un dublu clic
# Arată unde s-a făcut clic
print "Utilizatorul a dat clic cu ";
if clickb & MOUSEBUTTON_LEFT then print "butonul din stânga";
if clickb & MOUSEBUTTON_RIGHT then print "butonul din dreapta";
if clickb & MOUSEBUTTON_CENTER then print "butonul din mijloc";
print " la (x=" + clickx + ", y=" + clicky + ")"
if clickb & 32 then print "De fapt utilizatorul a făcut un dublu clic!... :)" #replace 32 with constant MOUSEDOUBLECLICK
==== Exemplu complex ====
# Să dăm clic și dublu clic! - Florin Oprea
col={red,darkred,green,darkgreen,blue,darkblue,cyan,darkcyan,purple,darkpurple,yellow,darkyellow,orange,darkorange,grey,darkgrey}
graphsize 300, 300
clg
fastgraphics
penwidth 2
xx = 0
yy = 0
patrat_x = 0
patrat_y = 0
patrat_s = 0
patrat_c = 0
bucla:
# efect de desenare
if patrat_s <> 0 then
patrat_s = patrat_s + 20
patrat_x = patrat_x - 10
patrat_y = patrat_y - 10
color col[patrat_c]
rect patrat_x, patrat_y, patrat_s, patrat_s
if patrat_x<=0 and patrat_y<=0 and patrat_x+patrat_s>=300 and patrat_y+patrat_s>=300 then patrat_s = 0
end if
# desenează culori
c=0
for y = 50 to 200 step 50
for x = 50 to 200 step 50
# verifică dacă este dat un clic în pătrat
if clickb & MOUSEBUTTON_LEFT and clickx>=x and clickx<=x+30 and clicky>=y and clicky<=y+30 then
xx = x
yy = y
# verifică dacă este un dublu clic
if clickb & 32 then
patrat_x = x
patrat_y = y
patrat_s = 30
patrat_c = c
end if
clickclear
end if
# desenează pătrat
if xx=x and yy=y then
color white,col[c]
else
color black,col[c]
end if
c++ # incrementeză indexul de culoare
rect x, y, 30 ,30
next x
next y
refresh
pause 0.1
goto bucla
==== Vezi și ====
{{page>ro:start#Mouse&noheader}}
==== Istoric ====
|0.9.4d|Adăugată în acestă versiune|
|1.99.99.58|S-au adăugat numele constantelor pentru butoane|