unit GestoreDelForm;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls,parole;
type
{ TForm1 }
TForm1 = class(TForm)
ButtonGenera: TButton;
CheckBoxCaratteriDifferenti: TCheckBox;
CheckBoxPunteggiatura: TCheckBox;
CheckBoxInteri: TCheckBox;
CheckBoxMaiuscoleMinuscole: TCheckBox;
CheckBoxLettere: TCheckBox;
ComboBoxNumeroParole: TComboBox;
Label1: TLabel;
LabelOpzioni: TLabel;
LabelEtichetta: TLabel;
LabelErrore: TLabel;
LabeledEditCaratteri: TLabeledEdit;
MemoGenerati: TMemo;
procedure ButtonGeneraClick(Sender: TObject);
procedure CheckBoxCaratteriDifferentiChange(Sender: TObject);
procedure CheckBoxInteriChange(Sender: TObject);
procedure CheckBoxLettereChange(Sender: TObject);
procedure CheckBoxMaiuscoleMinuscoleChange(Sender: TObject);
procedure CheckBoxPunteggiaturaChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure LabeledEditCaratteriChange(Sender: TObject);
private
{ private declarations }
procedure selezionaOpzioni;
procedure caricaElenco;
public
{ public declarations }
generazioni:Chiave;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption:='Generatore di password';
LabelErrore.Caption:='';
LabelErrore.Font.Color:=clRed;
MemoGenerati.Lines.Clear;
LabeledEditCaratteri.Caption:='8';
ComboBoxNumeroParole.ReadOnly:=true;
CheckBoxLettere.Checked:=True;
caricaElenco;
generazioni:=Chiave.crea(8);
MemoGenerati.ReadOnly:=True;
end;
procedure TForm1.CheckBoxMaiuscoleMinuscoleChange(Sender: TObject);
begin
selezionaOpzioni;
end;
procedure TForm1.CheckBoxPunteggiaturaChange(Sender: TObject);
begin
selezionaOpzioni;
end;
procedure TForm1.CheckBoxInteriChange(Sender: TObject);
begin
selezionaOpzioni;
end;
procedure TForm1.CheckBoxLettereChange(Sender: TObject);
begin
selezionaOpzioni;
end;
procedure TForm1.CheckBoxCaratteriDifferentiChange(Sender: TObject);
begin
selezionaOpzioni;
end;
procedure TForm1.ButtonGeneraClick(Sender: TObject);
var quantita,i:integer;
begin
quantita:=StrToIntDef(LabeledEditCaratteri.Text, 0);
if (quantita>=4) and (quantita<=32) then
begin
generazioni.estensione:=quantita;
generazioni.lettereMinuscole:=CheckBoxLettere.Checked;
generazioni.lettereMaiuscole:=CheckBoxMaiuscoleMinuscole.Checked;
generazioni.alfanumerico:=CheckBoxInteri.Checked;
generazioni.punteggiatura:=CheckBoxPunteggiatura.Checked;
generazioni.doppi:=not CheckBoxCaratteriDifferenti.Checked;
i:=0;
MemoGenerati.Lines.Clear;
while i<StrToInt(ComboBoxNumeroParole.Text) do
begin
MemoGenerati.Lines.Add(format('%2d> %s',[i+1,generazioni.singolo]));
i:=i+1;
end;
end;
end;
procedure TForm1.LabeledEditCaratteriChange(Sender: TObject);
var messaggio:string;
numero:integer;
begin
messaggio:='';
try
numero:=StrToInt(LabeledEditCaratteri.Text);
except
On E : EConvertError do
messaggio:='Sono ammessi soltanto'+char(13)+char(10)+'i numeri interi';
end;
if length(messaggio)=0 then
begin
if (numero<4) or (numero>32) then
messaggio:='I limiti ammessi vanno'+char(13)+char(10)+'da 4 a 32 caratteri';
end;
LabelErrore.Caption:=messaggio;
end;
procedure TForm1.selezionaOpzioni;
var attivi:boolean;
begin
attivi:=CheckBoxInteri.Checked or CheckBoxPunteggiatura.Checked;
if attivi then
CheckBoxLettere.Enabled:=True
else
begin
CheckBoxLettere.Checked:=True;
CheckBoxLettere.Enabled:=False;
end;
if CheckBoxMaiuscoleMinuscole.Checked then CheckBoxLettere.Checked:=True;
end;
procedure TForm1.caricaElenco;
var i:integer;
begin
for i:=1 to 50 do
begin
ComboBoxNumeroParole.Items.Add(IntToStr(i));
end;
ComboBoxNumeroParole.Text:=ComboBoxNumeroParole.Items[0];
end;
end.