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

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

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2020, 12:17   #1
Rock18
Новичок
Джуниор
 
Регистрация: 28.04.2020
Сообщений: 2
По умолчанию Нужно снять защищенный блок, и чтобы программа работала

Задание
Измените обработчик события OnExit так, чтобы при потере фокуса строкой ввода, при условии что не удалось преобразовать строку в число, фокус ввода возвращался бы на строку ввода содержащую ошибочные данные, а курсор устанавливался бы на ошибочный символ (для поиска ошибочного символа используйте функцию Val, также см. методы SelStart и SelLength).

Программа
Код:
unit Unit1;

{$MODE Delphi}

interface

uses
  LCLIntf, LCLType, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Edit1Exit(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

procedure TForm1.Edit1Exit(Sender: TObject);
var ch:Real;
i:Integer;
begin
try
   ch:=StrToFloat(Edit1.Text);
  except
on EConvertError do begin
  edit1.SetFocus;
  Val(Edit1.Text,ch,i);
   Edit1.SelStart := i-1;
  Edit1.SelLength := 1;
end;
  end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
end;

end.
Rock18 вне форума Ответить с цитированием
Старый 29.04.2020, 07:53   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Код:
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
Код:
redit:=sender as Tedit;
ch:=strtofloat(redit.Text);
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 29.04.2020, 15:25   #3
Rock18
Новичок
Джуниор
 
Регистрация: 28.04.2020
Сообщений: 2
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
redit:=sender as Tedit;
ch:=strtofloat(redit.Text);
Эту часть код нужно вставить после цитируемой вами?
Rock18 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как исправить, чтобы программа работала? ShonZelno Паскаль, Turbo Pascal, PascalABC.NET 0 24.03.2020 15:36
нужна программа на си# и чтобы работала на протеусе Владимир_21 Фриланс 2 14.01.2017 02:09
Как чтобы программа работала на другом компьютере Olaf C++ Builder 2 08.04.2010 12:09