Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2012, 15:48   #1
Иварунька
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 12
По умолчанию Проблема с программой Delphi

По сути не понятно почему при нажатии клавиши Enter (#13) В первом едит боксе не происходит переход на второй, а во втором не выполнение процедуры. И есть идей почему не работает синтаксис на ввод типа данных, как бы при вводе букв значение переменной должно приравниваться = 0 but nothing happens))


Код:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender:TObject; var Key:char);
    procedure Edit2KeyPress(Sender:TObject; var Key:char);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}
    procedure Summa;

 var
  cena:real;
  kol:integer;
  summa:real;
  mes:string;

  begin
    cena:=strtofloat(Form1.Edit1.Text);
    kol:=strtoint(Form1.Edit2.Text);
    summa:=cena*kol;
       if summa > 500 then
         begin
         summa:= summa*0.9;
         mes:='Predostavljaetsaj skidos v 10% '+#13;
         end;
   mes:=mes + 'ob6aja stoimostj tovara'+floattostr(summa);
   Form1.Label4.Caption:=mes;

  end;
  

procedure TForm1.Button1Click(Sender: TObject);
begin
summa;
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key:char);
begin
case Key of
  '0'..'9',#8: ;
  #13: Summa;
  else Key:=Chr(0);
end;

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key:char);
begin
case Key of
  '0'..'9',#8: ;
  #13: Form1.Edit2.SetFocus;
  '.',',':begin
      if Key = '.' then
      Key:=',';
     if Pos(',',Edit1.Text)<>0
     then Key:=Chr(0);
  end;
  else Key:=Chr(0);
end;
end;

end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 01.10.2012 в 09:44.
Иварунька вне форума Ответить с цитированием
Старый 01.10.2012, 16:00   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

никакого особенного криминала в вашем коде я не обнаружил.
чуть-чуть "причесал" код, внёс процедуру Summa в методы формы (так лучше и правильнее. да и не надо писать внутри form1.....)
добавил нормальную поддержку десятичной точки (у вас была некорректная).

Но то, что было по сути вопроса (что по Enter не осуществляется переход/вычисление) - я это не подтверждаю - вроде бы всё работает..
example_source.rar
example_exe.rar


p.s. будьте внимательны с проверкой ввода на событии OnKeyPress - это абсолютно не защищает от вставки всякого мусора по Shift-Ins

Последний раз редактировалось Serge_Bliznykov; 01.10.2012 в 16:02.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с программой в Delphi. mixa631 Общие вопросы Delphi 4 06.06.2011 18:12
Проблема с программой kamil83 Помощь студентам 1 25.02.2011 07:58
Проблема с программой Delphi Middle.Cry Помощь студентам 2 24.03.2009 20:12
проблема с программой dima00 Общие вопросы Delphi 2 20.11.2007 13:56
Проблема с программой Dues Помощь студентам 1 19.11.2007 01:46