Константин Артурыч Опубликовано 27 сентября, 2010 Опубликовано 27 сентября, 2010 Случилась необходимость написать програмулину на сием прекрасном языке. Возникли вопросы, на которые даже как оказывается препод не знает ответов Или не хочет их рассказывать. 1) Не могу запретить клик правой кнопкой мыши. Оставил только ввод цифр через массив, а через ПКМ-вставить , можно ввести текст В итоге ошибка. 2) Внутри есть код аля b:=strtofloat .Проблема заключается в том что если значения не заданы, и производиться расчет програмулина вылетает. Опять как же ответ препода: можно вместо strtofloat юзать VAL ( ой забыл, сильно не пинайте , вроде его) . Как это переменить не представляю...
Ta2i4 Опубликовано 28 сентября, 2010 Опубликовано 28 сентября, 2010 1) Не могу запретить клик правой кнопкой мыши. Оставил только ввод цифр через массив, а через ПКМ-вставить , можно ввести текст mad.gif В итоге ошибка. А что, если попробовать так? procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RIGHT then Key := 0; end; По идее - отлавливается нажатие правой клавиши мыши, и присваивается результат 0, то есть будто на ПКМ и не нажимали. 2) Внутри есть код аля b:=strtofloat .Проблема заключается в том что если значения не заданы, и производиться расчет програмулина вылетает. А где пользователь задаёт значения? Откуда они берутся? Хотя можно сделать так: try {здесь используем strtofloat} except {здесь как-нибудь обрабатываем ошибку. Например, так (см.ниже):} Showmessage('Вероятно, вы неправильно задали значения.' + #13#10 + 'В результате при рассчётах произошла ошибка.'); end;
Константин Артурыч Опубликовано 28 сентября, 2010 Автор Опубликовано 28 сентября, 2010 А что, если попробовать так? procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RIGHT then Key := 0; end; По идее - отлавливается нажатие правой клавиши мыши, и присваивается результат 0, то есть будто на ПКМ и не нажимали. А где пользователь задаёт значения? Откуда они берутся? Хотя можно сделать так: try {здесь используем strtofloat} except {здесь как-нибудь обрабатываем ошибку. Например, так (см.ниже):} Showmessage('Вероятно, вы неправильно задали значения.' + #13#10 + 'В результате при рассчётах произошла ошибка.'); end; 1) Я так примерно в голове и представляю ) Это параметры OnMouseDown? 2) Пользователь задает значения в Edit, берет из головы. Прога аналогична калькулятору
AZЪ Опубликовано 28 сентября, 2010 Опубликовано 28 сентября, 2010 Константин Артурыч, 1) В обработчик OnMouseDown компонента попробовать написать такой код: if button=VK_RIGHT then button:=#0 2) В обработчик события OnKeyPress компонента вписать вот это: if not (key in ['0'..'9']) then key:=#0 Если нужны еще и минусы, запятые или точки, то в квадратные скобки добавить эти символы в кавычках через запятую, например ['-', '.', '0'..'9'] Либо попробуйте как Ta2i4 посоветовал.
Константин Артурыч Опубликовано 28 сентября, 2010 Автор Опубликовано 28 сентября, 2010 Константин Артурыч,1) В обработчик OnMouseDown компонента попробовать написать такой код: if button=VK_RIGHT then button:=#0 2) В обработчик события OnKeyPress компонента вписать вот это: if not (key in ['0'..'9']) then key:=#0 Если нужны еще и минусы, запятые или точки, то в квадратные скобки добавить эти символы в кавычках через запятую, например ['-', '.', '0'..'9'] Либо попробуйте как Ta2i4 посоветовал. Второе давно уже прикручено А вот с первым чет ругается на then if button=VK_RIGHT then[b]|[/b] button:=#0 try ... except всегда и везде. А теперь просьба как бухгалтеру объяснить
AZЪ Опубликовано 28 сентября, 2010 Опубликовано 28 сентября, 2010 А вот с первым чет ругается на thenкак именно ругается?
Umnik Опубликовано 28 сентября, 2010 Опубликовано 28 сентября, 2010 А теперь просьба как бухгалтеру объяснить laugh.gif Как бухгалтер бухгалтеру - когда программа взаимодействует с пользователем, нужно всегда предусматривать исключения на все, что может быть хоть как-то с этим пользователем связано. Конструкция try ... .... ... except вместо тупого вываливания ошибки даст возможность исправить проблему. Когда я делал приложение с использованием TMaskEdit, то не лочил ПКМ, а просто проверял, что ввел пользователь. Если это была фигня, то сообщал, что вводить можно только вот это.
arc Опубликовано 28 сентября, 2010 Опубликовано 28 сентября, 2010 А теперь просьба как бухгалтеру объяснить Желательно для начала прочитать об обработке исключений try ... except -гугля в помошь .На русском языке есть море описаний и примеры программ. А по поводу Проблема заключается в том что если значения не заданы Так задай эти значения по умолчанию и будет тебе счастье .В Edit.text установи значения по умолчанию.
Константин Артурыч Опубликовано 6 октября, 2010 Автор Опубликовано 6 октября, 2010 Задачу решил, но немного по другому. Значения onmousedown и up edit6.Text:='';
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти