sipteronik Опубликовано 11 мая, 2010 Жалоба Поделиться Опубликовано 11 мая, 2010 Ребят подскажите нубу как сделать...короче делаю калькулятор в делфи, и нужно чтобы в форме (компонент edit) при запуске не вводились символы с клавиатуры, только цифры и знак запятой! Второе, как сделать чтобы знак запятой в калькуляторе, не выводился в форме edit больше одного раза.( procedure TForm1.BitBtn11Click(Sender: TObject);begin if (new = false) then Edit1.Text := Edit1.Text + ',' else Edit1.Text := '0,'; new := false;end;) Третье - как сделать обработчик событий, если человек делит число на ноль..Прошу прощения за тупые вопросы, логика в мозгах напрочь вынесена(Добавлено спустя 6 минут 22 секунды:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Math, jpeg, ExtCtrls, ActnList, XPMan;type TForm1 = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; BitBtn4: TBitBtn; BitBtn5: TBitBtn; BitBtn6: TBitBtn; BitBtn7: TBitBtn; BitBtn8: TBitBtn; BitBtn9: TBitBtn; BitBtn10: TBitBtn; BitBtn11: TBitBtn; BitBtn12: TBitBtn; BitBtn13: TBitBtn; BitBtn14: TBitBtn; BitBtn15: TBitBtn; BitBtn16: TBitBtn; Edit1: TEdit; BitBtn17: TBitBtn; BitBtn27: TBitBtn; Image1: TImage; XPManifest1: TXPManifest; procedure BitBtn29Click(Sender: TObject); procedure BitBtn27Click(Sender: TObject); procedure BitBtn22Click(Sender: TObject); procedure BitBtn23Click(Sender: TObject); procedure BitBtn21Click(Sender: TObject); procedure BitBtn19Click(Sender: TObject); procedure BitBtn20Click(Sender: TObject); procedure BitBtn18Click(Sender: TObject); procedure BitBtn24Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure BitBtn10Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure BitBtn4Click(Sender: TObject); procedure BitBtn5Click(Sender: TObject); procedure BitBtn6Click(Sender: TObject); procedure BitBtn7Click(Sender: TObject); procedure BitBtn8Click(Sender: TObject); procedure BitBtn9Click(Sender: TObject); procedure BitBtn11Click(Sender: TObject); procedure BitBtn13Click(Sender: TObject); procedure BitBtn14Click(Sender: TObject); procedure BitBtn15Click(Sender: TObject); procedure BitBtn16Click(Sender: TObject); procedure BitBtn25Click(Sender: TObject); procedure BitBtn28Click(Sender: TObject); procedure BitBtn12Click(Sender: TObject); procedure BitBtn17Click(Sender: TObject); procedure BitBtn26Click(Sender: TObject); procedure BitBtn31Click(Sender: TObject); procedure BitBtn32Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; x: real; memory: real; z: real; deistv: byte; new: boolean;implementation{$R *.dfm}procedure figure(s: string);begin if (new = true) or (Form1.Edit1.Text = '0') then Form1.Edit1.Text := s else Form1.Edit1.Text := Form1.Edit1.Text + s; new := false;end;procedure TForm1.BitBtn29Click(Sender: TObject);begin Close;end;procedure TForm1.BitBtn27Click(Sender: TObject);begin Edit1.Text := '0';end;procedure TForm1.BitBtn22Click(Sender: TObject);begin Edit1.Text := FloatToStr(ArcSin(StrToFloat(Edit1.Text))); new := true;end;procedure TForm1.BitBtn23Click(Sender: TObject);begin Edit1.Text := FloatToStr(ArcCos(StrToFloat(Edit1.Text))); new := true;end;procedure TForm1.BitBtn21Click(Sender: TObject);begin Edit1.Text := FloatToStr(ArcTan(StrToFloat(Edit1.Text))); new := true;end;procedure TForm1.BitBtn19Click(Sender: TObject);begin Edit1.Text := FloatToStr(Sin(StrToFloat(Edit1.Text))); new := true;end;procedure TForm1.BitBtn20Click(Sender: TObject);begin Edit1.Text := FloatToStr(Cos(StrToFloat(Edit1.Text))); new := true;end;procedure TForm1.BitBtn18Click(Sender: TObject);begin Edit1.Text := FloatToStr(Tan(StrToFloat(Edit1.Text))); new := true;end;procedure TForm1.BitBtn24Click(Sender: TObject);begin memory := StrToFloat(Edit1.Text); new := true;end;procedure TForm1.FormCreate(Sender: TObject);begin new := false; deistv := 0; memory := 0;end;procedure TForm1.BitBtn10Click(Sender: TObject);begin figure('0');end;procedure TForm1.BitBtn1Click(Sender: TObject);begin figure('1');end;procedure TForm1.BitBtn2Click(Sender: TObject);begin figure('2');end;procedure TForm1.BitBtn3Click(Sender: TObject);begin figure('3');end;procedure TForm1.BitBtn4Click(Sender: TObject);begin figure('4');end;procedure TForm1.BitBtn5Click(Sender: TObject);begin figure('5');end;procedure TForm1.BitBtn6Click(Sender: TObject);begin figure('6');end;procedure TForm1.BitBtn7Click(Sender: TObject);begin figure('7');end;procedure TForm1.BitBtn8Click(Sender: TObject);begin figure('8');end;procedure TForm1.BitBtn9Click(Sender: TObject);begin figure('9');end;procedure TForm1.BitBtn11Click(Sender: TObject);begin if (new = false) then Edit1.Text := Edit1.Text + ',' else Edit1.Text := '0,'; new := false;end;procedure TForm1.BitBtn13Click(Sender: TObject);begin new := true; deistv := 1; z := StrToFloat(Edit1.Text);end;procedure TForm1.BitBtn14Click(Sender: TObject);begin new := true; deistv := 2; z := StrToFloat(Edit1.Text);end;procedure TForm1.BitBtn15Click(Sender: TObject);begin new := true; deistv := 3; z := StrToFloat(Edit1.Text);end;procedure TForm1.BitBtn16Click(Sender: TObject);begin new := true; deistv := 4; z := StrToFloat(Edit1.Text);end;procedure TForm1.BitBtn25Click(Sender: TObject);begin new := true; deistv := 5; z := StrToFloat(Edit1.Text);end;procedure TForm1.BitBtn28Click(Sender: TObject);begin Edit1.Text := FloatToStr(memory);end;procedure TForm1.BitBtn12Click(Sender: TObject);begin x := StrToFloat(Edit1.Text); case deistv of 1: Edit1.Text := FloatToStr(z + x); 2: Edit1.Text := FloatToStr(z - x); 3: Edit1.Text := FloatToStr(z * x); 4: Edit1.Text := FloatToStr(z / x); 5: Edit1.Text := FloatToStr(Power(z, x)); end; new := true;end;procedure TForm1.BitBtn17Click(Sender: TObject);begin Edit1.Text := FloatToStr(Sqrt(StrToFloat(Edit1.Text))); new := true;end;procedure TForm1.BitBtn26Click(Sender: TObject);begin Edit1.Text := FloatToStr(1 / (StrToFloat(Edit1.Text))); new := true;end;procedure TForm1.BitBtn31Click(Sender: TObject);begin Edit1.Text := FloatToStr(ArcCot(StrToFloat(Edit1.Text))); new := true;end;procedure TForm1.BitBtn32Click(Sender: TObject);begin Edit1.Text := FloatToStr(Cot(StrToFloat(Edit1.Text))); new := true;end;end. Ссылка на комментарий
JSTQ Опубликовано 11 мая, 2010 Жалоба Поделиться Опубликовано 11 мая, 2010 Событие OnKeypressif ((Key >= '0') and (Key <= '9')) then begin end else if (Key='.') then begin end else Key := ' ';Что делать с пробелами - незнаю, если его убрать будет ругаться на несовместимость типов.Оригинал на C++void __fastcall TForm1::LabeledEdit2KeyPress(TObject *Sender, char &Key){ if ((Key >= '0') && (Key <= '9')) {} else if (Key == VK_RETURN) {Form1->Button1Click(Form1);} else if (Key == VK_BACK) {} else if (Key == VK_ESCAPE) {Form1->Button2Click(Form1);} else Key = 0;}Деление на ноль - нашел знак деления, записал число после знака в переменную, если число равно нулю - вывод ошибки и т.д. Ссылка на комментарий
sipteronik Опубликовано 11 мая, 2010 Автор Жалоба Поделиться Опубликовано 11 мая, 2010 Так, сейчас буду думать!) Спасибо за инфу! Я правда не все понял, но сейчас постараюсь разобраться...с делением на ноль я сделаю, а вот ввод символов с клавиатуры как... Ссылка на комментарий
Lucky Опубликовано 11 мая, 2010 Жалоба Поделиться Опубликовано 11 мая, 2010 Для проверки вхождения символа в строку используй функцию Pos.Присвоение Key нулевого символа (Key := #0) оставляет строку Edit'а без изменений.Кстати, для определения символа-разделителя целой и дробной частей используй константу DecimalSeparator (модуль SysUtils). Ссылка на комментарий
sipteronik Опубликовано 11 мая, 2010 Автор Жалоба Поделиться Опубликовано 11 мая, 2010 LuckyХорошо, спасибо! Ссылка на комментарий
sipteronik Опубликовано 12 мая, 2010 Автор Жалоба Поделиться Опубликовано 12 мая, 2010 Уря все сделал, прога нормально работает! Всем спс! Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти