Фокус в делфи 7.

[email protected] в категроии Информатика, вопрос открыт 31.03.2018 в 19:54

При вводе с клавиатуры, а потом с кнопок фокус с клавиатуры пропадает.
var
Form1: TForm1;
flag:integer=0;
accum:real=0;
oper:integer=0;
decima:integer=0;

implementation

{$R *.dfm}

procedure TForm1.Button7Click(Sender: TObject);
var Btn:TButton;
begin
Btn:=TButton(Sender);
if flag=0 then
begin
Edit1.Text:= IntToStr( Btn.Tag );
flag:=1;
end
else
begin
if (Btn.Tag=0) and (Edit1.Text='0') then
exit;
Edit1.Text:=Edit1.Text + IntToStr( Btn.Tag );
end;
end;

procedure DoOper();
var num:real;
begin
num:=StrToFloat(Form1.Edit1.text); //÷èñëî Г*Г* ГЅГЄГ°Г*Г*ГҐ

case oper of
0:accum:=num;
1:accum:=accum + num;
2:accum:=accum * num;
3:accum:=accum - num;
4:accum:=accum / num;
end;
Form1.Edit1.Text:=FloatToStr(accum);
end;


procedure TForm1.Button16Click(Sender: TObject); //ñëîæ
begin
DoOper;
flag:=0;
oper:=1;
decima:=0;
end;

procedure TForm1.Button4Click(Sender: TObject); //ГіГ¬Г*îæ
begin
DoOper;
flag:=0;
oper:=2;
decima:=0;
end;

procedure PressNum(k:integer);
begin

if flag=0 then
begin
Form1.Edit1.Text:= IntToStr( k );
flag:=1;
end
else
begin
if (k=0) and (Form1.Edit1.Text='0') then
exit;
Form1.Edit1.Text:=Form1.Edit1.Text + IntToStr( k );
end;
end;


procedure TForm1.Button3Click(Sender: TObject); //âû÷èòГ*Г*ГЁГҐ
begin
DoOper;
flag:=0;
oper:=3;
decima:=0;
end;

procedure TForm1.Button2Click(Sender: TObject); //äåëåГ*
begin
DoOper;
flag:=0;
oper:=4;
decima:=0;
end;

procedure TForm1.Button24Click(Sender: TObject);
begin
DoOper;
flag:=0;
oper:=0;
decima:=0;
end;

procedure TForm1.Button18Click(Sender: TObject); //âòîðГ*Гї Г±ГІГҐГЇГҐГ*Гј
var num:real;
begin
num:=StrToFloat(Form1.Edit1.text); //÷èñëî Г*Г* ГЅГЄГ°Г*Г*ГҐ
num:=num*num;
Form1.Edit1.Text:=FloatToStr(num);
flag:=0;
end;

procedure TForm1.Button12Click(Sender: TObject); //îäГ*Г* ..ГІГ*Гї
var num:real;
begin
num:=StrToFloat(Form1.Edit1.text); //÷èñëî Г*Г* ГЅГЄГ°Г*Г*ГҐ
num:=1/num;
Form1.Edit1.Text:=FloatToStr(num);
flag:=0;
end;

procedure TForm1.Button8Click(Sender: TObject); //ìèГ*ГіГ±
var num:real;
begin
num:=StrToFloat(Form1.Edit1.text); //÷èñëî Г*Г* ГЅГЄГ°Г*Г*ГҐ
num:=-1*num;
Form1.Edit1.Text:=FloatToStr(num);
flag:=0;
end;

procedure TForm1.Button17Click(Sender: TObject); //êîðåГ*Гј
var num:real;
begin
num:=StrToFloat(Form1.Edit1.text); //÷èñëî Г*Г* ГЅГЄГ°Г*Г*ГҐ
num:=exp((1/2)*ln(num));
Form1.Edit1.Text:=FloatToStr(num);
flag:=0;
end;


procedure TForm1.Button23Click(Sender: TObject);
var q:integer;
begin
q:=flag;

if decima=0 then
begin
if edit1.text='' then
begin
edit1.text:=edit1.text+'0,';
flag:=1;
decima:=1;
end
else
begin
edit1.text:=edit1.text+',';
flag:=1;
decima:=1;
end;
end;
end;



procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['0'..'9'] then
PressNum( StrToInt(Key) );
if Key = '/' then
Button2.Click;
if Key = '*' then
Button4.Click;
if Key = '-' then
Button3.Click;
if Key = '+' then
Button16.Click;
if Key = #13 then
Button24.Click;
if Key = #8 then
Button1.Click;
if Key = #46 then
Button23.Click;


Key:=#0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Edit1.Text:='0';
end;
end.

0 ответов

Нет результатов.
Оставлять ответы могут только авторизированные пользователи.
Зарегистрируйтесь или  авторизируйтесь на сайте чтобы оставить ответ на вопрос.