1. Kad otvorish novi projekat u Delphi-u, pritisni Ctrl + F12 i otvori unit koji se zove
Project1. Tamo imash:
Code:
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
Vidish ovo
Application.CreateForm(TForm1, Form1) ? Kad se izvrsi ova linija koda, program kreira formu
Form1. Ti samo treba da izbacis to, tj da izbrises tu liniju i da je onda dinamicki kreiras, po potrebi. Recimo, kad korisnik klikne na neko dugme, uzmimo za primer
Button1, a ti hoces da ti se otvori drugi prozor,
Form2, napishesh ovo:
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
Form2.Show;
end;
Ovaj kod ce kreirati
Form2 i prikazati ga. Kad zelis da zatvoris taj prozor, tj formu, a pritom i oslobodis memoriju koja je alocirana za njene potrebe, samo u OnClose event te forme stavi
Action := caFREE. Dakle:
Code:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFREE;
end;
I to je to, kad ovako kreiras/oslobadjas forme, tvoj program zauzima manje memorije sto je i glavna prednost ovoga. Imaj u vidu da kad oslobodis formu, oslobadjaju se i objekti koji pripadaju toj formi, tako da ce podaci koje je korisnik ukucao u recimo EditBox-ove biti izbrisani.
2. Nije teshko da se napravi sistem dve aplikacije. Neka ti prva glavna kreira jedan mutex:
Code:
CreateMutex(nil, FALSE, 'mutex1');
A druga aplikacija neka u nekom infinite-loopu ili threadu proverava da li ovaj mutex postoji:
Code:
var
mutexhnd : THandle;
begin
repeat
mutexhnd := OpenMutex(MUTEX_ALL_ACCESS, FALSE, 'mutex1');
If mutexhnd = 0 Then
Begin
// mutex ne postoji, znaci da i prva aplikacija nije aktivna, pa je trebamo izvrsiti
End
else
ReleaseMutex(mutexhnd);
Sleep(200);
until 1 <> 1;
Ovo mozes i da uradis za drugu aplikaciju, tako da ni nju korisnik ne moze da ubije. Uostalom vidi sta kaze
MSDN o mutexima.
3. Pojasni malo pitanje
poz
[Ovu poruku je menjao reiser dana 01.07.2005. u 01:02 GMT+1]
[Ovu poruku je menjao reiser dana 01.07.2005. u 01:07 GMT+1]