Компоненты для арифметический действий находятся на вкладке "Логика" панели компонентов. Пока что нам понадобится только самый первый компонент - Math. Он способен выполнять множество математический операций.
Но сначала мы сделаем интерфейс программы. Конечно, нам нужно будет поле (даже целых три) и кнопки.
В первое поле мы вводим первое число, во второе - второе. Ну а при нажатии кнопки операции в третьем поле появляется результат. А разделитель между вторым и третьим полем - это обычныя панель, только сильно суженная.
У формы изменён заголовок (параметр Cation) и параметр BorderStyle.
Конечно, пока программ ничего не считает, но мы её сейчас этому "научим".
Вот теперь программа уже считает. У компонента Math есть параметр OpType, который и задаёт арифметическую операцию. Параметры Op1 и Op2 - это операнды, т.е. числа для операций. Но мы их берём из верхних точек. А ResultType определяет, может ли число быть дробным (Real - может, integer - только целое). Кстати, у нас и в поля можно ввести только числа (параметр DataType поля ввода).
Теперь следует сказать о соединениях компонентов. Вы наверняка заметили, что первое и второе поля несколько раз поставляют свои данные: на каждую из 4 операций. А свойство, содержащее текст, у каждого поля только одно. Значит, нужен разветвитель, и он как раз есть. Это тоже компонент, только он практически незаметен из-за своих малых размеров.
Каждый разветвитель типа "данные-свойства" имеет 4 точки: одну верхнюю и три нижних. Верхних точек достаточно: любая точка данных может брать информацию только из одного свойства. А вот любая точка свойства может передавать информацию любому числу точек данных. Конечно, три точки для соединения с точками данных - это маловато, но зато удобно и меньше заметно. Всегда можно поставить ещё несколько таких компонентов.
Чтобы поставить такой компонент, нужно подвести связь от точки данных к линии связи между точкой данных и свойств. Потренируйтесь делать это.
Мы рассмотрели простейшие математические операции: сложение, вычитание. деление и умножение. В компоненте Math их значительно больше. Если вам интересно - поэкспериментируйте. А я сейчас расскажу и более интересном компоненте, который незаменим при сложных вычислениях. Это MathParse. Он - 4-ый на вкладке "Логика".
В этот компонент можно писать целые формулы, а аргументы для них передавать через верхние точки. По умолчанию точек всего две, но их число задаётся в параметре DataCount. Всего можно задать до 100 точек. А формула задаётся в параметре MathStr. Она задаётся обычным способом - с помощью знаков, скобок и функций типа sin, cos и т. д. Чтобы использовать операнд (т.е. данные с верхних точек), нужно в этом параметре употребить служебный символ % и номер точки данных, например %1.
Рассмотрите внимательно параметр MathStr и поймите формулу. А затем запустите программу и рассчитайте что-нибудь. Помните только, что при расчёте косинуса аргумент берётся в градусах. А чтобы брался в радианах, надо изменить параметр AngleMode компонента MathParse.
В видеоуроке схемы попроще, зато без опечаток... ;0)
ОтветитьУдалитьесть ли возможность В поле ввода при введении запятой в числах, заменой на точку,что бы правильно подсчитывал калькулятор?
ОтветитьУдалитьЕсли DataType поля ввода выставить в FloatNumber, то как раз можно будет вводить только цифры, точку и +/-.
ОтветитьУдалитьБез замены DataType можно сделать так
Скажите как можно регулировать количество знаков после точки в дробных числах(результат)
УдалитьПростенькое выражение в MathParse: round(3/55*10000)/10000. 10000 означает, что округлять нужно до 4- знаков после запятой, 1000 - до 3-х, 100 - до 2-х и т. д.
УдалитьПодскажите куда именно мне поместить выражение round(3/55*10000)/10000 если у меня в MathParse уже используеться формула %1*(10/100))+%1 ? и мне нужно что б результат округлялся до 2-х знаков после запятой.
Удалить(%1*(10/100))+%1) нужно подставить вместо 3/55, причём (%1*(10/100))+%1) - обязательно в скобках.
УдалитьОгромное спасибо!))) Подставила - все получилось. (ответ на Админ 26 июня 2013 г., 23:36)
УдалитьСпасибо,в принципе сделал уже, как Вы и говорили по другому
ОтветитьУдалитьAdd(MathParse,9049156,364,455)
{
MathStr="%1+%2"
AngleMode=1
link(onResult,15023078:doText,[])
link(X1,4215504:Text,[(370,289)(160,289)])
link(X2,12695416:Text,[(377,411)(482,411)])
}
Add(Edit,4215504,154,238)
{
Left=5
Top=5
Text=""
}
Add(Edit,12695416,476,336)
{
Left=60
Top=5
Text=""
link(onChange,13299852:doReplace,[(520,342)(520,346)(394,346)(394,349)])
}
Add(Button,5818760,189,455)
{
Left=5
Top=30
Caption="Считать!"
link(onClick,9049156:doCalc,[])
}
Add(Label,15023078,469,455)
{
Left=65
Top=35
}
Add(MainForm,2953706,70,259)
{
Width=657
Height=412
}
Add(Replace,13299852,406,343)
{
SubStr=","
DestStr="."
link(onReplace,12695416:doText2,[])
}
С заменой запятой на точку, куда практичнее, спасибо.Просто зачастую по инерции набирается в поле запятая вместо точки, а теперь это не отвлекает. Спасибо.
ОтветитьУдалитьА, не подскажите-ли, как использовать при вводе в калькулятор значений имеющийся список (например в файле-блокноте), т.е. не ручками вводить значения а выбирать из уже имеющегося списка.
ОтветитьУдалитьНу, есть же компонент ComboBox, его значения можно сохранять в файле и загружать. И конечно, использовать в программе.
УдалитьЧто-то Касперский сильно ругается на Ваши файлы с примерами (как то гестапо из анекдота)...
ОтветитьУдалитьПросто воткните между какой-нибудь связью компонент DoData, например. Главное, чтобы для логики программы он ничего не значил (не менял), а вот на антивирус часто влияет. Или можно поменять где-то связи, компоненты. А вообще, последовательным удалением частей схемы выясните, на какой участок ругается, и с ним работайте.
УдалитьЯ новичок. Подскажите - какую стабильную версию сейчас можно установить. При попытке качать с сайта www.hiasm.com получаю:
ОтветитьУдалитьСайт содержит нежелательное ПО!!!
То же самое на hiasm.net
Где реальный домен???
Я бы эти сообщения выдавал при посещении сайтов браузеров, которые выдают такое на сайт hiasm >:(
Удалитьhiasm.com и hiasm.net - это реальные домены, а на глупое сообщение не стоит обращать внимание.
Скачивать рекомендую AltBuild (http://forum.hiasm.net/forum.html?q=3&p=210696#p210696).