HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Apró tippek


Példaprogram letöltése

3995 bájt

Cikkünkben apróságokkal ismerkedhetünk meg, melyek megvalósítása ugyan csak néhány sor kódolást igényel, azonban hasznos lehet bizonyos esetekben. Az első esetben megvizsgáljuk, hogy miként jeleníthetünk meg különböző felbukkanó menüket a PageControl komponens különböző füleire kattintva. A másik megoldás akkor jöhet jól, ha olyan alkalmazást készítünk, melyet demo-nak szánunk, vagyis azt szeretnénk elérni, hogy a futtatás után ne legyen használható.

PageControl menük
A megoldás lényege, hogy a PageControl komponens két fülének mindegyikéhez egy-egy PopupMenu komponenst rendelünk és jelenítünk meg abban az esetben, ha a fülek valamelyikére kattintunk az egér jobb gombjával. Ennek érdekében elkészítettünk egy DoPopup metódust, melynek bemenő paraméterei a kurzor koordinátái kattintáskor.
Szükségünk van egy TTCHitTestInfo típusú objektumra.
hi: TTCHitTestInfo;
Az objektumra azért van szükség, hogy le tudjuk ellenőrizni a kattintás alatti fül objektumát, mivel a Perform metódus ezt az objektumot várja paraméterként.
hi.pt.x := X;
hi.pt.y := Y;
hi.flags := 0;
TabIndex := PageControl1.Perform(TCM_HITTEST, 0, longint(@hi));
Amennyiben a kapott index nem -1, vagyis a komponens egyik füle fölött történt a kattintás, akkor meghatározzuk azt a koordinátát, melyben majd meg kell jeleníteni az adott menüt.
p.x := PageControl1.Left + X;
p.y := PageControl1.Top + y;
p := ClientToScreen(p);
Ha ez is megvan, akkor meg is jeleníthetjük az aktuálisat.
case TabIndex of
  0: PopupMenu2.Popup(p.x, p.Y);
  1: PopupMenu1.Popup(p.x, p.Y);
end;
A metódust természetesen akkor hívjuk meg, ha az egér jobb gombjával kattintottunk a fülek valamelyikén.
if Button = mbRight then begin
  DoPopup(X, Y);
end;
Demo alkalmazás készítése egyszerűen
Demo alkalmazás készítésekor vagy olyan feltételekkel futtatható az alkalmazás, hogy a funkciók csak korlátozottan használhatók, vagy egy bizonyos idő után az alkalmazás nem használható.
Az utóbbi esetet megvalósíthatjuk egy időkorláttal, vagy egyszerűen úgy, hogy eltüntetjük az alkalmazás futtatható állományt. Ezt a demo alkalmazás futásának befejezésekor végezzük el.
A megoldásban egy batch állományt generálunk ideiglenesen, mely elvégzi az EXE állomány törlését, majd magát is törli. A DeleteExecutable metódusban a következőképpen járunk el:
Létrehozunk a projekt futtatható állományával azonos néven egy .BAT kiterjesztésű állományt.
assignfile(f,changefileext(paramstr(0),'.bat'));
rewrite(f);
Ezt követően egy címke után kiírjuk a szükséges utasításokat. Az első utasítás, hogy az ERASE parancssori utasítással töröljük az EXE állományt.
writeln(f,format('Erase "%s"',[paramstr(0)]));
Ekkor a következő szintaxis szerint járunk el:
ERASE <törlendő állomány elérési útja>
Majd elhelyezünk egy olyan sort is, mely újra megvizsgálja az EXE állományt, és ha létezik, akkor az :1 címkére ugrik, és a művelet kezdődik elölről.
writeln(f,format('If exist "%s" Goto 1',[paramstr(0)]));
Végül töröljük a parancsállományt is.
writeln(f,format('Erase "%s"',[changefileext(paramstr(0),'.bat')]));
closefile(f);
A létrehozás után a batch állományt le is futtatjuk a WINEXEC metódussal.
winexec(PChar(changefileext(paramstr(0),'.bat')),sw_hide);
halt;
A művelet eredményeképpen a két állomány visszaállíthatatlan módon törlődik.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 738. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |