Есть телефонный справочник, в котором можно добавить и сохранить в файл нового пользователя. Чтобы можно было открыть файл редактировать эти данные есть отдельная кнопка, которая его и открывает. Надо сделать чтобы после нажатия на нее выдавался запрос для ввода пароля, и если пароль верный файл откроется для редактирования, а если нет, то нет.
Помогите с кодом пожалуйста. И вот сама прога.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,ShellAPI;
type
TForm1 = class(TForm)
Memo1: TMemo;
Panel1: TPanel;
lbl1: TLabel;
edt1: TEdit;
lbl2: TLabel;
edt2: TEdit;
lbl3: TLabel;
edt3: TEdit;
Button1: TButton;
Label1: TLabel;
Edit1: TEdit;
Button2: TButton;
CheckBox1: TCheckBox;
Label2: TLabel;
Button3: TButton;
Button4: TButton;
memo2: TMemo;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
Button5: TButton;
procedure CheckBox1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
Way='C:\baseTel.xls';// место хранения файла с данными
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
// если файла еще нет, то создаем. Если есть, то загружаем его
if not FileExists(way) then Memo2.Lines.SaveToFile(Way)
else Memo2.Lines.LoadFromFile(Way);
Panel1.Hide; // скрываем панель ввода новых данный
Memo2.Hide; // скрываем memo2 т.к. он нужен только как посредник
Memo1.WordWrap:=False;
Memo2.WordWrap:=False;
end;
// показать/спрятать панель для ввода новой записи
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then Panel1.Show
else
Panel1.Hide;
Memo1.Clear;
end;
// сохранение новой записи
procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
begin
str:='';
str:=Edt1.Text+'#'+Edt2.Text+'#'+Edt3.Text;
if str<>'##' then // т.е. хоть одно из Edit не пустой
begin
Memo2.Lines.Add(str);
Memo2.Lines.SaveToFile(way);// загружаем в Memo2- посредник данные, с учетом новых изменений
Memo1.Lines.Add(Edt1.Text);
Memo1.Lines.Add(Edt2.Text);
Memo1.Lines.Add(Edt3.Text);
Memo1.Lines.Add('______________________________');
Edt1.Text:=''; Edt2.Text:=''; Edt3.Text:='';
end;
end;
// поиск
procedure TForm1.Button2Click(Sender: TObject);
var
i:Integer;
str,strALC,str1,str2,str3:string;
begin
Memo1.Clear;
Edit1.Text:=AnsiLowerCase(Trim(Edit1.Text)); //превращаем все буквы строчные, что бы регистр не мешал поиску
for i:=0 to Memo2.Lines.Count-1 do
begin
strALC:= AnsiLowerCase(Memo2.Lines.Strings[i]); //превращаем все буквы строчные, что бы регистр не мешал поиску
if Pos(Edit1.Text,strALC)<> 0 then // если есть совпадение
begin
// разбиваем строку на составляющие
str:=Memo2.Lines.Strings[i]; // реальная строка из файла. Без превращения букв в строчные
str1:=Copy(str,1,Pos('#',str)-1); Delete(str,1,Pos('#',str));
str2:=Copy(str,1,Pos('#',str)-1); Delete(str,1,Pos('#',str));
str3:=str;
if ((CheckBox2.Checked) and (Pos(Edit1.Text,AnsiLowerCase(str1))<>0)) or
((CheckBox3.Checked) and (Pos(Edit1.Text,AnsiLowerCase(str2))<>0)) or
((CheckBox4.Checked) and (Pos(Edit1.Text,AnsiLowerCase(str3))<>0)) then
begin
Memo1.Lines.Add(str1);
Memo1.Lines.Add(str2);
Memo1.Lines.Add(str3);
Memo1.Lines.Add('______________________________________');
end;
end;
end;
end;
// показать все записи
procedure TForm1.Button3Click(Sender: TObject);
var
i:Integer;
str,str1,str2,str3:string;
begin
Memo1.Clear;
for i:=0 to Memo2.Lines.Count-1 do
begin
str:=Memo2.Lines.Strings[i];
str1:=Copy(str,1,Pos('#',str)-1); Delete(str,1,Pos('#',str));
str2:=Copy(str,1,Pos('#',str)-1); Delete(str,1,Pos('#',str));
str3:=str;
Memo1.Lines.Add(str1);
Memo1.Lines.Add(str2);
Memo1.Lines.Add(str3);
Memo1.Lines.Add('______________________________________');
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
ShowMessage(' Внимание!'+#10#13+'Не повредите базу');
ShellExecute (Handle, nil, Way, nil,nil, SW_RESTORE); //открыть документ
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Memo1.Clear;
end;
end.