Ciao a tutti,

prima di avviare (creare) il mio progetto voglio verificare se il programma è stato attivato tramite una certa chiave di attivazione. quindi procedo in questo modo:

codice:
var
  FrmIdentificazione: TFrmIdentificazione;
  FrmAttivazione: TFrmAttivazione;
  Attivato:=True;
begin
  Application.Initialize;
  Application.Title := 'MiaApplicazione';
 
    try
      FrmAttivazione:= TFrmAttivazione.Create(nil);
      Attivato:=False;
      if FrmAttivazione.ShowModal  = mrOk then
        Attivato:=True;
     finally
      FrmAttivazione.Free;
     end;

  Application.CreateForm(TDM, DM);
  if Attivato then
   begin
     Application.CreateForm(TFrmMain, FrmMain);
     Application.Run;
   end
  else
    DM.Free;
nel FrmAttivazione nell'evento onshow ho scritto questo codice:

codice:
procedure TFrmAttivazione.FormShow(Sender: TObject);
begin
   cxTextEditCodice.Text:=GetVolumeId('c');
   Ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Attivazione.ini');
   try
    cxTextEditChiave.Text:=ini.ReadString('Attivazione','Chiave','');
   finally
    ini.Free;
   end;

  if CalcolaChiave=cxTextEditChiave.Text then
     ModalResult := mrOk;
end;
pur eseguendo il comando ModalResult := mrOk; la FrmAttivazione non viene chiusa.

perfavore, mi dite dove sbaglio????

forse non devo usare l'evento onshow???

sto sbattendo la testa già da un pò..

grazie