===== 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|