Delphi 2.0
2. óra
Menü
Feladat: Készítsünk egy alkalmazást mely adott menüpontból adott form-ot hív meg. Legyen kilépés menüpontja is.
Megoldás: File/ New Application menü segítségével egy új alkalmazás kérése. Az ablakra kiteszünk a Standard palettáról egy MainMenu főmenü komponenst (futás közben ez a komponens nem látszik, ezért bárhova kitehető). Utána kattintsunk rá duplán, és egy vizuális menüszerkesztőt kapunk, amin kialakíthatjuk a kívánt menüszerkezetet az almenükkel együtt. A menüpontok nevei mindig a Caption részbe íródnak. Építsük fel a következőképpen:
Ablakok Kilépés
Gombvadászat
Üzenetablak
A Gombvadászat OnClick eseményéhez írjuk be következőt:
(Ennek hatására hívja majd meg a gombvadászat form-ot modálisan.)
procedure TForm1.Gombvadszat1Click(Sender: TObject);
begin
frmgombvadasz.Showmodal;
end;
Az üzenetablak OnClick eseményéhez írjuk be következőt:
(Meg fogja jeleníteni a szabványos üzenetablakot az aposztrófok közzé beírt üzenettel.)
procedure TForm1.zenetablak2Click(Sender: TObject);
begin
ShowMessage('Ilyen egy üzenetablak!');
end;
A Kilépés OnClick eseményéhez írjuk be következőt:
(Ki is kell tudni lépni az alkalmazásból, tehát be kell csukni az ablakot.)
procedure TForm1.Kilps1Click(Sender: TObject);
begin
Close;
end;
Most már bezárhatjuk a Vizuális menükészítőt.
Adjunk valamilyen nevet a Menüt tartalmazó formunknak és a Caption részhez is írjunk valamilyen feliratszöveget.
A File/New Form menüponttal kérjünk egy új ablakot, amin a gombvadászatot elkészíthetjük. Nevezzük el olyan néven, amilyen néven hivatkoztunk rá az adott menüpont OnClick eseményében (frmgombvadasz). Ennek a formnak a feladata az lesz, hogy egy gomb ugráljon rajta véletlenszerű helyekre addig, amíg el nem kapjuk (sikeresen rá nem kattintunk). Újbóli kattintásra induljon el megint.
Megoldás: Tegyünk az űrlapra egy bitképet is tartalmazó gombot az additional palettáról (BitBtn). Ahhoz, hogy bizonyos időközönként történjen valami, szükségünk van System palettáról egy Timer komponensre. Bárhova tehetjük az ürlapon, mert futás közben ez a komponens sem látszik.
A tulajdonságaik a következők legyenek:
Komponens | Name | Jellemző | Érték |
BitBtn1 | Gomb | Caption | Kapj el |
Glyph | C:\PogramFiles\Borland\DELPHI2.0\IMAGES\BUTTONS\FIND.BMP (a kép elérési útvonala, ami rajta lesz. Ki kell választani a 3 pontot és load) |
||
Timer1 | Timer | Interval | 100 (egy tizedmásodperc) |
Enabled | True (jár az óra") |
Az OnTimer esemény tizedmásodpercenként következik be. Ilyenkor kell a gombot +-10 pixellel elmozdítani X és Y irányban.
procedure Tfrmgombvadasz.TimerTimer(Sender: TObject);
var rx, ry:integer;
begin
rx:=10*(1-random(3)); {rx =-10, 0 vagy 10}
ry:=10*(1-random(3));
if (gomb.left + rx > 0) and (gomb.left + rx + gomb.width < ClientWidth) Then
{ha nem lóg le az űrlap bal ill. jobb oldaláról}
gomb.left:=gomb.left + rx;
If (gomb.Top + ry > 0) and (gomb.top + ry + gomb.Height < ClientHeight) Then
{ha nem lép le az űrlap tetején ill. alján}
gomb.top:=gomb.top + ry;
end;
A ClientWidth és a ClientHeight a Width és a Height jellemzőtől eltérően az ablaknak az a mérete, ami nem tartalmazza a címsort, keretet, és a gördítősávokat.
A véletlenszámgenerátort a program elején kell inicializálnunk, hogy valóban véletlenszámokat kapjunk. Ezért a formunk OnCreate eseményébe be kell írnunk a következőt:
procedure Tfrmgombvadasz.FormCreate(Sender: TObject);
begin
Randomize;
end;
Ha rákattintunk a gombra, akkor 2 eset lehetséges:
ha mozgott, akkor meg kell állnia,
ha állt, akkor el kell indulnia.
Ezt a hatást az időzítő ki-be kapcsolásával tudjuk elérni. Ha az időzítőt kikapcsoljuk, akkor az OnTimer esemény nem következik be. Tehát a gomb OnClick eseményébe a következo sorok beírása szükséges:
procedure Tfrmgombvadasz.gombClick(Sender: TObject);
begin
Timer.enabled:=Not Timer.enabled; {ha true volt, akkor false lesz, ha false volt, akkor true lesz}
If Timer.enabled=true then
gomb.caption:='Kapj el'
else
gomb.caption:='Indíts el';
end;
A program indítása a menüs ablakból történjen, hiszen ez fogja meghívni a többi ablakot.