Sunteți pe pagina 1din 5

Programare vizuală (suport de curs), A.Pereteatcu, S.

Pereteatcu

6.3. Butoane de opţiune


Butoanele de opţiune (engl. Radio battons) propun utilizatorului alegerea unei singure
obţiuni dintre două sau mai multe. Butoanele de opţiune se crează în baza clasei
System.Windows.Forms.RadioButton şi se unesc în grup. Dintr-un grup poate fi selectat doar
un singur buton de opţiune, celelate devin deselectate. Pentru a uni un set de butoane de opţiune
în grup ele trebuie să fie puse în elementul de control GroupBox sau Panel. Totuşi, dacă vom
pune butoanele de opţiune nemijlocit pe forma, ele totuna vor fi unite într-un grup.
Dezvoltăm exemplul precedent. În clasa MainDialog inserăm:
//Declarăm o referinţă la obiectul panel şi trei referinţe
//la obecte butoane de opţiune
private GroupBox m_GB_Color;
private RadioButton m_RB_Red;
private RadioButton m_RB_Green;
private RadioButton m_RB_Blue;

În constructorul clasei MainDialog inserăm următorul cod:


//Creăm la rînd trei butoane de opţiune
m_RB_Red=new RadioButton();
//Setăm textul butonului de opţiune
m_RB_Red.Text="Red";
//Setăm starea iniţială a butonului de opţiune
m_RB_Red.Checked=false;
//Setăm dimensiunea şi locaţia butonului de opţiune pe panel
m_RB_Red.Location=new System.Drawing.Point(16,16);
m_RB_Red.Size=new System.Drawing.Size(80,20);
//Vom numi unul şi acelaşi handler de evenimentul Click la toate trei
//butoane de obţiune
m_RB_Red.Click+=new System.EventHandler(RadioButton_Click);

m_RB_Green=new RadioButton();
m_RB_Green.Text="Green";
m_RB_Green.Checked=true;
m_RB_Green.Location=new System.Drawing.Point(16,36);
m_RB_Green.Size=new System.Drawing.Size(80,20);
m_RB_Green.Click+=new System.EventHandler(RadioButton_Click);

m_RB_Blue=new RadioButton();
m_RB_Blue.Text="Blue";
m_RB_Blue.Checked=false;
m_RB_Blue.Location=new System.Drawing.Point(16,56);
m_RB_Blue.Size=new System.Drawing.Size(80,20);

16
Programare vizuală (suport de curs), A.Pereteatcu, S.Pereteatcu

m_RB_Blue.Click+=new System.EventHandler(RadioButton_Click);

m_Button.ForeColor=Color.Green;

//Creăm un obiect panel


m_GB_Color=new GroupBox();

//Setăm textul din antetul panelului


m_GB_Color.Text="Choose color";

//Setăm dimensiunea şi locaţia panelului pe fereastră


m_GB_Color.Location=new System.Drawing.Point(18,100);
m_GB_Color.Size=new System.Drawing.Size(100,80);

//Adăugăm butoanele de opţiune la panel


m_GB_Color.Controls.AddRange(new Control[]
{
m_RB_Red,
m_RB_Green,
m_RB_Blue
});

//Adăugăm panelul în fereastră


Controls.Add(m_GB_Color);

În clasa MainDialog inserăm codul handlerului pntru evenimentul Click pe butonul de


opţiune:
//Handlerul evenimentului Click pe butonul de opţiune
private void RadioButton_Click(object sender, System.EventArgs e)
{
//Transformăm referinţa sender la tipul referinţă
//la obiecte clasei RadioButton
RadioButton rb=(RadioButton)sender;

//Schimbăm culoarea textului pe buton


switch(rb.Text)
{
case "Red":
{
m_Button.ForeColor=Color.Red;
break;
}

17
Programare vizuală (suport de curs), A.Pereteatcu, S.Pereteatcu

case "Green":
{
m_Button.ForeColor=Color.Green;
break;
}
case "Blue":
{
m_Button.ForeColor=Color.Blue;
break;
}
}
}

Elementul de control GroupBox este dotat cu un chenar cu textul în antet, care lămureşte
destinaţia elementelor de control din acest grup. Spre deosebire de grup, panelul (Panel)
reprezintă o fereastră dreptunghulară fără antet. Pe panelul pot fi plasate obiecte arbitrare.
Panelul poate avea bare de scrolling.

6.4. Casete de validare


Casetele de validare funcţionează independent una de alta. Nu contează cum vor fi plasate
ele, în intereorul panelelor GroupBox sau Panel, sau puse nemijlocit în fereastra aplicaţiei.
Casetele de validare se creaiază în baza clasei System.Windows.Forms.CheckBox.
Cercetăm câteva proprietăţi ale acestor casete. Proprietatea Appearance defineşte aspectul
casetei. Implicit, acesta este Normal, caseta reprezintă o etichetă alături de o casetă mică. În
cazul în care stabilim valoarea Button, caseta de validare va semăna cu un buton obişnuit. În
cazul în care caseta de validare este selectată, ea se desenează ca un buton apăsat, în cazul cînd
ea este deselectată se desenează ca un buton obişnuit neapăsat.
Proprietatea CheckAlign permite alegerea modului de amplasare relativă casetei de validare
şi etichetei pentru ea. Ordinea obişnuită este: eticheta stă din partea dreaptă. Este posibilitatea de
a plasa mai întâi eticeta şi apoi caseta.
Cea mai importantă proprietatea este ThreeState. Dacă proprietatea aceasta are valoarea
true, atunci caseta de validare este un control tri-stare, adică, în loc de două poate avea trei stări:
 selectată;
 deselectată;
 startea nedefinită (estompată).

18
Programare vizuală (suport de curs), A.Pereteatcu, S.Pereteatcu

Controlul trece consecutiv prin aceste stări atunci când utilizatorul execută clicuri pe el.
Starea controlului se poate modifica şi prin program. Pentru aceasta trebue să schimbăm valoarea
proprietăţii CheckState.
Dacă caseta de vaslidare poate lua numai două stări (proprietatea ThreeState are valoarea
false), proprietatea CheckState poate fi CheckState.Checked (caseta de validare este
selectată, afişează un marcaj de validare sau o cruce, de exemplu, în Windows NT) sau
CheckState.Unchecked (caseta de validare nu este selectată, caseta este goală).
În cazul când proprietatea ThreeState are valoarea true, proprietatea CheckState mai
poate avea şi valoarea CheckState.Indeterminate (starea nedeterminată).
Dezvoltăm exemplul precedent:
În clasa Dialog inserăm următorul cod:
//Declarăm o referinţă la casete de validare
private CheckBox m_CB_EnableButton;

În constructorul clasei MainDialog inserăm:


//Creăm un obiect caseta de validarte
m_CB_EnableButton=new CheckBox();
//Setăm textul casetei
m_CB_EnableButton.Text="Enable button";
//Stabilim satrea iniţială casetei
m_CB_EnableButton.Checked=true;
//Setăm plasarea relativă între caseta mică şi eticheta
m_CB_EnableButton.CheckAlign=ContentAlignment.MiddleRight;
//Setăm dimensiunea şi poziţia casetei de validare în fereastră
m_CB_EnableButton.Location=new System.Drawing.Point(18,190);
m_CB_EnableButton.Size=new System.Drawing.Size(100,16);
//Adăugăm handler la evenimentul Click pe Eticeta de validare
m_CB_EnableButton.Click+=new System.EventHandler(CheckBox_Click);
//Punem eticheta de validare pe forma
Controls.Add(m_CB_EnableButton);

În clasa MainDialog inserăm codul handleruli evenimentului Click pe etichetă de validare:


//Handlerul evenimentului Click pe etichetă de validare
private void CheckBox_Click(object sender, System.EventArgs e)
{
m_Button.Enabled=m_CB_EnableButton.Checked;
}

19
Programare vizuală (suport de curs), A.Pereteatcu, S.Pereteatcu

Aplicaţia poate dinamic să blocheze şi să deblockeze butoanele şe altele elemente de control


care se află în formă. Pentru a bloca un buton trebuie de pus proprietatea Enabled pe false.
Butonul blocat se reflectă în formă, însă elementul de control blocat nu reacţionează la mouse
nici la tastatură, şi nu generează evenimente.

6.5. Explicaţii flotante


Pentru fiecare element de control plasat în formă putem crea o explicaţie flotantă. Această
explicaţie va apărea într-o mică fereastră separată de fiecare dată când cursorul al mouselui va fi
plasat şi puţin reţinut pe elemntul de control respectiv. Explicaţiile flotante se crează în baza
clasei System.Windows.Forms.ToolTip.
Descriem cele mai uzuale proprietăţi ale clasei ToolTip.
Proprietatea AutomaticDelay stabileşte timpul de reţinere la apariţia explicaţiei flotante.
Automat setează proprietăţile pentru celelalte timpuri.
Proprietatea AutoPopDelay stabileşte cât timp explicaţia flotantă rămâne vizibilă.
Proprietatea InitialDelay stabileţte cât timp utilizatorul trbuie să reţină cursorul asupra
elementul de control pentru apariţia eticetei flotante.
Proprietatea ShowAlways indică dacă vor fi vizibile explicaţiile flotante, în cazul când
fereastara formei devine inactivă.
Exemplu:
La clasa MainDialog adăugăm:
//Declarăm o referinţă la obiecte ”Eticetă flotantă”
private ToolTip m_ToolTip;
În constructorul clasei MainDialog inserăm:
//Creăm un obiect ”Etcetă flotantă”
m_ToolTip=new ToolTip();
//Stabilim reţinerea la apariţia eticetei flotante
m_ToolTip.AutomaticDelay=300;
//De a arăta eticeta flotantă şi în cazul când fereastra formei este
//inactivă
m_ToolTip.ShowAlways=true;
//Definim textul explicaţiei flotante şi o legăm cu butonul de comandă
m_ToolTip.SetToolTip(m_Button,
"Pressing the button will display message box");

20

S-ar putea să vă placă și