Другие языки программирования и технологии
Как в delphi привязать в клавише enter (#13) значение "результат"
procedure TForm1.BitBtn17KeyPress(Sender: TObject; var Key: Char); begin if key=#13 then Что дальше писать если: procedure TForm1.BitBtn17Click(Sender: TObject); begin if edit1.Text<>'' then b:=strtofloat(edit1.text); case d of '+': c:=a+b; '-': c:=a-b; '*': c:=a*b; '/': c:=a/b; end ; edit1.Text:=floattostr(c) end; Мне нужно чтобы при нажатии на ентер выводил результат действия (сложение вычитание и т.д) а то я ввожу например 5+5 нажимаю ентер он выводит 55 а не 10!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
function Calc(S:string):string;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
function TForm1.Calc(S: string): string;
var
ind,i:integer;
sval1,sval2:string;
val1,val2,val:real;
begin
result:= 'Хрен его знает, какае-то ОШИБКА';
s:= trim(s);
if s <> '' then begin
ind:= 0;
for i := 0 to Length(S) do
if s in ['-','+','/','*',':'] then begin
ind:= i;
break;
end;
if ind > 0 then begin
sval1:= trim (copy(s,0,ind-1) );
sval2:= trim (copy(s,ind+1,length(s)));
if (sval1 <> '') and (sval2 <> '') then begin
try
val1:= StrToFloat(sval1);
val2:= StrToFloat(sval2);
case s[ind] of
'-': val:= val1 - val2 ;
'+': val:= val1 + val2;
'/',':': val:= val1 / val2;
'*': val:= val1 * val2;
else
val:= 0;
end;
result:= floattostr(val)
except
end;
end;
end;
end
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var ed:TEdit;
begin
ed := (sender as TEdit);
if key = vk_return then
ed.Text:= Calc(ed.Text);
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
function Calc(S:string):string;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
function TForm1.Calc(S: string): string;
var
ind,i:integer;
sval1,sval2:string;
val1,val2,val:real;
begin
result:= 'Хрен его знает, какае-то ОШИБКА';
s:= trim(s);
if s <> '' then begin
ind:= 0;
for i := 0 to Length(S) do
if s in ['-','+','/','*',':'] then begin
ind:= i;
break;
end;
if ind > 0 then begin
sval1:= trim (copy(s,0,ind-1) );
sval2:= trim (copy(s,ind+1,length(s)));
if (sval1 <> '') and (sval2 <> '') then begin
try
val1:= StrToFloat(sval1);
val2:= StrToFloat(sval2);
case s[ind] of
'-': val:= val1 - val2 ;
'+': val:= val1 + val2;
'/',':': val:= val1 / val2;
'*': val:= val1 * val2;
else
val:= 0;
end;
result:= floattostr(val)
except
end;
end;
end;
end
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var ed:TEdit;
begin
ed := (sender as TEdit);
if key = vk_return then
ed.Text:= Calc(ed.Text);
end;
end.
а зачем мешать кислое с пресным? В кейдауне и описывайте необходимые по энгтеру действия, а бтнклик не трогайте.
if key=#13 then
BitBtn17.click;
BitBtn17.click;
Похожие вопросы
- Согласны с этим - Глубинные причины ненависти к Delphi/Pascal ?
- как нажать enter комбинацией ctr + "" чтобы левой а на клавишу нажимать?
- Нужно заменить клавиши '.' на ',' на Delphi
- Delphi:Прочитал, что если при динамическом создании компонента если указать Name объекта, то в последующем можно ->
- Помогите с Delphi 7 нужно из одной формы в другую отправить значения численные Real!
- Как в Delphi сделать справку?
- Помогите найти ошибку Delphi легкая программка
- Delphi ПОМОГИТЕ ПОЖАЛУЙСТА!
- PascalABC.NET Графика, движение объекта после нажатия клавиши
- Задача на Delphi. Аааа решите пожалуйста :'(