Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

A C++ programozás Windows környezetben

Hasonló előadás


Az előadások a következő témára: "A C++ programozás Windows környezetben"— Előadás másolata:

1 A C++ programozás Windows környezetben
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./0. A C++ programozás Windows környezetben Pozícióbeállító és kijelző vezérlők a programban Görgetőléc (ScrollBar) vezérlő Csúszka (TrackBar) vezérlő Folyamatállás kijelző (ProgressBar) vezérlő Léptető (UpDown) vezérlő Mintaprogram pozícióbeállító és kijelző vezérlőkkel

2 Görgetőléc (ScrollBar) vezérlő
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./1. Görgetőléc (ScrollBar) vezérlő A görgetőléc szolgál az ablakban teljesen el nem férő ablaktartalmak begörgetésére az ablakba. Részei a tolóka, a léc és a léptetőgombok. A görgetőléc egérrel és billentyűzettel egyaránt kezelhető, ilyen eseménykeze- lő függvényei vannak. A Kind jellemző értékétől függően függőleges és vízszintes helyzetű lehet. A programban a görgetendő tartalom mozgásintervallumát a csúszka mozgástartományára kell leképezni a Min és a Max jellemzők értékének megadásával. A görgető gombokat használva a tolóka a SmallChange értéknek megfelelő lépésekkel mozog. Ha lapozunk, azaz a gombok és a tolóka között kattintunk, vagy a PgUp,PgDn gombokkal görgetünk, akkor a LargeChange lépésnagy-sággal mozog. A tolóka aktuális pozíciójának értéke a Position jellemzővel olvasható, írható. A tolóka helyének megváltozásakor OnChange esemény történik, melynek eseménykezelőjét a komponensen duplán kattintva hozhatjuk létre. Ez az esemény mind egérrel, mind billentyűzettel, mind programból megváltoztatott csúszkahelyzetnél bekövetkezik. A függvényben elvégezhetjük a mozgatandó tartalom helyének megváltoztatását.

3 Csúszka (TrackBar) vezérlő
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./2. Természetesen a tolóka mozgatásával bevitt folytonosan változó értéket más célra is használhatjuk, pl. egy tárgy forgatására, mozgások lejátszására. A görgetőléc egy belső timer-rel, szaggatóval működik. A Min, Max és a Position jellemzők egy lépésben is megadhatók a SetParams metódus hívásával. A csúszka pozíciójára, illetve a görgetési tevékenység mikéntjére vonatkozó információkat kaphatunk az OnScroll eseménykezelő függvény használatával. Csúszka (TrackBar) vezérlő A lineáris műszerskálára emlékeztető vezérlő egy inter- vallumon belül változó érték nyomonkövetésére, vagy megváltoztatására használható. Legfontosabb jellemző- je a görgetőléchez hasonlóan a mutató alakú tolóka helyzete, melyet a Position jellemzővel írhatunk, olvas- hatunk. Az Orientation vízszintes és függőleges lehet. A skálázás tartományát adhatjuk meg a Min és Max jellemzőkkel, melyeken belül megadhatunk egy vizuálisan kiemelt résztarto-mányt a SelStart és a SelEnd jellemzőkkel. A TikMarks jellemzővel a skálázás oldalát adhatjuk meg, a TickStyle jellemzővel pedig a stílusát. A Frequency jellemzővel a skála sűrűsége állítható.

4 Folyamatállás kijelző (ProgressBar) vezérlő
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./3. Folyamatállás kijelző (ProgressBar) vezérlő A folyamatállás kijelző elsősorban időben zajló folyamatok állásának, előrehaladásának kijelzésére alkalmas. Leg- fontosabb jellemzője a Position, mely a Min és Max vég- értékek közötti értéket vehet fel, leolvasható és módosít- ható. A Step jellemzőnek megfelelő értékű újabb szeg- mens a StepIt( ) metódus hatására jelenik meg. Tetsző- leges lépéssel növelhetjük a Position tartalmát a StepBy metódussal. A Smooth jellemzővel folytonos csík, vagy szegmenses forma között választhatunk. Léptető (UpDown) vezérlő A léptető egész változó értékének az Increment jellemző- ben megadott értékkel való növelésére, csökkentésére al- kalmas. Egysoros szövegszerkesztővel egybeépítve (lásd Associate jellemző) a szám beírható, de a gombokkal léptethető is. Az értéket a Position jellemző tárolja, mely programból is írható, olvasható. Értéke a Min és Max jellemzők értéke közé eshet. Legfontosabb eseménye az OnClick, mely megadja, hogy melyik gombot nyomták le. Irányát az Orientation jellemző határozza meg.

5 Mintaprogram pozícióbeállító és kijelző vezérlőkkel
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./4. Mintaprogram pozícióbeállító és kijelző vezérlőkkel Feladat: készítsük el az alábbi ablakkal jellemezhető C++ Builder programot!

6 egy frissen megnyitott üres alkalmazást.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./5. A programban a Korong a görgetőléccel, a csúszka vezérlővel, vagy a léptetővel gurítható jobbra, balra. A Csúszka a fehér Pötty közepének mindenkori magasságát jelzi, a görgetőléc tolókája a kerék helyével együtt mozog, miközben a folyamatállás kijelző a program indításától eltelt időt méri. Megoldás: 1. Hozzunk létre egy új könyvtárat és mentsünk le bele Csuszka.prj néven egy frissen megnyitott üres alkalmazást. 2. Helyezzük el a szükséges vezérlőket a form-on, méretezzük és pozicio- náljuk a megadott ábrának megfelelően. A form-ra egy Timer komponens is felkerül, melynek feladata 5 másodpercenként meghívni az OnTimer eseménykezelő függvényét és abban léptetni a folyamatállás kijelzőt. A Korong és a Potty TShape komponensek, melyeknek Shape jellemzője stEllipse értékű. A Korong Brush (ecset) jellemzőjének Color tulajdon- ságát clRed-re állítottuk. A fekete alap egy Shape = stRectangle értékű TShape komponens.

7 A form a komponensek felrakása után:
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./6. A form a komponensek felrakása után:

8 3. A TrackBar Orientation jellemzőjét trVertical értékre kell átírni.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./7. 3. A TrackBar Orientation jellemzőjét trVertical értékre kell átírni. 4. Szükségünk lesz néhány globális változóra, definiáljuk ezeket a TForm1 *Form sor után: int pozicio,Dx,Dy,dx,dy,R,r; double szog; A pozicio a mozgás paraméterváltozója, intervallumban vehet fel értékeket. Értéke megfelel a Korong által megtett útnak, mivel a Korong R sugara éppen 100. 5. A számításokhoz szükségünk van a sin, cos, acos függvényekre, melyek a math.h headerfájlban vannak deklarálva. Szúrjuk be ezt a Unit1.h include sor alá: #include "math.h” 6. A form BorderStyle értéke bsDialog. Edit1 ReadOnly jellemzője true. 7. A többi felirat (Caption) értelemszerű megadása mellett a form-nál is írjuk át : Görgetőléc, csúszka és folyamatállás kijelző demonstrációs program-ra.

9 __fastcall TForm1::TForm1(TComponent* Owner)
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./8. 8. Az ablakbeli főcím font értékét válasszuk 10-es félkövérre. 9. Nevezzünk át néhány komponenst (az Alap-ot raktuk fel utoljára): Shape1 --> ShapeKorong Shape2 --> ShapePotty Shape3 --> ShapeAlap. 10. Bár ezek nagy részét az Object Inspector-ban is beállíthattuk volna, most a form konstruktorában adjuk meg az inicializáló értékeket: __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Dx= 113; Dy= 120; //eltolás az ablak sarkához képest dx= 201; dy= 208; //piros induló közép-r; Dx+R-r; Dy+R-r R= 100; r= 12; //sugarak UpDown1->Position= 157; UpDown1->Min= 0; UpDown1->Max= 314; // folytatódik Dx, Dy dx,dy

10 ScrollBar1->SetParams(157,1,314);
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./9. ScrollBar1->SetParams(157,1,314); ScrollBar1->SmallChange = 1; // finom lépésköz ScrollBar1->LargeChange = 10; // nagy lépésköz TrackBar1->Position=100; TrackBar1->Min= 0; TrackBar1->Max= 200; // csak kijelzéshez TrackBar1->SelStart= r; TrackBar1->SelEnd= 2*R-r; TrackBar1->PageSize= 4; TrackBar1->Frequency= 4; ProgressBar1->Min= 0; ProgressBar1->Max= 600; // 5 perc (600/10 * 5mp) ProgressBar1->Width= 600; // 2 képpont a rajzon == 1 mp ProgressBar1->Step= 10; // egy lépés ==10 képpont== 5 mp ProgressBar1->Position= 0; Timer1->Interval=5000; //5 mp Timer1->Enabled= true; // a programmal együtt indul }

11 11. A legfontosabb függvény a görgetőléc pozícióváltozására reagáló
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./10. 11. A legfontosabb függvény a görgetőléc pozícióváltozására reagáló OnChange() eseménykezelő: void __fastcall TForm1::ScrollBar1Change(TObject *Sender) { //Görgetőléc pozíció kiolvasása: pozicio= ScrollBar1->Position; Edit1->Text= pozicio; // kiíratás, operator=() működik //Korong pozicionálása: ShapeKorong->Left= Dx+pozicio; //csak csúszik valójában... //Pötty pozicionálása: a Korong négyzetén belül szog= (double)pozicio/R; ShapePotty->Left= dx+pozicio-(int)(R-r)*sin(szog); ShapePotty->Top= dy+(int)(R-r)*cos(szog); TrackBar1->Position= R+(int)(R-r)*cos(szog); // csúszka } A Korong forgását a Potty mozgása érzékelteti. Itt állítjuk a csúszkát is a fehér Potty közepének magasságára.

12 eseménykezelő függvényét:
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./11. 12. A Timer 5 másodpercenként “felüti a fejét” és meghívja az OnTimer() eseménykezelő függvényét: void __fastcall TForm1::Timer1Timer(TObject *Sender) { ProgressBar1->StepIt(); // lépteti a folyamatállás kijelzőt } 13. A Léptető valamelyik gombján kattintva meghívódik a Léptető OnClick() eseménykezelő függvénye, mely a gomb függvényében inkrementálja, vagy dekrementálja a mozgásparaméter pozicio változó értékét: void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button) if (Button == btNext) pozicio++; else pozicio--; ScrollBar1->Position= pozicio; // kiváltja az összes tevékenységet! // mert OnChange eseményt jelent a görgetőlécnél!

13 fel-le egérrel és ennek hatására kell minden másnak működnie: Korong,
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 26./12. 14. Végül azt az esetet programozzuk, amikor a csúszka vezérlőt mozgatjuk fel-le egérrel és ennek hatására kell minden másnak működnie: Korong, Potty, görgetőléc, Edit1 számkijelző. A csúszka (TrackBar) magassági helyzetét átszámítjuk pozício-értékre és ezzel aktivizáljuk a mindentudó OnChange függvényét a görgetőlécnek (ScrollBar1). void __fastcall TForm1::TrackBar1Change(TObject *Sender) {int sv; sv= TrackBar1->Position; if (sv<12) sv=12; if (sv>188) sv=188; szog= acos((double)(sv-R)/(R-r)); pozicio= (int)(R*szog); ScrollBar1->Position=pozicio; // kiváltja az összes tevékenységet } 15. A program gyönyörűen működik, bár még tökéletesíthető. Pl. nem állítottuk le a Timer-t, rábíztuk az alkalmazásra, az Edit1 ablakba nem lehet beírni és ily módon pozicionálni a Korongot, billentyűzettel nem vizsgáltuk a programot,stb.


Letölteni ppt "A C++ programozás Windows környezetben"

Hasonló előadás


Google Hirdetések